天天看点

Drupal 自定义模块条码生成

需要生成一个规则条码,自定义了下面功能:

<?php

/**
 * @file
 * Defines "通过已上传的样板资料生成对应的条码" 
 *
 * @TODO: Split admin functions into their own file.
 */
 /**
* Implements hook_menu(). 执行Hook来注册一个URL
*/	
function sample_barcode_menu(){
	$items=array();
	$items['samplebarcode']=array(
		'title'=>'Sample Barcode',		
		'page callback'=>'sample_intro',
		'access callback'=>TRUE,		
	);
	$items['samplebarcode/createrbarcode']=array(
		'title'=>'Barcode Creater',
		'description'=>'生成样板衣的条码',
		'page callback'=>'drupal_get_form',
		'page arguments'=>array('sample_barcode_creater'),
		//页面回调的function
		'access arguments'=>array('Sample Barcode Creater'),
		//页面调用的用户权限
		'access callback'=>TRUE,
		//'weight'=>'5',
	
	);
	
	return $items;	
}
/**
 * @file
 * 定义一个样板单的权限
 */
 function sample_barcode_permission(){
	 return array(
		'Sample Barcode Creater'=>array(
			'title'=>t('样板单条码生成器'),
			),
		);
 }
 /**
 * @file
 * 定义样板单的说明
 */
 function sample_intro(){
	$markup = t('样板单操作说明');
	return array('#markup' => $markup);
 }
/**
 * @file
 * 定义生成按钮的表单
 */
function sample_barcode_creater($form, &$form_state){
	 
	$form=array();
	
	$form['sample']= array(
		'#type' => 'submit',
		'#value' => t('Creater Barcode'),
		//'#submit' =>array('costsheet_puma_ajax'),
		'#ajax'=>array(
			'callback'=>'sample_barcode_ajax',
			'wrapper'=>'showexcel-wrapper',			
			),
		);
	$form['showexcel']=array(
		'#type'=>'fieldset',
		'#title'=>t('Sample Show'),
		'#prefix'=>'<div id="showexcel-wrapper">',
		'#suffix'=>'</div>',
		'#markup' =>'',
		);	
	
  return $form;
}
 /**
 * @
 * 定义ajax回调PUMA的格式转换
 */
 function sample_barcode_ajax($form,&$form_state){
	$views=views_get_view("sample_table");
	//$views->set_display("nobarcode");
	$views->preview("block_1");
	$results=$views->result;
	//dpm($results);
	$showbar=array();
	foreach($results as $key){
		//dpm($key);		
		if($key->field_field_qty[0]['raw']['value'])
		{	$node=node_load($key->nid);
			for($i=0;$i<(int)$key->field_field_qty[0]['raw']['value'];$i++){				
				$newbar="B".sprintf("%08d",(int)$key->nid).sprintf("%03d",$i+1);				
				$showbar[$key->nid][]=$newbar;
				$node->field_samplegroup['und'][$i]['value']=$newbar;
				
			}
			//dpm($showbar);
			node_save($node);		
		}
		else
		{
			Drupal_set_message("样板数量有误,请确认后再操作!");
		}
	}
	
	$form['showexcel']['#description']='Set Done';
	return $form['showexcel'];	
	
 }

  /**
 * @
 * 定义Form的提交
 */