Esempio n. 1
0
 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);
 }
Esempio n. 2
0
    /**
     * 上传网络图片地址-本类私有方法
     * @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 . "";
        }
    }
Esempio n. 3
0
 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');
     }
 }
Esempio n. 4
0
 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');
 }
Esempio n. 5
0
 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');
     }
 }