finder = $finder;
$this->finder_aliasname = $finder_aliasname;
}
/**
* 设置Finder
* @param mixed $finder finder
* @return mixed 返回操作结果
*/
public function setFinder($finder) {
$this->finder = $finder;
}
function main($object_name,$app,$filter=null,$controller=null,$cusrender=null){
if(strpos($_GET['object'],'@')!==false){
$tmp = explode('@',$object_name);
$app = app::get($tmp[1]);
$object_name = $tmp[0];
}
$object = $app->model($object_name);
$ui = new base_component_ui($this->controller,$app);
require(APP_DIR.'/base/datatypes.php');
$this->dbschema = $object->get_schema();
$finder_id = $_GET['_finder']['finder_id'];
foreach(kernel::servicelist('extend_filter_'.get_class($object)) as $extend_filter){
$colums = $extend_filter->get_extend_colums($this->finder_aliasname);
if($colums[$object_name]){
$this->dbschema['columns'] = array_merge((array)$this->dbschema['columns'],(array)$colums[$object_name]['columns']);
}
}
foreach($this->dbschema['columns'] as $c=>$v){
if(!$v['filtertype']) continue;
if( isset($filter[$c]) ) {
continue;
}
if(!is_array($v['type']))
if(strpos($v['type'],'decimal')!==false&&$v['filtertype']=='number'){
$v['type'] = 'number';
}
$columns[$c] = $v;
if(!is_array($v['type']) && $v['type']!='bool' && isset($datatypes[$v['type']]) && isset($datatypes[$v['type']]['searchparams'])){
$addon='';
}elseif($v['type'] == 'skunum'){
$addon='';
}else{
if($v['type']!='bool')
$addon = app::get('desktop')->_('是');
else $addon = '';
}
$columns[$c]['addon'] = $addon;
if($v['type']=='last_modify'){
$v['type'] = 'time';
}
$params = array(
'type'=>$v['type'],
'name'=>$c,
);
if($v['type']=='bool'&&$v['default']){
$params = array_merge(array('value'=>$v['default']),$params);
}
if($this->name_prefix){
$params['name'] = $this->name_prefix.'['.$params['name'].']';
}
if($v['type']=='region'){
$params['app'] = 'eccommon';
}
$inputer = $ui->input($params);
$columns[$c]['inputer'] = $inputer;
}
if($cusrender){
return array('filter_cols'=>$columns,'filter_datatypes'=>$datatypes);
}
$render = new base_render(app::get('desktop'));
if($object->has_tag){
$render->pagedata['app_id'] = $app->app_id;
$render->pagedata['tag_type'] = $object_name;
$tag_inputer = $render->fetch('finder/tag_inputer.html');
$columns['tag'] = array('filtertype'=>true,'filterdefault'=>true,'label'=>app::get('desktop')->_('标签'),'inputer'=>$tag_inputer);
}
if(is_null($this->finder)) {
$render->pagedata['panel_id'] = '_c';
} else {
$render->pagedata['panel_id'] = $this->finder->getId();
}
$render->pagedata['columns'] = $columns;
$render->pagedata['datatypes'] = $datatypes;
$render->pagedata['finder_id'] = $finder_id;
return $render->display($this->finder->getFile(), $app->app_id, true);
}
}