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 = '<select search="1" name="_' . $c . '_search" class="x-input-select inputstyle">'; foreach ($datatypes[$v['type']]['searchparams'] as $n => $t) { $addon .= "<option value='{$n}'>{$t}</option>"; } $addon .= '</select>'; } elseif ($v['type'] == 'skunum') { $addon = '<select search="1" name="_' . $c . '_search" class="x-input-select inputstyle">'; $__select = array('nequal' => app::get('base')->_('='), 'than' => app::get('base')->_('>'), 'lthan' => app::get('base')->_('<')); foreach ($__select as $n => $t) { $addon .= "<option value='{$n}'>{$t}</option>"; } $addon .= '</select>'; } 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'] = 'ectools'; } $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); }
/** * 上传网络图片地址-本类私有方法 * @param null * @return string html内容 */ function image_www_uploader() { if ($_POST['upload_item']) { $image = $this->app->model('image'); $image_name = substr(strrchr($_POST['upload_item'], '/'), 1); $image_id = $image->store($_POST['upload_item'], null, null, $image_name); $image_src = base_storager::image_path($image_id); $this->_set_tag($image_id); if ($callback = $_REQUEST['callbackfunc']) { $_return = "<script>try{parent.{$callback}('{$image_id}','{$image_src}')}catch(e){}</script>"; } $_return .= "<script>parent.MessageBox.success('" . app::get('image')->_('图片上传成功') . "');</script>"; echo $_return; echo <<<EOF <div id="upload_remote_image"></div> <script> try{ if(\$('upload_remote_image').getParent('.dialog')) \$('upload_remote_image').getParent('.dialog').retrieve('instance').close(); }catch(e){} </script> EOF; } else { $html = '<div class="division"><h5>' . app::get('image')->_('网络图片地址:') . '</h5>'; $ui = new base_component_ui($this); $html .= $ui->form_start(array('method' => 'post')); $html .= $ui->input(array('type' => 'url', 'name' => 'upload_item', 'value' => 'http://', 'style' => 'width:70%')); $html .= '</div>'; $html .= $ui->form_end(); echo $html . ""; } }
function input_object($params) { $params['breakpoint'] = $params['breakpoint'] ? $params['breakpoint'] : 20; $object = $params['object']; if (strpos($params['object'], '@') !== false) { list($object, $app_id) = explode('@', $params['object']); } elseif ($params['app']) { $app_id = $params['app']; } else { $app_id = $this->app->app_id; } $app = app::get($app_id); $o = $app->model($object); $render = new base_render(app::get('desktop')); $ui = new base_component_ui($app); $dbschema = $o->get_schema(); $params['app_id'] = $app_id; if (isset($params['filter'])) { if (!is_array($params['filter'])) { parse_str($params['filter'], $params['filter']); } } $params['domid'] = substr(md5(uniqid()), 0, 6); $key = $params['key'] ? $params['key'] : $dbschema['idColumn']; $textcol = $params['textcol'] ? $params['textcol'] : $dbschema['textColumn']; $tmp_filter = $params['filter'] ? $params['filter'] : null; $count = $o->count($tmp_filter); if ($count <= $params['breakpoint'] && !$params['multiple'] && $params['select'] != 'checkbox') { if (strpos($textcol, '@') === false) { $list = $o->getList($key . ',' . $textcol, $tmp_filter); foreach ($list as $row) { $type[$row[$key]] = $row[$textcol]; } } else { list($name, $table, $app_id) = explode('@', $textcol); $app = $app_id ? app::get($app_id) : $app; $mdl = $app->model($table); $list = $o->getList($key, $tmp_filter); foreach ($list as $row) { $tmp_row = $mdl->getList($name, array($mdl->idColumn => $row[$key]), 0, 1); $type[$row[$key]] = $tmp_row[0][$name]; } } $tmp_params['name'] = $params['name']; $tmp_params['type'] = $type; $str_filter = $ui->input($tmp_params); unset($tmp_params); return $str_filter; } $params['idcol'] = $keycol['keycol'] = $key; $params['textcol'] = $textcol; if ($params['value']) { if (strpos($params['view'], ':') !== false) { list($view_app, $view) = explode(':', $params['view']); $params['view_app'] = $view_app; $params['view'] = $view; } if (is_string($params['value'])) { $params['value'] = explode(',', $params['value']); } $params['items'] =& $o->getList('*', array($key => $params['value']), 0, -1); } if (isset($params['multiple']) && $params['multiple']) { $render->pagedata['_input'] = $params; return $render->fetch('finder/input.html'); } else { if ($params['value']) { $string = $params['items'][0][$textcol]; } else { $string = $params['emptytext'] ? $params['emptytext'] : '请选择...'; } unset($params['app']); if ($params['data']) { $_params = (array) $params['data']; unset($params['data']); $params = array_merge($params, $_params); } if ($params['select'] == 'checkbox') { $params['type'] = 'checkbox'; } else { $id = "handle_" . $params['domid']; $params['type'] = 'radio'; $getdata = '&singleselect=radio'; } if (is_array($params['items'])) { foreach ($params['items'] as $key => $item) { $items[$key] = $item[$params['idcol']]; } } $vars = $params; $vars['items'] = $items; $object = http_build_query($vars); $url = 'index.php?app=desktop&act=alertpages&goto=' . urlencode('index.php?app=desktop&ctl=editor&act=finder_common&app_id=' . $app_id . '&' . $object . $getdata); $render->pagedata['string'] = $string; $render->pagedata['url'] = $url; $render->pagedata['id'] = $id; $render->pagedata['params'] = $params; $render->pagedata['object'] = $object; return $render->fetch('finder/input_radio.html'); } }
function input_goods_select($params) { $return_url = $params['return_url'] ? $params['return_url'] : 'index.php?app=desktop&ctl=editor&act=object_rows'; $callback = $params['callback'] ? $params['callback'] : ''; $init = $params['data']['init'] ? $params['data']['init'] : ''; $params['breakpoint'] = isset($params['breakpoint']) ? $params['breakpoint'] : 20; $object = $params['object']; if (strpos($params['object'], '@') !== false) { list($object, $app_id) = explode('@', $params['object']); $params['object'] = $object; } elseif ($params['app']) { $app_id = $params['app']; } else { $app_id = $this->app->app_id; } $app = app::get($app_id); $o = $app->model($object); $render = new base_render(app::get('b2c')); $ui = new base_component_ui($app); $dbschema = $o->get_schema(); $params['app_id'] = $app_id; if (isset($params['filter'])) { if (!is_array($params['filter'])) { parse_str($params['filter'], $params['filter']); } } $params['domid'] = substr(md5(uniqid()), 0, 6); $key = $params['key'] ? $params['key'] : $dbschema['idColumn']; $textcol = $params['textcol'] ? $params['textcol'] : $dbschema['textColumn']; //显示列 可以多列显示 不完全修改 。。。。。。。 $textcol = explode(',', $textcol); $_textcol = $textcol; $textcol = $textcol[0]; $tmp_filter = $params['filter'] ? $params['filter'] : null; $count = $o->count($tmp_filter); if ($count <= $params['breakpoint'] && !$params['multiple'] && $params['select'] != 'checkbox') { if (strpos($textcol, '@') === false) { $list = $o->getList($key . ',' . $textcol, $tmp_filter); if (!$list[0]) { $type = array(); } foreach ($list as $row) { $label = $row[$textcol]; if (!$label && method_exists($o, 'title_modifier')) { $label = $o->title_modifier($row[$key]); } $type[$row[$key]] = $label; } } else { list($name, $table, $app_id) = explode('@', $textcol); $app = $app_id ? app::get($app_id) : $app; $mdl = $app->model($table); $list = $o->getList($key, $tmp_filter); foreach ($list as $row) { $tmp_row = $mdl->getList($name, array($mdl->idColumn => $row[$key]), 0, 1); $label = $tmp_row[0][$name]; if (!$label && method_exists($o, 'title_modifier')) { $label = $o->title_modifier($row[$key]); } $type[$row[$key]] = $label; } } $tmp_params['name'] = $params['name']; $tmp_params['value'] = $params['value']; $tmp_params['type'] = $type; if ($callback) { $tmp_params['onchange'] = $callback . '(this)'; } $str_filter = $ui->input($tmp_params); unset($tmp_params); return $str_filter; } $params['idcol'] = $keycol['keycol'] = $key; $params['textcol'] = implode(',', $_textcol); $params['_textcol'] = $_textcol; unset($params['app']); if ($params['data']) { $_params = (array) $params['data']; unset($params['data']); $params = array_merge($params, $_params); } if (is_array($params['items'])) { foreach ($params['items'] as $key => $item) { $items[$key] = $item[$params['idcol']]; } } $params['return_url'] = urlencode($params['return_url']); $vars = $params; $vars['items'] = $items; $object = utils::http_build_query($vars); $url = 'index.php?app=b2c&ctl=admin_goods&act=finder_goods_select'; $render->pagedata['string'] = $string; $render->pagedata['url'] = $url; $render->pagedata['return_url'] = $return_url; $render->pagedata['id'] = $id; $render->pagedata['params'] = $params; $render->pagedata['object'] = $object; $render->pagedata['callback'] = $callback; $render->pagedata['init'] = $init; $render->pagedata['value'] = $params['value']; /** 得到商品的数量 **/ if ($params['value']) { $arr_values = json_decode($params['value']); $render->pagedata['goods_cnt'] = count($arr_values); } return $render->fetch('admin/goods/input_radio.html'); }
function input_object($params) { $return_url = $params['return_url'] ? $params['return_url'] : 'index.php?app=desktop&ctl=editor&act=object_rows'; $callback = $params['callback'] ? $params['callback'] : ''; $init = $params['data']['init'] ? $params['data']['init'] : ''; $params['breakpoint'] = isset($params['breakpoint']) ? $params['breakpoint'] : 20; $extend = $params['extend'] ? $params['extend'] : ''; $object = $params['object']; if (strpos($params['object'], '@') !== false) { list($object, $app_id) = explode('@', $params['object']); $params['object'] = $object; } elseif ($params['app']) { $app_id = $params['app']; } else { $app_id = $this->app->app_id; } $app = app::get($app_id); $o = $app->model($object); $render = new base_render(app::get('desktop')); $ui = new base_component_ui($app); $dbschema = $o->get_schema(); $params['app_id'] = $app_id; if (isset($params['filter'])) { if (!is_array($params['filter'])) { parse_str($params['filter'], $params['filter']); } } $params['domid'] = substr(md5(uniqid()), 0, 6); $key = $params['key'] ? $params['key'] : $dbschema['idColumn']; $textcol = $params['textcol'] ? $params['textcol'] : $dbschema['textColumn']; //显示列 可以多列显示 不完全修改 。。。。。。。 $textcol = explode(',', $textcol); $_textcol = $textcol; $textcol = $textcol[0]; $tmp_filter = $params['filter'] ? $params['filter'] : null; $count = $o->count($tmp_filter); if ($count <= $params['breakpoint'] && !$params['multiple'] && $params['select'] != 'checkbox') { if (strpos($textcol, '@') === false) { $list = $o->getList($key . ',' . $textcol, $tmp_filter); if (!$list[0]) { $type = array(); } foreach ($list as $row) { $label = $row[$textcol]; if (!$label && method_exists($o, 'title_modifier')) { $label = $o->title_modifier($row[$key]); } $type[$row[$key]] = $label; } } else { list($name, $table, $app_id) = explode('@', $textcol); $app = $app_id ? app::get($app_id) : $app; $mdl = $app->model($table); $list = $o->getList($key, $tmp_filter); foreach ($list as $row) { $tmp_row = $mdl->getList($name, array($mdl->idColumn => $row[$key]), 0, 1); $label = $tmp_row[0][$name]; if (!$label && method_exists($o, 'title_modifier')) { $label = $o->title_modifier($row[$key]); } $type[$row[$key]] = $label; } } $tmp_params['name'] = $params['name']; $tmp_params['value'] = $params['value']; $tmp_params['type'] = $type; if ($callback) { $tmp_params['onchange'] = $callback . '(this)'; } $str_filter = $ui->input($tmp_params); unset($tmp_params); return $str_filter; } $params['idcol'] = $keycol['keycol'] = $key; $params['textcol'] = implode(',', $_textcol); $params['_textcol'] = $_textcol; if ($params['value']) { if (strpos($params['view'], ':') !== false) { list($view_app, $view) = explode(':', $params['view']); $params['view_app'] = $view_app; $params['view'] = $view; } if (is_string($params['value'])) { $params['value'] = explode(',', $params['value']); } $params['items'] =& $o->getList('*', array($key => $params['value']), 0, -1); //过滤不存在的值 //某些数据被添加后 可能原表数据已删除,但此处value中还存在。 $_params_items_row_key = array(); foreach ($params['items'] as $k => $_params_items_row) { $_params_items_row_key[] = $_params_items_row[$key]; if ($extend) { $params['items'][$k]['extend'] = $extend[$_params_items_row[$key]]; } } $params['value'] = implode(',', $_params_items_row_key); } if (isset($params['multiple']) && $params['multiple']) { if (isset($params['items']) && count($params['items'])) { $params['display_datarow'] = 'true'; } $render->pagedata['_input'] = $params; return $render->fetch('finder/input.html'); } else { if ($params['value'] && $params['select'] != 'checkbox') { $string = $params['items'][0][$textcol]; } else { $string = $params['emptytext'] ? $params['emptytext'] : app::get('desktop')->_('请选择...'); } $str_app = $params['app']; unset($params['app']); if ($params['data']) { $_params = (array) $params['data']; unset($params['data']); $params = array_merge($params, $_params); } if ($params['select'] == 'checkbox') { if ($params['default_id']) { $params['domid'] = $params['default_id']; } $params['type'] = 'checkbox'; } else { $id = "handle_" . $params['domid']; $params['type'] = 'radio'; $getdata = '&singleselect=radio'; } if (is_array($params['items'])) { foreach ($params['items'] as $key => $item) { $items[$key] = $item[$params['idcol']]; $params['items'][$key]['extend'] = $params['extend'][$key]; } } $params['return_url'] = urlencode($return_url); $vars = $params; $vars['items'] = $items; $getobject = array('obj_filter' => $vars['obj_filter'], 'filter' => $vars['filter'], 'name' => $vars['name'], 'object' => $vars['object']); $getobject = utils::http_build_query($getobject); $object = utils::http_build_query($vars); //$url = 'index.php?app=desktop&act=alertpages&goto='.urlencode('index.php?app=desktop&ctl=editor&act=finder_common&app_id='.$app_id.'&'.$object.$getdata); $url = 'index.php?app=desktop&act=alertpages&goto=' . urlencode('index.php?app=desktop&ctl=editor&act=finder_common&app_id=' . $app_id . '&' . $getobject . $getdata); $render->pagedata['string'] = $string; $render->pagedata['url'] = $url; $render->pagedata['app'] = 'app=' . $str_app; $render->pagedata['return_url'] = $return_url; $render->pagedata['id'] = $id; $render->pagedata['params'] = $params; $render->pagedata['object'] = $object; $render->pagedata['callback'] = $callback; $render->pagedata['init'] = $init; return $render->fetch('finder/input_radio.html'); } }