From 6acc5d8dac9c8143e2ef4d4614dd6ae2cc5c0f9e Mon Sep 17 00:00:00 2001 From: abovesky Date: Thu, 9 Aug 2018 17:29:37 +0800 Subject: [PATCH 1/2] init code --- application/admin/controller/cms/Ajax.php | 59 +++ application/admin/controller/cms/Archives.php | 360 +++++++++++++++ application/admin/controller/cms/Block.php | 55 +++ application/admin/controller/cms/Channel.php | 174 ++++++++ application/admin/controller/cms/Comment.php | 67 +++ application/admin/controller/cms/Fields.php | 90 ++++ application/admin/controller/cms/Modelx.php | 26 ++ application/admin/controller/cms/Page.php | 56 +++ application/admin/controller/cms/Tags.php | 46 ++ application/admin/lang/zh-cn/cms/archives.php | 41 ++ application/admin/lang/zh-cn/cms/block.php | 13 + application/admin/lang/zh-cn/cms/channel.php | 29 ++ application/admin/lang/zh-cn/cms/comment.php | 19 + application/admin/lang/zh-cn/cms/fields.php | 43 ++ application/admin/lang/zh-cn/cms/modelx.php | 15 + application/admin/lang/zh-cn/cms/page.php | 22 + application/admin/lang/zh-cn/cms/tags.php | 7 + application/admin/model/Archives.php | 138 ++++++ application/admin/model/Block.php | 34 ++ application/admin/model/Channel.php | 97 +++++ application/admin/model/Comment.php | 58 +++ application/admin/model/Fields.php | 134 ++++++ application/admin/model/Modelx.php | 36 ++ application/admin/model/Page.php | 61 +++ application/admin/model/Tags.php | 27 ++ application/admin/validate/Archives.php | 27 ++ application/admin/validate/Block.php | 27 ++ application/admin/validate/Channel.php | 27 ++ application/admin/validate/Comment.php | 27 ++ application/admin/validate/Fields.php | 49 +++ application/admin/validate/Modelx.php | 27 ++ application/admin/validate/Page.php | 27 ++ application/admin/validate/Tags.php | 27 ++ application/admin/view/cms/archives/add.html | 192 ++++++++ .../admin/view/cms/archives/content.html | 21 + application/admin/view/cms/archives/edit.html | 201 +++++++++ .../admin/view/cms/archives/fields.html | 96 ++++ .../admin/view/cms/archives/index.html | 91 ++++ .../admin/view/cms/archives/recyclebin.html | 23 + application/admin/view/cms/block/add.html | 66 +++ application/admin/view/cms/block/edit.html | 66 +++ application/admin/view/cms/block/index.html | 28 ++ application/admin/view/cms/channel/add.html | 130 ++++++ application/admin/view/cms/channel/edit.html | 136 ++++++ application/admin/view/cms/channel/index.html | 28 ++ application/admin/view/cms/comment/add.html | 82 ++++ application/admin/view/cms/comment/edit.html | 82 ++++ application/admin/view/cms/comment/index.html | 32 ++ application/admin/view/cms/fields/add.html | 122 ++++++ application/admin/view/cms/fields/edit.html | 121 ++++++ application/admin/view/cms/fields/index.html | 28 ++ application/admin/view/cms/modelx/add.html | 40 ++ application/admin/view/cms/modelx/edit.html | 40 ++ application/admin/view/cms/modelx/index.html | 24 + application/admin/view/cms/modelx/tpl.html | 66 +++ application/admin/view/cms/page/add.html | 96 ++++ application/admin/view/cms/page/edit.html | 107 +++++ application/admin/view/cms/page/index.html | 28 ++ application/admin/view/cms/tags/add.html | 28 ++ application/admin/view/cms/tags/edit.html | 28 ++ application/admin/view/cms/tags/index.html | 21 + application/extra/addons.php | 13 + public/assets/js/addons.js | 112 ++++- public/assets/js/backend/cms/archives.js | 411 ++++++++++++++++++ public/assets/js/backend/cms/block.js | 57 +++ public/assets/js/backend/cms/channel.js | 164 +++++++ public/assets/js/backend/cms/comment.js | 62 +++ public/assets/js/backend/cms/fields.js | 65 +++ public/assets/js/backend/cms/modelx.js | 103 +++++ public/assets/js/backend/cms/page.js | 61 +++ public/assets/js/backend/cms/tags.js | 54 +++ 71 files changed, 5069 insertions(+), 1 deletion(-) create mode 100644 application/admin/controller/cms/Ajax.php create mode 100644 application/admin/controller/cms/Archives.php create mode 100644 application/admin/controller/cms/Block.php create mode 100644 application/admin/controller/cms/Channel.php create mode 100644 application/admin/controller/cms/Comment.php create mode 100644 application/admin/controller/cms/Fields.php create mode 100644 application/admin/controller/cms/Modelx.php create mode 100644 application/admin/controller/cms/Page.php create mode 100644 application/admin/controller/cms/Tags.php create mode 100644 application/admin/lang/zh-cn/cms/archives.php create mode 100644 application/admin/lang/zh-cn/cms/block.php create mode 100644 application/admin/lang/zh-cn/cms/channel.php create mode 100644 application/admin/lang/zh-cn/cms/comment.php create mode 100644 application/admin/lang/zh-cn/cms/fields.php create mode 100644 application/admin/lang/zh-cn/cms/modelx.php create mode 100644 application/admin/lang/zh-cn/cms/page.php create mode 100644 application/admin/lang/zh-cn/cms/tags.php create mode 100644 application/admin/model/Archives.php create mode 100644 application/admin/model/Block.php create mode 100644 application/admin/model/Channel.php create mode 100644 application/admin/model/Comment.php create mode 100644 application/admin/model/Fields.php create mode 100644 application/admin/model/Modelx.php create mode 100644 application/admin/model/Page.php create mode 100644 application/admin/model/Tags.php create mode 100644 application/admin/validate/Archives.php create mode 100644 application/admin/validate/Block.php create mode 100644 application/admin/validate/Channel.php create mode 100644 application/admin/validate/Comment.php create mode 100644 application/admin/validate/Fields.php create mode 100644 application/admin/validate/Modelx.php create mode 100644 application/admin/validate/Page.php create mode 100644 application/admin/validate/Tags.php create mode 100644 application/admin/view/cms/archives/add.html create mode 100644 application/admin/view/cms/archives/content.html create mode 100644 application/admin/view/cms/archives/edit.html create mode 100644 application/admin/view/cms/archives/fields.html create mode 100644 application/admin/view/cms/archives/index.html create mode 100644 application/admin/view/cms/archives/recyclebin.html create mode 100644 application/admin/view/cms/block/add.html create mode 100644 application/admin/view/cms/block/edit.html create mode 100644 application/admin/view/cms/block/index.html create mode 100644 application/admin/view/cms/channel/add.html create mode 100644 application/admin/view/cms/channel/edit.html create mode 100644 application/admin/view/cms/channel/index.html create mode 100644 application/admin/view/cms/comment/add.html create mode 100644 application/admin/view/cms/comment/edit.html create mode 100644 application/admin/view/cms/comment/index.html create mode 100644 application/admin/view/cms/fields/add.html create mode 100644 application/admin/view/cms/fields/edit.html create mode 100644 application/admin/view/cms/fields/index.html create mode 100644 application/admin/view/cms/modelx/add.html create mode 100644 application/admin/view/cms/modelx/edit.html create mode 100644 application/admin/view/cms/modelx/index.html create mode 100644 application/admin/view/cms/modelx/tpl.html create mode 100644 application/admin/view/cms/page/add.html create mode 100644 application/admin/view/cms/page/edit.html create mode 100644 application/admin/view/cms/page/index.html create mode 100644 application/admin/view/cms/tags/add.html create mode 100644 application/admin/view/cms/tags/edit.html create mode 100644 application/admin/view/cms/tags/index.html create mode 100644 public/assets/js/backend/cms/archives.js create mode 100644 public/assets/js/backend/cms/block.js create mode 100644 public/assets/js/backend/cms/channel.js create mode 100644 public/assets/js/backend/cms/comment.js create mode 100644 public/assets/js/backend/cms/fields.js create mode 100644 public/assets/js/backend/cms/modelx.js create mode 100644 public/assets/js/backend/cms/page.js create mode 100644 public/assets/js/backend/cms/tags.js diff --git a/application/admin/controller/cms/Ajax.php b/application/admin/controller/cms/Ajax.php new file mode 100644 index 000000000..f937fa153 --- /dev/null +++ b/application/admin/controller/cms/Ajax.php @@ -0,0 +1,59 @@ +request->request("keyValue"); + if (!$keyValue) { + $name = $this->request->request("name"); + if ($name) { + $files[] = ['name' => $name . '.html']; + } + //设置过滤方法 + $this->request->filter(['strip_tags']); + $config = get_addon_config('cms'); + $themeDir = ADDON_PATH . 'cms' . DS . 'view' . DS . $config['theme'] . DS; + $dh = opendir($themeDir); + while (false !== ($filename = readdir($dh))) { + if ($filename == '.' || $filename == '..') + continue; + $files[] = ['name' => $filename]; + } + } else { + $files[] = ['name' => $keyValue]; + } + return $result = ['total' => count($files), 'list' => $files]; + } + +} diff --git a/application/admin/controller/cms/Archives.php b/application/admin/controller/cms/Archives.php new file mode 100644 index 000000000..7c27d9044 --- /dev/null +++ b/application/admin/controller/cms/Archives.php @@ -0,0 +1,360 @@ +model = model('Archives'); + + $channelList = []; + $disabledIds = []; + $all = collection(Channel::order("weigh desc,id desc")->select())->toArray(); + foreach ($all as $k => $v) { + $state = ['opened' => true]; + if ($v['type'] != 'list') { + $disabledIds[] = $v['id']; + } + if ($v['type'] == 'link') { + $state['checkbox_disabled'] = true; + } + $channelList[] = [ + 'id' => $v['id'], + 'parent' => $v['parent_id'] ? $v['parent_id'] : '#', + 'text' => __($v['name']), + 'type' => $v['type'], + 'state' => $state + ]; + } + $tree = Tree::instance()->init($all, 'parent_id'); + $channelOptions = $tree->getTree(0, "", '', $disabledIds); + $this->view->assign('channelOptions', $channelOptions); + $this->assignconfig('channelList', $channelList); + + $this->view->assign("flagList", $this->model->getFlagList()); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + /** + * 查看 + */ + public function index() + { + //设置过滤方法 + $this->request->filter(['strip_tags']); + if ($this->request->isAjax()) { + $this->relationSearch = TRUE; + //如果发送的来源是Selectpage,则转发到Selectpage + if ($this->request->request('keyField')) { + return $this->selectpage(); + } + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + $total = $this->model + ->with('Channel') + ->where($where) + ->order($sort, $order) + ->count(); + + $list = $this->model + ->with('Channel') + ->where($where) + ->order($sort, $order) + ->limit($offset, $limit) + ->select(); + + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + + $modelList = \app\admin\model\Modelx::all(); + $this->view->assign('modelList', $modelList); + return $this->view->fetch(); + } + + /** + * 副表内容 + */ + public function content($model_id = null) + { + $model = \app\admin\model\Modelx::get($model_id); + if (!$model) { + $this->error('未找到对应模型'); + } + $fieldsList = \app\admin\model\Fields::where('model_id', $model['id'])->where('type', '<>', 'text')->select(); + + //设置过滤方法 + $this->request->filter(['strip_tags']); + if ($this->request->isAjax()) { + //如果发送的来源是Selectpage,则转发到Selectpage + if ($this->request->request('keyField')) { + return $this->selectpage(); + } + $fields = []; + foreach ($fieldsList as $index => $item) { + $fields[] = "addon." . $item['name']; + } + $table = $this->model->getTable(); + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + $sort = 'main.id'; + $total = Db::table($table) + ->alias('main') + ->join('cms_channel channel', 'channel.id=main.channel_id', 'LEFT') + ->join($model['table'] . ' addon', 'addon.id=main.id', 'LEFT') + ->field('main.id,main.channel_id,main.title,channel.name as channel_name,addon.id as aid' . ($fields ? ',' . implode(',', $fields) : '')) + ->where($where) + ->order($sort, $order) + ->count(); + + $list = Db::table($table) + ->alias('main') + ->join('cms_channel channel', 'channel.id=main.channel_id', 'LEFT') + ->join($model['table'] . ' addon', 'addon.id=main.id', 'LEFT') + ->field('main.id,main.channel_id,main.title,channel.name as channel_name,addon.id as aid' . ($fields ? ',' . implode(',', $fields) : '')) + ->where($where) + ->order($sort, $order) + ->limit($offset, $limit) + ->select(); + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + $fields = []; + foreach ($fieldsList as $index => $item) { + $fields[] = ['field' => $item['name'], 'title' => $item['title'], 'type' => $item['type'], 'content' => $item['content_list']]; + } + $this->assignconfig('fields', $fields); + $this->view->assign('fieldsList', $fieldsList); + $this->view->assign('model', $model); + $this->assignconfig('model_id', $model_id); + return $this->view->fetch(); + } + + /** + * 编辑 + * + * @param mixed $ids + */ + public function edit($ids = NULL) + { + $row = $this->model->get($ids); + if (!$row) + $this->error(__('No Results were found')); + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds)) { + if (!in_array($row[$this->dataLimitField], $adminIds)) { + $this->error(__('You have no permission')); + } + } + if ($this->request->isPost()) { + return parent::edit($ids); + } + $channel = Channel::get($row['channel_id']); + if (!$channel) { + $this->error(__('No specified channel found')); + } + $model = \app\admin\model\Modelx::get($channel['model_id']); + if (!$model) { + $this->error(__('No specified model found')); + } + $addon = db($model['table'])->where('id', $row['id'])->find(); + if ($addon) { + $row = array_merge($row->toArray(), $addon); + } + + $all = collection(Channel::order("weigh desc,id desc")->select())->toArray(); + foreach ($all as $k => $v) { + if ($v['type'] != 'list' || $v['model_id'] != $channel['model_id']) { + $disabledIds[] = $v['id']; + } + } + $tree = Tree::instance()->init($all, 'parent_id'); + $channelOptions = $tree->getTree(0, "", $row['channel_id'], $disabledIds); + $this->view->assign('channelOptions', $channelOptions); + $this->view->assign("row", $row); + return $this->view->fetch(); + } + + /** + * 删除 + * @param mixed $ids + */ + public function del($ids = "") + { + \app\admin\model\Archives::event('after_delete', function ($row) { + Channel::where('id', $row['channel_id'])->where('items', '>', 0)->setDec('items'); + }); + return parent::del($ids); + } + + /** + * 还原 + * @param mixed $ids + */ + public function restore($ids = "") + { + $pk = $this->model->getPk(); + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds)) { + $this->model->where($this->dataLimitField, 'in', $adminIds); + } + if ($ids) { + $this->model->where($pk, 'in', $ids); + } + $archivesChannelIds = $this->model->onlyTrashed()->column('id,channel_id'); + $archivesChannelIds = array_filter($archivesChannelIds); + $this->model->where('id', 'in', array_keys($archivesChannelIds)); + $count = $this->model->restore('1=1'); + if ($count) { + $channelNums = array_count_values($archivesChannelIds); + foreach ($channelNums as $k => $v) { + Channel::where('id', $k)->setInc('items', $v); + } + $this->success(); + } + $this->error(__('No rows were updated')); + + } + + /** + * 移动 + */ + public function move($ids = "") + { + if ($ids) { + $channel_id = $this->request->post('channel_id'); + $pk = $this->model->getPk(); + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds)) { + $this->model->where($this->dataLimitField, 'in', $adminIds); + } + $this->model->where($pk, 'in', $ids); + $channel = Channel::get($channel_id); + if ($channel && $channel['type'] === 'list') { + $channelNums = \app\admin\model\Archives:: + with('channel') + ->where('archives.' . $pk, 'in', $ids) + ->where('channel_id', '<>', $channel['id']) + ->field('channel_id,COUNT(*) AS nums') + ->group('channel_id') + ->select(); + $result = $this->model + ->where('model_id', '=', $channel['model_id']) + ->where('channel_id', '<>', $channel['id']) + ->update(['channel_id' => $channel_id]); + if ($result) { + $count = 0; + foreach ($channelNums as $k => $v) { + if ($v['channel']) { + Channel::where('id', $v['channel_id'])->where('items', '>', 0)->setDec('items', min($v['channel']['items'], $v['nums'])); + } + $count += $v['nums']; + } + Channel::where('id', $channel_id)->setInc('items', $count); + $this->success(); + } else { + $this->error(__('No rows were updated')); + } + } else { + $this->error(__('No rows were updated')); + } + $this->error(__('Parameter %s can not be empty', 'ids')); + } + } + + /** + * 获取栏目列表 + * @internal + */ + public function get_channel_fields() + { + $this->view->engine->layout(false); + $channel_id = $this->request->post('channel_id'); + $archives_id = $this->request->post('archives_id'); + $channel = Channel::get($channel_id, 'model'); + if ($channel && $channel['type'] === 'list') { + + $values = []; + if ($archives_id) { + $values = db($channel['model']['table'])->where('id', $archives_id)->find(); + } + + $fields = \app\admin\model\Fields::where('model_id', $channel['model_id']) + ->order('weigh desc,id desc') + ->select(); + foreach ($fields as $k => $v) { + $v->value = isset($values[$v['name']]) ? $values[$v['name']] : ''; + $v->rule = str_replace(',', '; ', $v->rule); + if (in_array($v->type, ['checkbox', 'lists', 'images'])) { + $checked = ''; + if ($v['minimum'] && $v['maximum']) + $checked = "{$v['minimum']}~{$v['maximum']}"; + else if ($v['minimum']) + $checked = "{$v['minimum']}~"; + else if ($v['maximum']) + $checked = "~{$v['maximum']}"; + if ($checked) + $v->rule .= (';checked(' . $checked . ')'); + } + if (in_array($v->type, ['checkbox', 'radio']) && stripos($v->rule, 'required') !== false) { + $v->rule = str_replace('required', 'checked', $v->rule); + } + if (in_array($v->type, ['selects'])) { + $v->extend .= (' ' . 'data-max-options="' . $v['maximum'] . '"'); + } + } + + $this->view->assign('fields', $fields); + $this->view->assign('values', $values); + $this->success('', null, ['html' => $this->view->fetch('fields')]); + } else { + $this->error(__('Please select channel')); + } + $this->error(__('Parameter %s can not be empty', 'ids')); + } + + /** + * 检测元素是否可用 + * @internal + */ + public function check_element_available() + { + $id = $this->request->request('id'); + $name = $this->request->request('name'); + $value = $this->request->request('value'); + $name = substr($name, 4, -1); + if (!$name) { + $this->error(__('Parameter %s can not be empty', 'name')); + } + if ($id) { + $this->model->where('id', '<>', $id); + } + $exist = $this->model->where($name, $value)->find(); + if ($exist) { + $this->error(__('The data already exist')); + } else { + $this->success(); + } + } + +} diff --git a/application/admin/controller/cms/Block.php b/application/admin/controller/cms/Block.php new file mode 100644 index 000000000..800ac737f --- /dev/null +++ b/application/admin/controller/cms/Block.php @@ -0,0 +1,55 @@ +model = model('Block'); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + public function selectpage_type() + { + $list = []; + $word = (array)$this->request->request("q_word/a"); + $field = $this->request->request('showField'); + $keyValue = $this->request->request('keyValue'); + if (!$keyValue) { + if (array_filter($word)) { + foreach ($word as $k => $v) { + $list[] = ['id' => $v, $field => $v]; + } + } + $typeArr = \app\admin\model\Block::column('type'); + $typeArr = array_unique($typeArr); + foreach ($typeArr as $index => $item) { + $list[] = ['id' => $item, $field => $item]; + } + } else { + $list[] = ['id' => $keyValue, $field => $keyValue]; + } + return json(['total' => count($list), 'list' => $list]); + } + + public function import() + { + return parent::import(); + } + +} diff --git a/application/admin/controller/cms/Channel.php b/application/admin/controller/cms/Channel.php new file mode 100644 index 000000000..50c08e27b --- /dev/null +++ b/application/admin/controller/cms/Channel.php @@ -0,0 +1,174 @@ +request->filter(['strip_tags']); + $this->model = model('Channel'); + + $tree = Tree::instance(); + $tree->init(collection($this->model->order('weigh desc,id desc')->select())->toArray(), 'parent_id'); + $this->channelList = $tree->getTreeList($tree->getTreeArray(0), 'name'); + $this->modelList = \app\admin\model\Modelx::order('id asc')->select(); + + $this->view->assign("modelList", $this->modelList); + $this->view->assign("channelList", $this->channelList); + $this->view->assign("typeList", ChannelModel::getTypeList()); + $this->view->assign("statusList", ChannelModel::getStatusList()); + } + + /** + * 查看 + */ + public function index() + { + + if ($this->request->isAjax()) { + $search = $this->request->request("search"); + //构造父类select列表选项数据 + $list = []; + if ($search) { + foreach ($this->channelList as $k => $v) { + if (stripos($v['name'], $search) !== false || stripos($v['nickname'], $search) !== false) { + $list[] = $v; + } + } + } else { + $list = $this->channelList; + } + $modelNameArr = []; + foreach ($this->modelList as $k => $v) { + $modelNameArr[$v['id']] = $v['name']; + } + foreach ($list as $k => &$v) { + $v['model_name'] = $v['model_id'] && isset($modelNameArr[$v['model_id']]) ? $modelNameArr[$v['model_id']] : __('None'); + } + $total = count($list); + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + return $this->view->fetch(); + } + + /** + * 添加 + */ + public function add() + { + if ($this->request->isPost()) { + $params = $this->request->post("row/a"); + if ($params) { + if ($this->dataLimit && $this->dataLimitFieldAutoFill) { + $params[$this->dataLimitField] = $this->auth->id; + } + try { + //是否采用模型验证 + if ($this->modelValidate) { + $name = basename(str_replace('\\', '/', get_class($this->model))); + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : true) : $this->modelValidate; + $this->model->validate($validate); + } + $nameArr = array_filter(explode("\n", str_replace("\r\n", "\n", $params['name']))); + if (count($nameArr) > 1) { + foreach ($nameArr as $index => $item) { + $itemArr = array_filter(explode('|', $item)); + $params['name'] = $itemArr[0]; + $params['diyname'] = isset($itemArr[1]) ? $itemArr[1] : ''; + $result = $this->model->allowField(true)->isUpdate(false)->data($params)->save(); + } + } else { + $result = $this->model->allowField(true)->save($params); + } + if ($result !== false) { + $this->success(); + } else { + $this->error($this->model->getError()); + } + } catch (\think\exception\PDOException $e) { + $this->error($e->getMessage()); + } + } + $this->error(__('Parameter %s can not be empty', '')); + } + return $this->view->fetch(); + } + + /** + * Selectpage搜索 + * + * @internal + */ + public function selectpage() + { + return parent::selectpage(); + } + + /** + * 检测元素是否可用 + * @internal + */ + public function check_element_available() + { + $id = $this->request->request('id'); + $name = $this->request->request('name'); + $value = $this->request->request('value'); + $name = substr($name, 4, -1); + if (!$name) { + $this->error(__('Parameter %s can not be empty', 'name')); + } + if ($name == 'diyname') { + if ($id) { + $this->model->where('id', '<>', $id); + } + $exist = $this->model->where($name, $value)->find(); + if ($exist) { + $this->error(__('The data already exist')); + } else { + $this->success(); + } + } else if ($name == 'name') { + $nameArr = array_filter(explode("\n", str_replace("\r\n", "\n", $value))); + if (count($nameArr) > 1) { + foreach ($nameArr as $index => $item) { + $itemArr = array_filter(explode('|', $item)); + if (!isset($itemArr[1])) { + $this->error('格式:分类名称|自定义名称'); + } + $exist = \app\admin\model\Channel::getByDiyname($itemArr[1]); + if ($exist) { + $this->error('自定义名称[' . $itemArr[1] . ']已经存在'); + } + } + $this->success(); + } else { + $this->success(); + } + } + } + +} diff --git a/application/admin/controller/cms/Comment.php b/application/admin/controller/cms/Comment.php new file mode 100644 index 000000000..a8042439a --- /dev/null +++ b/application/admin/controller/cms/Comment.php @@ -0,0 +1,67 @@ +model = model('Comment'); + $this->view->assign("typeList", $this->model->getTypeList()); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + /** + * 查看 + */ + public function index() + { + $this->relationSearch = true; + //设置过滤方法 + $this->request->filter(['strip_tags']); + if ($this->request->isAjax()) + { + //如果发送的来源是Selectpage,则转发到Selectpage + if ($this->request->request('keyField')) + { + return $this->selectpage(); + } + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + $total = $this->model + ->with('archives') + ->where($where) + ->order($sort, $order) + ->count(); + + $list = $this->model + ->with('archives') + ->where($where) + ->order($sort, $order) + ->limit($offset, $limit) + ->select(); + + $list = collection($list)->toArray(); + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + return $this->view->fetch(); + } +} diff --git a/application/admin/controller/cms/Fields.php b/application/admin/controller/cms/Fields.php new file mode 100644 index 000000000..8b9126dd7 --- /dev/null +++ b/application/admin/controller/cms/Fields.php @@ -0,0 +1,90 @@ +model = model('Fields'); + $this->view->assign("statusList", $this->model->getStatusList()); + $this->view->assign('typeList', Config::getTypeList()); + $this->view->assign('regexList', Config::getRegexList()); + } + + /** + * 查看 + */ + public function index() + { + $model_id = $this->request->param('model_id'); + //设置过滤方法 + $this->request->filter(['strip_tags']); + if ($this->request->isAjax()) { + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + $total = $this->model + ->where('model_id', $model_id) + ->where($where) + ->order($sort, $order) + ->count(); + + $list = $this->model + ->where('model_id', $model_id) + ->where($where) + ->order($sort, $order) + ->limit($offset, $limit) + ->select(); + + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + $this->assignconfig('model_id', $model_id); + return $this->view->fetch(); + } + + /** + * 规则列表 + * @internal + */ + public function rulelist() + { + //主键 + $primarykey = $this->request->request("keyField"); + //主键值 + $primaryvalue = $this->request->request("keyValue"); + + $regexList = Config::getRegexList(); + $list = []; + foreach ($regexList as $k => $v) { + if ($primaryvalue !== null) { + if ($primaryvalue == $k) { + $list[] = ['id' => $k, 'name' => $v]; + } + } else { + $list[] = ['id' => $k, 'name' => $v]; + } + } + return json(['list' => $list]); + } + +} diff --git a/application/admin/controller/cms/Modelx.php b/application/admin/controller/cms/Modelx.php new file mode 100644 index 000000000..7005bdcd5 --- /dev/null +++ b/application/admin/controller/cms/Modelx.php @@ -0,0 +1,26 @@ +model = model('Modelx'); + } + +} diff --git a/application/admin/controller/cms/Page.php b/application/admin/controller/cms/Page.php new file mode 100644 index 000000000..8aef1b669 --- /dev/null +++ b/application/admin/controller/cms/Page.php @@ -0,0 +1,56 @@ +model = model('Page'); + $this->view->assign("flagList", $this->model->getFlagList()); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + /** + * 动态下拉选择类型 + * @internal + */ + public function selectpage_type() + { + $list = []; + $word = (array)$this->request->request("q_word/a"); + $field = $this->request->request('showField'); + $keyValue = $this->request->request('keyValue'); + if (!$keyValue) { + if (array_filter($word)) { + foreach ($word as $k => $v) { + $list[] = ['id' => $v, $field => $v]; + } + } + $typeArr = \app\admin\model\Page::column('type'); + $typeArr = array_unique($typeArr); + foreach ($typeArr as $index => $item) { + $list[] = ['id' => $item, $field => $item]; + } + } else { + $list[] = ['id' => $keyValue, $field => $keyValue]; + } + return json(['total' => count($list), 'list' => $list]); + } + +} diff --git a/application/admin/controller/cms/Tags.php b/application/admin/controller/cms/Tags.php new file mode 100644 index 000000000..07077ba30 --- /dev/null +++ b/application/admin/controller/cms/Tags.php @@ -0,0 +1,46 @@ +model = model('Tags'); + } + + /** + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个方法 + * 因此在当前控制器中可不用编写增删改查的代码,如果需要自己控制这部分逻辑 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 + */ + public function selectpage() + { + $response = parent::selectpage(); + $word = (array)$this->request->request("q_word/a"); + if (array_filter($word)) { + $result = $response->getData(); + foreach ($word as $k => $v) { + array_unshift($result['list'], ['id' => $v, 'name' => $v]); + $result['total']++; + } + $response->data($result); + } + return $response; + } + +} diff --git a/application/admin/lang/zh-cn/cms/archives.php b/application/admin/lang/zh-cn/cms/archives.php new file mode 100644 index 000000000..0662fad55 --- /dev/null +++ b/application/admin/lang/zh-cn/cms/archives.php @@ -0,0 +1,41 @@ + '栏目', + 'Channel_id' => '栏目ID', + 'Channel_name' => '栏目名称', + 'Channel list' => '栏目列表', + 'Addon list' => '副表列表', + 'Model' => '模型', + 'Model_id' => '模型ID', + 'Title' => '文章标题', + 'Flag' => '标志', + 'Image' => '缩略图', + 'Keywords' => '关键字', + 'Description' => '描述', + 'Tags' => 'TAG', + 'Weigh' => '权重', + 'Views' => '浏览', + 'Comments' => '评论', + 'Likes' => '点赞', + 'Dislikes' => '点踩', + 'Diyname' => '自定义URL', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Deletetime' => '删除时间', + 'Recycle bin' => '回收站', + 'Restore' => '还原', + 'Restore all' => '还原全部', + 'Destroy' => '销毁', + 'Destroy all' => '清空回收站', + 'Nothing need restore' => '没有需要还原的数据', + 'Move tips' => '只能将数据移动到相同模型的栏目下,不同模型的数据移动将被忽略', + 'Are you sure you want to truncate?' => '确认清空回收站?', + 'Can not be digital' => '不能为数字', + 'Please select channel' => '请选择分类', + 'The data already exist' => '已经存在', + 'Status' => '状态', + 'Array key' => '键', + 'Array value' => '值', + 'Publish' => '发布' +]; diff --git a/application/admin/lang/zh-cn/cms/block.php b/application/admin/lang/zh-cn/cms/block.php new file mode 100644 index 000000000..b97f34d61 --- /dev/null +++ b/application/admin/lang/zh-cn/cms/block.php @@ -0,0 +1,13 @@ + '类型', + 'Name' => '名称', + 'Title' => '标题', + 'Image' => '图片', + 'Url' => '链接', + 'Content' => '内容', + 'Createtime' => '添加时间', + 'Updatetime' => '更新时间', + 'Status' => '状态' +]; diff --git a/application/admin/lang/zh-cn/cms/channel.php b/application/admin/lang/zh-cn/cms/channel.php new file mode 100644 index 000000000..288f5d97a --- /dev/null +++ b/application/admin/lang/zh-cn/cms/channel.php @@ -0,0 +1,29 @@ + '类型', + 'Model_id' => '模型ID', + 'Model_name' => '模型名称', + 'Parent_id' => '父ID', + 'Parent_ids' => '父ID集合', + 'Child_ids' => '子ID集合', + 'Name' => '名称', + 'Image' => '图片', + 'Keywords' => '关键字', + 'Description' => '描述', + 'Diyname' => '自定义名称', + 'Outlink' => '外部链接', + 'Items' => '文章数量', + 'Weigh' => '权重', + 'Channeltpl' => '栏目页模板', + 'Listtpl' => '列表页模板', + 'Showtpl' => '详情页模板', + 'Pagesize' => '分页大小', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'The data already exist' => '已经存在', + 'Status' => '状态', + 'Channel' => '栏目', + 'List' => '列表', + 'Link' => '外部链接' +]; diff --git a/application/admin/lang/zh-cn/cms/comment.php b/application/admin/lang/zh-cn/cms/comment.php new file mode 100644 index 000000000..6b48b3929 --- /dev/null +++ b/application/admin/lang/zh-cn/cms/comment.php @@ -0,0 +1,19 @@ + 'ID', + 'Type' => '类型', + 'Archives' => '文档', + 'Page' => '单页', + 'Aid' => '关联ID', + 'Pid' => '父ID', + 'User_id' => '会员ID', + 'Content' => '内容', + 'Comments' => '评论数', + 'Ip' => 'IP', + 'Useragent' => 'User Agent', + 'Subscribe' => '订阅', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Status' => '状态' +]; diff --git a/application/admin/lang/zh-cn/cms/fields.php b/application/admin/lang/zh-cn/cms/fields.php new file mode 100644 index 000000000..8d8d562bf --- /dev/null +++ b/application/admin/lang/zh-cn/cms/fields.php @@ -0,0 +1,43 @@ + '模型ID', + 'Name' => '名称', + 'Type' => '类型', + 'Title' => '标题', + 'Content' => '条目列表', + 'Rule' => '验证规则', + 'Validate Msg' => '错误消息', + 'Validate Ok' => '成功消息', + 'Validate Tip' => '提示消息', + 'Extend' => '扩展信息', + 'Weigh' => '排序', + 'Setting' => '字段设置', + 'Length' => '字段长度', + 'Decimals' => '小数点长度', + 'Minimum' => '最少选择', + 'Maximum' => '最大选择', + 'Defaultvalue' => '默认值', + 'Isfilter' => '是否列表筛选', + 'String' => '字符', + 'Text' => '文本', + 'Editor' => '编辑器', + 'Number' => '数字', + 'Date' => '日期', + 'Time' => '时间', + 'Datetime' => '日期时间', + 'Image' => '图片', + 'Images' => '图片(多)', + 'File' => '文件', + 'Files' => '文件(多)', + 'Select' => '列表', + 'Selects' => '列表(多选)', + 'Checkbox' => '复选', + 'Radio' => '单选', + 'Array' => '数组', + 'Array key' => '键名', + 'Array value' => '键值', + 'Createtime' => '添加时间', + 'Updatetime' => '更新时间', + 'Status' => '状态' +]; diff --git a/application/admin/lang/zh-cn/cms/modelx.php b/application/admin/lang/zh-cn/cms/modelx.php new file mode 100644 index 000000000..0a4690273 --- /dev/null +++ b/application/admin/lang/zh-cn/cms/modelx.php @@ -0,0 +1,15 @@ + '模型名称', + 'Table' => '表名', + 'Fields' => '字段列表', + 'Channeltpl' => '栏目页模板', + 'Listtpl' => '列表页模板', + 'Showtpl' => '详情页模板', + 'Main list' => '主表列表', + 'Addon list' => '副表列表', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Setting' => '配置' +]; diff --git a/application/admin/lang/zh-cn/cms/page.php b/application/admin/lang/zh-cn/cms/page.php new file mode 100644 index 000000000..44154bb49 --- /dev/null +++ b/application/admin/lang/zh-cn/cms/page.php @@ -0,0 +1,22 @@ + 'ID', + 'Category_id' => '分类ID', + 'Type' => '类型', + 'Title' => '标题', + 'Keywords' => '关键字', + 'Description' => '描述', + 'Flag' => '标志', + 'Image' => '图片', + 'Content' => '内容', + 'Icon' => '图标', + 'Views' => '点击', + 'Comments' => '评论', + 'Diyname' => '自定义', + 'Showtpl' => '视图模板', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Weigh' => '权重', + 'Status' => '状态' +]; diff --git a/application/admin/lang/zh-cn/cms/tags.php b/application/admin/lang/zh-cn/cms/tags.php new file mode 100644 index 000000000..68e086b85 --- /dev/null +++ b/application/admin/lang/zh-cn/cms/tags.php @@ -0,0 +1,7 @@ + '标签名称', + 'Archives' => '文档ID集合', + 'Nums' => '文档数量' +]; diff --git a/application/admin/model/Archives.php b/application/admin/model/Archives.php new file mode 100644 index 000000000..9d86aa880 --- /dev/null +++ b/application/admin/model/Archives.php @@ -0,0 +1,138 @@ + $data['id'], ':diyname' => $diyname, ':channel' => $data['channel_id']]); + } + + protected static function init() + { + self::afterInsert(function ($row) { + $pk = $row->getPk(); + $channel = Channel::get($row['channel_id']); + $row->getQuery()->where($pk, $row[$pk])->update(['model_id' => $channel ? $channel['model_id'] : 0, 'weigh' => $row[$pk]]); + Channel::where('id', $row['channel_id'])->setInc('items'); + }); + self::beforeWrite(function ($row) { + //在更新之前对数组进行处理 + foreach ($row->getData() as $k => $value) { + if (is_array($value) && isset($value['field'])) { + $value = json_encode(Config::getArrayData($value), JSON_UNESCAPED_UNICODE); + } else { + $value = is_array($value) ? implode(',', $value) : $value; + } + $row->$k = $value; + } + }); + self::afterWrite(function ($row) { + if (isset($row['channel_id'])) { + //在更新成功后刷新副表、TAGS表数据、栏目表 + $channel = Channel::get($row->channel_id); + if ($channel) { + $model = Modelx::get($channel['model_id']); + if ($model && isset($row['content'])) { + $values = array_intersect_key($row->getData(), array_flip($model->fields)); + $values['id'] = $row['id']; + $values['content'] = $row['content']; + db($model['table'])->insert($values, TRUE); + } + } + } + if (isset($row['tags'])) { + $tags = array_filter(explode(',', $row['tags'])); + if ($tags) { + $tagslist = Tags::where('name', 'in', $tags)->select(); + foreach ($tagslist as $k => $v) { + $archives = explode(',', $v['archives']); + if (!in_array($row['id'], $archives)) { + $archives[] = $row['id']; + $v->archives = implode(',', $archives); + $v->nums++; + $v->save(); + } + $tags = array_diff($tags, [$v['name']]); + } + $list = []; + foreach ($tags as $k => $v) { + $list[] = ['name' => $v, 'archives' => $row['id'], 'nums' => 1]; + } + if ($list) { + model('Tags')->saveAll($list); + } + } + } + }); + } + + public function getFlagList() + { + return ['hot' => __('Hot'), 'new' => __('New'), 'recommend' => __('Recommend')]; + } + + public function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getFlagTextAttr($value, $data) + { + $value = $value ? $value : $data['flag']; + $valueArr = $value ? explode(',', $value) : []; + $list = $this->getFlagList(); + return implode(',', array_intersect_key($list, array_flip($valueArr))); + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function getPublishtimeTextAttr($value, $data) + { + $value = $value ? $value : $data['publishtime']; + return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; + } + + protected function setPublishtimeAttr($value) + { + return $value && !is_numeric($value) ? strtotime($value) : $value; + } + + public function channel() + { + return $this->belongsTo('Channel', 'channel_id', '', [], 'LEFT')->setEagerlyType(0); + } + +} diff --git a/application/admin/model/Block.php b/application/admin/model/Block.php new file mode 100644 index 000000000..77172df00 --- /dev/null +++ b/application/admin/model/Block.php @@ -0,0 +1,34 @@ + __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + +} diff --git a/application/admin/model/Channel.php b/application/admin/model/Channel.php new file mode 100644 index 000000000..96afae736 --- /dev/null +++ b/application/admin/model/Channel.php @@ -0,0 +1,97 @@ + $data['id'], ':diyname' => $diyname]); + } + + protected static function init() + { + self::afterInsert(function ($row) { + //创建时自动添加权重值 + $pk = $row->getPk(); + $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]); + }); + self::afterDelete(function ($row) { + //删除时,删除子节点,同时将所有相关文档移入回收站 + static $tree; + if (!$tree) { + $tree = \fast\Tree::instance(); + $tree->init(collection(Channel::order('weigh desc,id desc')->field('id,parent_id,name,type,diyname,status')->select())->toArray(), 'parent_id'); + } + $childIds = $tree->getChildrenIds($row['id']); + if ($childIds) { + Channel::destroy(function ($query) use ($childIds) { + $query->where('id', 'in', $childIds); + }); + } + $childIds[] = $row['id']; + db('cms_archives')->where('channel_id', 'in', $childIds)->update(['deletetime' => time()]); + }); + self::afterWrite(function ($row) { + $changed = $row->getChangedData(); + //隐藏时判断是否有子节点,有则隐藏 + if (isset($changed['status']) && $changed['status'] == 'hidden') { + static $tree; + if (!$tree) { + $tree = \fast\Tree::instance(); + $tree->init(collection(Channel::order('weigh desc,id desc')->field('id,parent_id,name,type,diyname,status')->select())->toArray(), 'parent_id'); + } + $childIds = $tree->getChildrenIds($row['id']); + db('cms_channel')->where('id', 'in', $childIds)->update(['status' => 'hidden']); + } + }); + } + + public static function getTypeList() + { + return ['channel' => __('Channel'), 'list' => __('List'), 'link' => __('Link')]; + } + + public static function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getTypeTextAttr($value, $data) + { + $value = $value ? $value : $data['type']; + $list = $this->getTypeList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function model() + { + return $this->belongsTo('Modelx', 'model_id')->setEagerlyType(0); + } + +} diff --git a/application/admin/model/Comment.php b/application/admin/model/Comment.php new file mode 100644 index 000000000..77ea8be3c --- /dev/null +++ b/application/admin/model/Comment.php @@ -0,0 +1,58 @@ + __('Archives'), 'page' => __('Page')]; + } + + public function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + + public function getTypeTextAttr($value, $data) + { + $value = $value ? $value : $data['type']; + $list = $this->getTypeList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + + public function archives() + { + return $this->belongsTo('Archives', 'aid', '', [], 'LEFT')->setEagerlyType(0); + } + +} diff --git a/application/admin/model/Fields.php b/application/admin/model/Fields.php new file mode 100644 index 000000000..a1738eb80 --- /dev/null +++ b/application/admin/model/Fields.php @@ -0,0 +1,134 @@ +error = $error; + } + + protected static function init() + { + $beforeUpdateCallback = function ($row) { + + }; + + $afterInsertCallback = function ($row) { + //为了避免引起更新的事件回调,这里采用直接执行SQL的写法 + $row->query($row->fetchSql(true)->update(['id' => $row['id'], 'weigh' => $row['id']])); + $model = Modelx::get($row['model_id']); + if ($model) { + $sql = Alter::instance() + ->setTable($model['table']) + ->setName($row['name']) + ->setLength($row['length']) + ->setContent($row['content']) + ->setDecimals($row['decimals']) + ->setDefaultvalue($row['defaultvalue']) + ->setComment($row['title']) + ->setType($row['type']) + ->getAddSql(); + try { + db()->query($sql); + $fields = Fields::where('model_id', $model['id'])->field('name')->column('name'); + $model->fields = implode(',', $fields); + $model->save(); + } catch (PDOException $e) { + $row->getQuery()->where('id', $row->id)->delete(); + throw new Exception($e->getMessage()); + } + } + }; + $afterUpdateCallback = function ($row) { + $model = Modelx::get($row['model_id']); + if ($model) { + $alter = Alter::instance(); + if (isset($row['oldname']) && $row['oldname'] != $row['name']) { + $alter->setOldname($row['oldname']); + } + $sql = $alter + ->setTable($model['table']) + ->setName($row['name']) + ->setLength($row['length']) + ->setContent($row['content']) + ->setDecimals($row['decimals']) + ->setDefaultvalue($row['defaultvalue']) + ->setComment($row['title']) + ->setType($row['type']) + ->getModifySql(); + db()->query($sql); + $fields = Fields::where('model_id', $model['id'])->field('name')->column('name'); + $model->fields = implode(',', $fields); + $model->save(); + } + }; + + self::beforeInsert($beforeUpdateCallback); + self::beforeUpdate($beforeUpdateCallback); + + self::afterInsert($afterInsertCallback); + self::afterUpdate($afterUpdateCallback); + + self::afterDelete(function ($row) { + $model = Modelx::get($row['model_id']); + if ($model) { + $sql = Alter::instance() + ->setTable($model['table']) + ->setName($row['name']) + ->getDropSql(); + try { + db()->query($sql); + } catch (PDOException $e) { + + } + } + }); + } + + public function getContentListAttr($value, $data) + { + return in_array($data['type'], self::$listField) ? Config::decode($data['content']) : $data['content']; + } + + public function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function model() + { + return $this->belongsTo('Modelx', 'model_id')->setEagerlyType(0); + } + +} diff --git a/application/admin/model/Modelx.php b/application/admin/model/Modelx.php new file mode 100644 index 000000000..6a4bb4583 --- /dev/null +++ b/application/admin/model/Modelx.php @@ -0,0 +1,36 @@ +query($sql); + }); + } + + public function getFieldsAttr($value, $data) + { + return is_array($value) ? $value : ($value ? explode(',', $value) : []); + } + +} diff --git a/application/admin/model/Page.php b/application/admin/model/Page.php new file mode 100644 index 000000000..d2aca16fc --- /dev/null +++ b/application/admin/model/Page.php @@ -0,0 +1,61 @@ +save(['weigh' => $row['id']]); + }); + } + + public function getUrlAttr($value, $data) + { + return addon_url('cms/page/index', [':diyname' => $data['diyname']]); + } + + public function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function getFlagList() + { + return ['hot' => __('Hot'), 'index' => __('Index'), 'recommend' => __('Recommend')]; + } + + public function getFlagTextAttr($value, $data) + { + $value = $value ? $value : $data['flag']; + $valueArr = explode(',', $value); + $list = $this->getFlagList(); + return implode(',', array_intersect_key($list, array_flip($valueArr))); + } + +} diff --git a/application/admin/model/Tags.php b/application/admin/model/Tags.php new file mode 100644 index 000000000..688ae4aca --- /dev/null +++ b/application/admin/model/Tags.php @@ -0,0 +1,27 @@ + $data['name']]); + } + +} diff --git a/application/admin/validate/Archives.php b/application/admin/validate/Archives.php new file mode 100644 index 000000000..8f8cebc2e --- /dev/null +++ b/application/admin/validate/Archives.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/application/admin/validate/Block.php b/application/admin/validate/Block.php new file mode 100644 index 000000000..eb60cd580 --- /dev/null +++ b/application/admin/validate/Block.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/application/admin/validate/Channel.php b/application/admin/validate/Channel.php new file mode 100644 index 000000000..7df3d4440 --- /dev/null +++ b/application/admin/validate/Channel.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/application/admin/validate/Comment.php b/application/admin/validate/Comment.php new file mode 100644 index 000000000..ffddfd091 --- /dev/null +++ b/application/admin/validate/Comment.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/application/admin/validate/Fields.php b/application/admin/validate/Fields.php new file mode 100644 index 000000000..34941a5b9 --- /dev/null +++ b/application/admin/validate/Fields.php @@ -0,0 +1,49 @@ + 'require|unique:fields,model_id^name', + 'title|管理员' => 'require', + 'model_id|模型ID' => 'require|integer', + 'status|状态' => 'require|in:normal,hidden', + ]; + + /** + * 提示消息 + */ + protected $message = [ + ]; + + /** + * 验证场景 + */ + protected $scene = [ + 'add' => [ + 'name', 'title', 'model_id', 'status' + ], + 'edit' => [ + 'name', 'title', 'model_id', 'status' + ], + ]; + + public function __construct(array $rules = array(), $message = array(), $field = array()) + { + //如果是编辑模式,则排除下主键 + $ids = request()->param("ids"); + if ($ids) + { + $this->rule['name|名称'] .= ",{$ids}"; + } + parent::__construct($rules, $message, $field); + } + +} diff --git a/application/admin/validate/Modelx.php b/application/admin/validate/Modelx.php new file mode 100644 index 000000000..8b96be187 --- /dev/null +++ b/application/admin/validate/Modelx.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/application/admin/validate/Page.php b/application/admin/validate/Page.php new file mode 100644 index 000000000..4eb69a6ab --- /dev/null +++ b/application/admin/validate/Page.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/application/admin/validate/Tags.php b/application/admin/validate/Tags.php new file mode 100644 index 000000000..cc9f954fd --- /dev/null +++ b/application/admin/validate/Tags.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/application/admin/view/cms/archives/add.html b/application/admin/view/cms/archives/add.html new file mode 100644 index 000000000..371aa04e8 --- /dev/null +++ b/application/admin/view/cms/archives/add.html @@ -0,0 +1,192 @@ +
+
+
+
+
+ +
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+ + +
+ +
+
    +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    +
    +
    +
    相关信息
    +
    +
    +
    +
    +
    + +
    +
    + + + +
    +
    +
    +
    + +
    +
    + + + +
    +
    +
    +
    + +
    +
    + + + +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    状态
    +
    +
    +
    +
    +
    + +
    + + + +
    +
    +
    + +
    +
    + {foreach name="statusList" item="vo"} + + {/foreach} +
    +
    +
    +
    + +
    +
    + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/application/admin/view/cms/archives/content.html b/application/admin/view/cms/archives/content.html new file mode 100644 index 000000000..3b402ee4f --- /dev/null +++ b/application/admin/view/cms/archives/content.html @@ -0,0 +1,21 @@ +
    + {:build_heading()} + +
    +
    +
    +
    +
    + {:build_toolbar('refresh,edit,del')} +
    + +
    +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/application/admin/view/cms/archives/edit.html b/application/admin/view/cms/archives/edit.html new file mode 100644 index 000000000..83cd966e4 --- /dev/null +++ b/application/admin/view/cms/archives/edit.html @@ -0,0 +1,201 @@ +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    + + +
    + +
    +
      +
      +
      +
      + +
      + +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      +
      +
      + +
      + +
      + +
      +
      +
      +
      +
      相关信息
      +
      +
      +
      +
      +
      + +
      +
      + + + +
      +
      +
      +
      + +
      +
      + + + +
      +
      +
      +
      + +
      +
      + + + +
      +
      +
      +
      + +
      +
      + + +
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      状态
      +
      +
      +
      +
      +
      + +
      + + + +
      +
      +
      + +
      +
      + {foreach name="statusList" item="vo"} + + {/foreach} +
      +
      +
      +
      + +
      +
      + + + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/application/admin/view/cms/archives/fields.html b/application/admin/view/cms/archives/fields.html new file mode 100644 index 000000000..7fbbac61b --- /dev/null +++ b/application/admin/view/cms/archives/fields.html @@ -0,0 +1,96 @@ +{foreach $fields as $item} + +
      +
      {$item.title}
      +
      + {switch $item.type} + {case string} + + {/case} + {case value="text" break="0"}{/case} + {case editor} + + {/case} + {case array} + {php}$arrList=isset($values[$item['name']])?(array)json_decode($item['value'],true):$item['content_list'];{/php} +
      +
      + {:__('Array key')} + {:__('Array value')} +
      + + {foreach $arrList as $key => $vo} +
      + + + + +
      + {/foreach} +
      {:__('Append')}
      +
      + {/case} + {case date} + + {/case} + {case time} + + {/case} + {case datetime} + + {/case} + {case number} + + {/case} + {case checkbox} + {foreach name="item.content_list" item="vo"} + + {/foreach} + {/case} + {case radio} + {foreach name="item.content_list" item="vo"} + + {/foreach} + {/case} + {case value="select" break="0"}{/case} + {case value="selects"} + + {/case} + {case value="image" break="0"}{/case} + {case value="images"} +
      + +
      + + +
      + +
      +
        + {/case} + {case value="file" break="0"}{/case} + {case value="files"} +
        + +
        + + +
        + +
        + {/case} + {case bool} + + + {/case} + {case custom} + {$item.content} + {/case} + {/switch} +
        +
        +{/foreach} \ No newline at end of file diff --git a/application/admin/view/cms/archives/index.html b/application/admin/view/cms/archives/index.html new file mode 100644 index 000000000..47eb8d9ac --- /dev/null +++ b/application/admin/view/cms/archives/index.html @@ -0,0 +1,91 @@ + +
        + +
        +
        + {:build_heading()} +
        +
        +
        +
        + {:build_toolbar('refresh,add,del',['add'=>[url('cms.archives/add'), 'btn btn-success btn-addtabs', 'fa fa-plus', __('Add'), __('Add')]])} + {:__('Move')} + + {:__('Recycle bin')} + + + +
        + +
        +
        +
        + +
        +
        +
        +
        + diff --git a/application/admin/view/cms/archives/recyclebin.html b/application/admin/view/cms/archives/recyclebin.html new file mode 100644 index 000000000..ab39d45a1 --- /dev/null +++ b/application/admin/view/cms/archives/recyclebin.html @@ -0,0 +1,23 @@ +
        + {:build_heading()} + +
        +
        +
        + +
        + +
        +
        +
        diff --git a/application/admin/view/cms/block/add.html b/application/admin/view/cms/block/add.html new file mode 100644 index 000000000..c56d17293 --- /dev/null +++ b/application/admin/view/cms/block/add.html @@ -0,0 +1,66 @@ +
        + +
        + +
        + +
        +
        +
        + +
        + +
        +
        +
        + +
        + +
        +
        +
        + +
        +
        + +
        + + +
        + +
        +
          +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          + {foreach name="statusList" item="vo"} + + {/foreach} +
          + +
          +
          + +
          diff --git a/application/admin/view/cms/block/edit.html b/application/admin/view/cms/block/edit.html new file mode 100644 index 000000000..ac4196b29 --- /dev/null +++ b/application/admin/view/cms/block/edit.html @@ -0,0 +1,66 @@ +
          + +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + +
          +
          + +
          + + +
          + +
          +
            +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            + {foreach name="statusList" item="vo"} + + {/foreach} +
            + +
            +
            + +
            diff --git a/application/admin/view/cms/block/index.html b/application/admin/view/cms/block/index.html new file mode 100644 index 000000000..2206b204f --- /dev/null +++ b/application/admin/view/cms/block/index.html @@ -0,0 +1,28 @@ +
            + {:build_heading()} + +
            +
            +
            +
            +
            + {:build_toolbar('refresh,add,edit,del')} + +
            + +
            +
            +
            + +
            +
            +
            diff --git a/application/admin/view/cms/channel/add.html b/application/admin/view/cms/channel/add.html new file mode 100644 index 000000000..4d1bfaa38 --- /dev/null +++ b/application/admin/view/cms/channel/add.html @@ -0,0 +1,130 @@ +
            + +
            + +
            + +
            + {foreach name="typeList" item="vo"} + + {/foreach} +
            +
            +
            + + 栏目: 栏目类型下不可以发布文章,但可以添加子栏目、列表、链接
            + 列表: 列表类型下可以发布文章,但不能添加子栏目
            + 链接: 链接类型下不可以发布文章和子级栏目
            +
            +
            +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            + +
            +
            +
            + +
            +
            + +
            + + +
            + +
            +
              +
              +
              +
              + +
              + +
              +
              +
              + +
              + +
              +
              +
              + +
              + +
              +
              + +
              + +
              + +
              +
              +
              + +
              + +
              +
              +
              + +
              + +
              +
              +
              + +
              + +
              +
              +
              + +
              + +
              + {foreach name="statusList" item="vo"} + + {/foreach} +
              + +
              +
              + +
              diff --git a/application/admin/view/cms/channel/edit.html b/application/admin/view/cms/channel/edit.html new file mode 100644 index 000000000..73abf8989 --- /dev/null +++ b/application/admin/view/cms/channel/edit.html @@ -0,0 +1,136 @@ +
              + +
              + +
              + +
              + {foreach name="typeList" item="vo"} + + {/foreach} +
              +
              +
              + + 栏目: 栏目类型下不可以发布文章,但可以添加子栏目、列表、链接
              + 列表: 列表类型下可以发布文章,但不能添加子栏目
              + 链接: 链接类型下不可以发布文章和子级栏目
              +
              +
              +
              +
              +
              + +
              + +
              +
              +
              + +
              + +
              +
              +
              + +
              + +
              +
              +
              + +
              +
              + +
              + + +
              + +
              +
                +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                + +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                + {foreach name="statusList" item="vo"} + + {/foreach} +
                + +
                +
                + +
                diff --git a/application/admin/view/cms/channel/index.html b/application/admin/view/cms/channel/index.html new file mode 100644 index 000000000..1466c35e5 --- /dev/null +++ b/application/admin/view/cms/channel/index.html @@ -0,0 +1,28 @@ +
                + {:build_heading()} + +
                +
                +
                +
                +
                + {:build_toolbar('refresh,add,edit,del')} + +
                + +
                +
                +
                + +
                +
                +
                diff --git a/application/admin/view/cms/comment/add.html b/application/admin/view/cms/comment/add.html new file mode 100644 index 000000000..9a7118b0c --- /dev/null +++ b/application/admin/view/cms/comment/add.html @@ -0,0 +1,82 @@ +
                + +
                + +
                + + + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + {:build_radios('row[subscribe]', [1=>'是', 0=>'否'])} +
                +
                +
                + +
                + +
                + {foreach name="statusList" item="vo"} + + {/foreach} +
                + +
                +
                + +
                diff --git a/application/admin/view/cms/comment/edit.html b/application/admin/view/cms/comment/edit.html new file mode 100644 index 000000000..3f12aad98 --- /dev/null +++ b/application/admin/view/cms/comment/edit.html @@ -0,0 +1,82 @@ +
                + +
                + +
                + + + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + {:build_radios('row[subscribe]', [1=>'是', 0=>'否'], $row['subscribe'])} +
                +
                +
                + +
                + +
                + {foreach name="statusList" item="vo"} + + {/foreach} +
                + +
                +
                + +
                diff --git a/application/admin/view/cms/comment/index.html b/application/admin/view/cms/comment/index.html new file mode 100644 index 000000000..e33e5f01e --- /dev/null +++ b/application/admin/view/cms/comment/index.html @@ -0,0 +1,32 @@ +
                + {:build_heading()} + + +
                diff --git a/application/admin/view/cms/fields/add.html b/application/admin/view/cms/fields/add.html new file mode 100644 index 000000000..fde627395 --- /dev/null +++ b/application/admin/view/cms/fields/add.html @@ -0,0 +1,122 @@ +
                + +
                + +
                + +
                +
                +
                + +
                + +
                +
                + + + +
                + +
                + +
                +
                + +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                + +
                + +
                + +
                +
                +
                + +
                + +
                + {foreach name="statusList" item="vo"} + + {/foreach} +
                + +
                +
                + +
                diff --git a/application/admin/view/cms/fields/edit.html b/application/admin/view/cms/fields/edit.html new file mode 100644 index 000000000..de46ee5e6 --- /dev/null +++ b/application/admin/view/cms/fields/edit.html @@ -0,0 +1,121 @@ +
                + + +
                + +
                + +
                +
                +
                + +
                + +
                +
                + + + +
                + +
                + +
                +
                + +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                + +
                + +
                + +
                +
                +
                + +
                + +
                + {foreach name="statusList" item="vo"} + + {/foreach} +
                + +
                +
                + +
                diff --git a/application/admin/view/cms/fields/index.html b/application/admin/view/cms/fields/index.html new file mode 100644 index 000000000..d042f87a1 --- /dev/null +++ b/application/admin/view/cms/fields/index.html @@ -0,0 +1,28 @@ +
                + {:build_heading()} + +
                +
                +
                +
                + + +
                +
                +
                + +
                +
                +
                diff --git a/application/admin/view/cms/modelx/add.html b/application/admin/view/cms/modelx/add.html new file mode 100644 index 000000000..33c1c82b3 --- /dev/null +++ b/application/admin/view/cms/modelx/add.html @@ -0,0 +1,40 @@ +
                + +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                + +
                diff --git a/application/admin/view/cms/modelx/edit.html b/application/admin/view/cms/modelx/edit.html new file mode 100644 index 000000000..3f5388505 --- /dev/null +++ b/application/admin/view/cms/modelx/edit.html @@ -0,0 +1,40 @@ +
                + +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                + +
                diff --git a/application/admin/view/cms/modelx/index.html b/application/admin/view/cms/modelx/index.html new file mode 100644 index 000000000..543991629 --- /dev/null +++ b/application/admin/view/cms/modelx/index.html @@ -0,0 +1,24 @@ +
                + {:build_heading()} + +
                +
                +
                +
                +
                + {:build_toolbar('refresh,add,edit,del')} +
                + +
                +
                +
                + +
                +
                +
                diff --git a/application/admin/view/cms/modelx/tpl.html b/application/admin/view/cms/modelx/tpl.html new file mode 100644 index 000000000..7b49a6b46 --- /dev/null +++ b/application/admin/view/cms/modelx/tpl.html @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/application/admin/view/cms/page/add.html b/application/admin/view/cms/page/add.html new file mode 100644 index 000000000..48adf679a --- /dev/null +++ b/application/admin/view/cms/page/add.html @@ -0,0 +1,96 @@ +
                + +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + + + +
                +
                +
                + +
                +
                + +
                + + +
                + +
                +
                  +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  + +
                  + +
                  + {foreach name="statusList" item="vo"} + + {/foreach} +
                  + +
                  +
                  + +
                  diff --git a/application/admin/view/cms/page/edit.html b/application/admin/view/cms/page/edit.html new file mode 100644 index 000000000..63fd1ed72 --- /dev/null +++ b/application/admin/view/cms/page/edit.html @@ -0,0 +1,107 @@ +
                  +
                  + +
                  + +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  + +
                  + +
                  +
                  +
                  + +
                  + + + +
                  +
                  +
                  + +
                  +
                  + +
                  + + +
                  + +
                  +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    + {foreach name="statusList" item="vo"} + + {/foreach} +
                    + +
                    +
                    + +
                    diff --git a/application/admin/view/cms/page/index.html b/application/admin/view/cms/page/index.html new file mode 100644 index 000000000..c968a2213 --- /dev/null +++ b/application/admin/view/cms/page/index.html @@ -0,0 +1,28 @@ +
                    + {:build_heading()} + +
                    +
                    +
                    +
                    +
                    + {:build_toolbar('refresh,add,edit,del')} + +
                    + +
                    +
                    +
                    + +
                    +
                    +
                    diff --git a/application/admin/view/cms/tags/add.html b/application/admin/view/cms/tags/add.html new file mode 100644 index 000000000..5b6a2fac1 --- /dev/null +++ b/application/admin/view/cms/tags/add.html @@ -0,0 +1,28 @@ +
                    + +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + +
                    diff --git a/application/admin/view/cms/tags/edit.html b/application/admin/view/cms/tags/edit.html new file mode 100644 index 000000000..97ff20cf6 --- /dev/null +++ b/application/admin/view/cms/tags/edit.html @@ -0,0 +1,28 @@ +
                    + +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + +
                    diff --git a/application/admin/view/cms/tags/index.html b/application/admin/view/cms/tags/index.html new file mode 100644 index 000000000..a0379d73a --- /dev/null +++ b/application/admin/view/cms/tags/index.html @@ -0,0 +1,21 @@ +
                    + {:build_heading()} + +
                    +
                    +
                    +
                    +
                    + {:build_toolbar('refresh,delete')} +
                    + +
                    +
                    +
                    + +
                    +
                    +
                    diff --git a/application/extra/addons.php b/application/extra/addons.php index e74b2f9cc..39f88aa84 100644 --- a/application/extra/addons.php +++ b/application/extra/addons.php @@ -4,8 +4,21 @@ return array ( 'autoload' => false, 'hooks' => array ( + 'addon_after_upgrade' => + array ( + 0 => 'cms', + ), ), 'route' => array ( + '/cms$' => 'cms/index/index', + '/cms/c/[:diyname]' => 'cms/channel/index', + '/cms/t/[:name]' => 'cms/tags/index', + '/cms/a/[:diyname]' => 'cms/archives/index', + '/cms/p/[:diyname]' => 'cms/page/index', + '/cms/s' => 'cms/search/index', + '/third$' => 'third/index/index', + '/third/connect/[:platform]' => 'third/index/connect', + '/third/callback/[:platform]' => 'third/index/callback', ), ); \ No newline at end of file diff --git a/public/assets/js/addons.js b/public/assets/js/addons.js index d2c1d20a9..ba925d030 100644 --- a/public/assets/js/addons.js +++ b/public/assets/js/addons.js @@ -1,3 +1,113 @@ define([], function () { - + window.UMEDITOR_HOME_URL = Config.__CDN__ + "/assets/addons/umeditor/"; +require.config({ + paths: { + 'umeditor': '../addons/umeditor/umeditor.min', + 'umeditor.config': '../addons/umeditor/umeditor.config', + 'umeditor.lang': '../addons/umeditor/lang/zh-cn/zh-cn', + }, + shim: { + 'umeditor': { + deps: [ + 'umeditor.config', + 'css!../addons/umeditor/themes/default/css/umeditor.css' + ], + exports: 'UM', + }, + 'umeditor.lang': ['umeditor'] + } +}); + +//修改上传的接口调用 +require(['upload', 'umeditor', 'umeditor.lang'], function (Upload, UME, undefined) { + //监听上传文本框的事件 + $(document).on("edui.file.change", ".edui-image-file", function (e, up, me, input, callback) { + for (var i = 0; i < this.files.length; i++) { + Upload.api.send(this.files[i], function (data) { + var url = data.url; + me.uploadComplete(JSON.stringify({url: url, state: "SUCCESS"})); + }); + } + up.updateInput(input); + me.toggleMask("Loading...."); + callback && callback(); + }); + //重写编辑器加载 + UME.plugins['autoupload'] = function () { + var me = this; + me.setOpt('pasteImageEnabled', true); + me.setOpt('dropFileEnabled', true); + var sendAndInsertImage = function (file, editor) { + try { + Upload.api.send(file, function (data) { + var url = data.url; + editor.execCommand('insertimage', { + src: url, + _src: url + }); + }); + } catch (er) { + } + }; + + function getPasteImage(e) { + return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items : null; + } + + function getDropImage(e) { + return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files : null; + } + + me.addListener('ready', function () { + if (window.FormData && window.FileReader) { + var autoUploadHandler = function (e) { + var hasImg = false, + items; + //获取粘贴板文件列表或者拖放文件列表 + items = e.type == 'paste' ? getPasteImage(e.originalEvent) : getDropImage(e.originalEvent); + if (items) { + var len = items.length, + file; + while (len--) { + file = items[len]; + if (file.getAsFile) + file = file.getAsFile(); + if (file && file.size > 0 && /image\/\w+/i.test(file.type)) { + sendAndInsertImage(file, me); + hasImg = true; + } + } + if (hasImg) + return false; + } + + }; + me.getOpt('pasteImageEnabled') && me.$body.on('paste', autoUploadHandler); + me.getOpt('dropFileEnabled') && me.$body.on('drop', autoUploadHandler); + + //取消拖放图片时出现的文字光标位置提示 + me.$body.on('dragover', function (e) { + if (e.originalEvent.dataTransfer.types[0] == 'Files') { + return false; + } + }); + } + }); + + }; + $(".editor").each(function () { + var id = $(this).attr("id"); + $(this).removeClass('form-control'); + UME.list[id] = UME.getEditor(id, { + serverUrl: Fast.api.fixurl('/addons/umeditor/api/'), + initialFrameWidth: '100%', + zIndex: 90, + xssFilterRules: false, + outputXssFilter: false, + inputXssFilter: false, + imageUrl: '', + imagePath: Config.upload.cdnurl + }); + }); +}); }); \ No newline at end of file diff --git a/public/assets/js/backend/cms/archives.js b/public/assets/js/backend/cms/archives.js new file mode 100644 index 000000000..845b86705 --- /dev/null +++ b/public/assets/js/backend/cms/archives.js @@ -0,0 +1,411 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/archives/index', + add_url: 'cms/archives/add', + edit_url: 'cms/archives/edit', + del_url: 'cms/archives/del', + multi_url: 'cms/archives/multi', + dragsort_url: '', + table: 'archives', + } + }); + + var table = $("#table"); + + //在表格内容渲染完成后回调的事件 + table.on('post-body.bs.table', function (e, settings, json, xhr) { + $(".btn-editone", this) + .off("click") + .removeClass("btn-editone") + .addClass("btn-addtabs") + .prop("title", __('Edit')); + }); + //当双击单元格时 + table.on('dbl-click-row.bs.table', function (e, row, element, field) { + $(".btn-addtabs", element).trigger("click"); + }); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'weigh', + searchFormVisible: Fast.api.query("model_id") ? true : false, + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id'), sortable: true}, + { + field: 'model_id', + title: __('Model_id'), + visible: false, + addclass: 'selectpage', + extend: 'data-source="cms/modelx/index"', + formatter: Table.api.formatter.search + }, + { + field: 'channel_id', + title: __('Channel_id'), + visible: false, + addclass: 'selectpage', + extend: 'data-source="cms/channel/index"', + formatter: Table.api.formatter.search + }, + { + field: 'channel.name', + title: __('Channel'), + operate: false, + formatter: function (value, row, index) { + return '' + value + ''; + } + }, + { + field: 'title', title: __('Title'), align: 'left', formatter: function (value, row, index) { + return '
                    ' + value + '
                    ' + Table.api.formatter.flag.call(this, row['flag'], row, index); + } + }, + {field: 'image', title: __('Image'), operate: false, formatter: Table.api.formatter.image}, + {field: 'views', title: __('Views'), operate: 'BETWEEN', sortable: true}, + {field: 'comments', title: __('Comments'), operate: 'BETWEEN', sortable: true}, + {field: 'weigh', title: __('Weigh'), operate: false}, + { + field: 'url', title: __('Url'), operate: false, formatter: function (value, row, index) { + return ''; + } + }, + { + field: 'createtime', + title: __('Createtime'), + visible: false, + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'updatetime', + title: __('Updatetime'), + sortable: true, + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + {field: 'status', title: __('Status'), operate: false, formatter: Table.api.formatter.status}, + { + field: 'operate', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + } + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + + $(document).on("click", "a.btn-channel", function () { + $("#archivespanel").toggleClass("col-md-9", $("#channelbar").hasClass("hidden")); + $("#channelbar").toggleClass("hidden"); + }); + + require(['jstree'], function () { + //全选和展开 + $(document).on("click", "#checkall", function () { + $("#channeltree").jstree($(this).prop("checked") ? "check_all" : "uncheck_all"); + }); + $(document).on("click", "#expandall", function () { + $("#channeltree").jstree($(this).prop("checked") ? "open_all" : "close_all"); + }); + $('#channeltree').on("changed.jstree", function (e, data) { + console.log(data); + console.log(data.selected); + var options = table.bootstrapTable('getOptions'); + options.pageNumber = 1; + options.queryParams = function (params) { + params.filter = JSON.stringify(data.selected.length > 0 ? {channel_id: data.selected.join(",")} : {}); + params.op = JSON.stringify(data.selected.length > 0 ? {channel_id: 'in'} : {}); + return params; + }; + table.bootstrapTable('refresh', {}); + return false; + }); + $('#channeltree').jstree({ + "themes": { + "stripes": true + }, + "checkbox": { + "keep_selected_style": false, + }, + "types": { + "channel": { + "icon": "fa fa-th", + }, + "list": { + "icon": "fa fa-list", + }, + "link": { + "icon": "fa fa-link", + }, + "disabled": { + "check_node": false, + "uncheck_node": false + } + }, + 'plugins': ["types", "checkbox"], + "core": { + "multiple": true, + 'check_callback': true, + "data": Config.channelList + } + }); + }); + + $(document).on('click', '.btn-move', function () { + var ids = Table.api.selectedids(table); + Layer.open({ + title: __('Move'), + content: Template("channeltpl", {}), + btn: [__('Move')], + yes: function (index, layero) { + var channel_id = $("select[name='channel']", layero).val(); + if (channel_id == 0) { + Toastr.error(__('Please select channel')); + return; + } + Fast.api.ajax({ + url: "cms/archives/move/ids/" + ids.join(","), + type: "post", + data: {channel_id: channel_id}, + }, function () { + table.bootstrapTable('refresh', {}); + Layer.close(index); + }); + }, + success: function (layero, index) { + } + }); + }); + }, + content: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/archives/content/model_id/' + Config.model_id, + add_url: '', + edit_url: 'cms/archives/edit', + del_url: 'cms/archives/del', + multi_url: '', + table: '', + } + }); + + var table = $("#table"); + //在表格内容渲染完成后回调的事件 + table.on('post-body.bs.table', function (e, settings, json, xhr) { + $(".btn-editone", this) + .off("click") + .removeClass("btn-editone") + .addClass("btn-addtabs") + .prop("title", __('Edit')); + }); + //默认字段 + var columns = [ + {checkbox: true}, + //这里因为涉及到关联多个表,因为用了两个字段来操作,一个隐藏,一个搜索 + {field: 'main.id', title: __('Id'), visible: false}, + {field: 'id', title: __('Id'), operate: false}, + {field: 'channel_id', title: __('Channel_id'), formatter: Table.api.formatter.search}, + {field: 'channel_name', title: __('Channel_name'), operate: false} + ]; + //动态追加字段 + $.each(Config.fields, function (i, j) { + var data = {field: j.field, title: j.title, operate: 'like'}; + //如果是图片,加上formatter + if (j.type == 'image') { + data.formatter = Table.api.formatter.image; + } else if (j.type == 'images') { + data.formatter = Table.api.formatter.images; + } else if (j.type == 'radio' || j.type == 'check' || j.type == 'select' || j.type == 'selects') { + data.formatter = Controller.api.formatter.content; + data.extend = j.content; + } + columns.push(data); + }); + //追加操作字段 + columns.push({ + field: 'operate', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + }); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: columns + }) + ; + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + recyclebin: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + 'dragsort_url': '' + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: 'cms/archives/recyclebin', + pk: 'id', + sortName: 'weigh', + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'title', title: __('Title'), align: 'left'}, + {field: 'image', title: __('Image'), operate: false, formatter: Table.api.formatter.image}, + { + field: 'deletetime', + title: __('Deletetime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'operate', + width: '130px', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + buttons: [ + { + name: 'Restore', + text: __('Restore'), + classname: 'btn btn-xs btn-info btn-restoreit', + icon: 'fa fa-rotate-left', + url: 'cms/archives/restore' + }, + { + name: 'Destroy', + text: __('Destroy'), + classname: 'btn btn-xs btn-danger btn-destroyit', + icon: 'fa fa-times', + url: 'cms/archives/destroy' + } + ], + formatter: Table.api.formatter.operate + } + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + + $(document).on('click', '.btn-destroyall', function () { + var that = this; + Layer.confirm(__('Are you sure you want to truncate?'), function () { + Fast.api.ajax($(that).attr("href"), function () { + Layer.closeAll(); + table.bootstrapTable('refresh'); + }, function () { + Layer.closeAll(); + }); + }); + return false; + }); + $(document).on('click', '.btn-restoreall,.btn-restoreit,.btn-destroyit', function () { + Fast.api.ajax($(this).attr("href"), function () { + table.bootstrapTable('refresh'); + }); + return false; + }); + }, + add: function () { + $(document).on('change', '#c-channel_id', function () { + Fast.api.ajax({ + url: 'cms/archives/get_channel_fields', + data: {channel_id: $(this).val()} + }, function (data) { + $("#extend").html(data.html); + Form.api.bindevent($("#extend")); + return false; + }); + localStorage.setItem('last_channel_id', $(this).val()); + }); + var last_channel_id = localStorage.getItem('last_channel_id'); + if (last_channel_id) { + $("#c-channel_id option[value='" + last_channel_id + "']").prop("selected", true); + } + $("#c-channel_id").trigger("change"); + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + Fast.api.ajax({ + url: 'cms/archives/get_channel_fields', + data: {channel_id: $("#c-channel_id").val(), archives_id: $("#archive-id").val()} + }, function (data) { + $("#extend").html(data.html); + Form.api.bindevent($("#extend")); + return false; + }); + }, + api: { + formatter: { + content: function (value, row, index) { + var extend = this.extend; + if (!value) { + return ''; + } + var valueArr = value.toString().split(/,/); + var result = []; + $.each(valueArr, function (i, j) { + result.push(typeof extend[j] !== 'undefined' ? extend[j] : j); + }); + return result.join(','); + } + }, + bindevent: function () { + $.validator.config({ + rules: { + diyname: function (element) { + if (element.value.toString().match(/^\d+$/)) { + return __('Can not be digital'); + } + return $.ajax({ + url: 'cms/archives/check_element_available', + type: 'POST', + data: {id: $("#archive-id").val(), name: element.name, value: element.value}, + dataType: 'json' + }); + } + } + }); + Form.api.bindevent($("form[role=form]"), function () { + var obj = top.window.$("ul.nav-addtabs li.active"); + top.window.Toastr.success(__('Operation completed')); + top.window.$(".sidebar-menu a[url$='/cms/archives'][addtabs]").click(); + top.window.$(".sidebar-menu a[url$='/cms/archives'][addtabs]").dblclick(); + obj.find(".fa-remove").trigger("click"); + }); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/public/assets/js/backend/cms/block.js b/public/assets/js/backend/cms/block.js new file mode 100644 index 000000000..168f2b831 --- /dev/null +++ b/public/assets/js/backend/cms/block.js @@ -0,0 +1,57 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/block/index', + add_url: 'cms/block/add', + edit_url: 'cms/block/edit', + del_url: 'cms/block/del', + multi_url: 'cms/block/multi', + table: 'block', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'type', title: __('Type'), formatter:Table.api.formatter.search}, + {field: 'name', title: __('Name')}, + {field: 'title', title: __('Title')}, + {field: 'image', title: __('Image'), formatter: Table.api.formatter.image}, + {field: 'url', title: __('Url'), formatter: Table.api.formatter.url}, + {field: 'createtime', title: __('Createtime'), sortable: true, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'updatetime', title: __('Updatetime'), sortable: true, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'status', title: __('Status'), formatter: Table.api.formatter.status}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/public/assets/js/backend/cms/channel.js b/public/assets/js/backend/cms/channel.js new file mode 100644 index 000000000..06d3d925a --- /dev/null +++ b/public/assets/js/backend/cms/channel.js @@ -0,0 +1,164 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/channel/index', + add_url: 'cms/channel/add', + edit_url: 'cms/channel/edit', + del_url: 'cms/channel/del', + multi_url: 'cms/channel/multi', + dragsort_url: '', + table: 'channel', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'weigh', + pagination: false, + escape: false, + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + { + field: 'type', + title: __('Type'), + custom: {channel: 'info', list: 'success', link: 'primary'}, + formatter: Table.api.formatter.flag + }, + {field: 'model_name', title: __('Model_name'), operate: false}, + {field: 'name', title: __('Name'), align: 'left'}, + { + field: 'url', title: __('Url'), formatter: function (value, row, index) { + return ''; + } + }, + {field: 'items', sortable: true, title: __('Items')}, + { + field: 'weigh', + sortable: true, + title: __('Weigh'), + formatter: function (value, row, index) { + return ''; + } + }, + { + field: 'createtime', + title: __('Createtime'), + visible: false, + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'updatetime', + title: __('Updatetime'), + visible: false, + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + {field: 'status', title: __('Status'), formatter: Table.api.formatter.status}, + { + field: 'operate', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + } + ] + ], + search: false, + commonSearch: false + }); + + $(document).on("change", ".text-weigh", function () { + $(this).data("params", {weigh: $(this).val()}); + Table.api.multi('', [$(this).data("id")], table, this); + return false; + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + $("input[name='row[type]']:first").trigger("click"); + $("select[name='row[model_id]']").trigger("change"); + }, + edit: function () { + Controller.api.bindevent(); + $("input[name='row[type]']:checked").trigger("fa.event.typeupdated", "edit"); + }, + api: { + bindevent: function () { + $.validator.config({ + rules: { + single: function (element) { + return !$("#c-name").val().match(/\n/); + }, + channelname: function (element) { + if (element.value.toString().match(/^\d+$/)) { + return __('Can not be digital'); + } + return $.ajax({ + url: 'cms/channel/check_element_available', + type: 'POST', + data: {id: $("#c-name").val(), name: element.name, value: element.value}, + dataType: 'json' + }); + }, + diyname: function (element) { + if (element.value.toString().match(/^\d+$/)) { + return __('Can not be digital'); + } + return $.ajax({ + url: 'cms/channel/check_element_available', + type: 'POST', + data: {id: $("#channel-id").val(), name: element.name, value: element.value}, + dataType: 'json' + }); + } + } + }); + //不可见的元素不验证 + $("form[role=form]").data("validator-options", {ignore: ':hidden'}); + $(document).on("click fa.event.typeupdated", "input[name='row[type]']", function (e, ref) { + $(".tf").addClass("hidden"); + $(".tf.tf-" + $(this).val()).removeClass("hidden"); + if (typeof ref == 'undefined') { + $("select[name='row[model_id]']").trigger("change"); + } + if ($(this).val() == 'link') { + $("#parent_id option[data-model]").prop("disabled", false); + } + }); + Form.api.bindevent($("form[role=form]")); + $(document).on("change", "select[name='row[model_id]']", function () { + var parentChannel = $("#parent_id"); + $("option[value=0]", parentChannel).prop("selected", true); + $("option[data-model]", parentChannel).prop("disabled", true); + $("option[data-model='" + $(this).val() + "']", parentChannel).prop("disabled", false); + var data = $("option:selected", this).data(); + var type = $("input[name='row[type]']:checked").val(); + if (type == 'channel') { + $("input[name='row[channeltpl]']").val(data.channeltpl); + } else if (type == 'list') { + $("input[name='row[listtpl]']").val(data.listtpl); + $("input[name='row[showtpl]']").val(data.showtpl); + } + }); + + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/public/assets/js/backend/cms/comment.js b/public/assets/js/backend/cms/comment.js new file mode 100644 index 000000000..53d92cfd3 --- /dev/null +++ b/public/assets/js/backend/cms/comment.js @@ -0,0 +1,62 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/comment/index', + add_url: 'cms/comment/add', + edit_url: 'cms/comment/edit', + del_url: 'cms/comment/del', + multi_url: 'cms/comment/multi', + table: 'comment', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'type', title: __('Type'), visible: false, searchList: {"archives": __('archives'), "page": __('page')}}, + {field: 'type_text', title: __('Type'), operate: false}, + {field: 'aid', sortable: true, title: __('Aid'), formatter: Table.api.formatter.search}, + {field: 'pid', sortable: true, title: __('Pid'), formatter: Table.api.formatter.search, visible: false}, + {field: 'user_id', sortable: true, title: __('User_id'), formatter: Table.api.formatter.search}, + {field: 'archives.title', title: __('Title'), operate: false}, + {field: 'comments', sortable: true, title: __('Comments')}, + {field: 'ip', title: __('Ip'), formatter: Table.api.formatter.search}, + {field: 'useragent', title: __('Useragent'), visible: false}, + {field: 'subscribe', sortable: true, title: __('Subscribe'), visible: false}, + {field: 'createtime', sortable: true, title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'updatetime', sortable: true, title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'status', title: __('Status'), searchList: {"normal": __('normal'), "hidden": __('hidden')}, formatter: Table.api.formatter.status}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/public/assets/js/backend/cms/fields.js b/public/assets/js/backend/cms/fields.js new file mode 100644 index 000000000..c9207857d --- /dev/null +++ b/public/assets/js/backend/cms/fields.js @@ -0,0 +1,65 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/fields/index/model_id/' + Config.model_id, + add_url: 'cms/fields/add/model_id/' + Config.model_id, + edit_url: 'cms/fields/edit/model_id/' + Config.model_id, + del_url: 'cms/fields/del/model_id/' + Config.model_id, + multi_url: 'cms/fields/multi/model_id/' + Config.model_id, + table: 'fields', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'weigh', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'model_id', visible: false, operate: false, title: __('Model_id')}, + {field: 'name', title: __('Name')}, + {field: 'type', title: __('Type')}, + {field: 'title', title: __('Title')}, + {field: 'weigh', title: __('Weigh'), visible: false}, + {field: 'createtime', title: __('Createtime'), visible: false, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'updatetime', title: __('Updatetime'), visible: false, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'status', title: __('Status'), formatter: Table.api.formatter.status}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ], + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + //不可见的元素不验证 + $("form#add-form").data("validator-options", {ignore: ':hidden'}); + $(document).on("change", "#c-type", function () { + $(".tf").addClass("hidden"); + $(".tf.tf-" + $(this).val()).removeClass("hidden"); + + }); + Form.api.bindevent($("form[role=form]")); + $("#c-type").trigger("change"); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/public/assets/js/backend/cms/modelx.js b/public/assets/js/backend/cms/modelx.js new file mode 100644 index 000000000..a8df73d77 --- /dev/null +++ b/public/assets/js/backend/cms/modelx.js @@ -0,0 +1,103 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/modelx/index', + add_url: 'cms/modelx/add', + edit_url: 'cms/modelx/edit', + del_url: 'cms/modelx/del', + multi_url: 'cms/modelx/multi', + table: 'model', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'name', title: __('Name')}, + {field: 'table', title: __('Table')}, + {field: 'channeltpl', title: __('Channeltpl')}, + {field: 'listtpl', title: __('Listtpl')}, + {field: 'showtpl', title: __('Showtpl')}, + { + field: 'createtime', + sortable: true, + title: __('Createtime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'updatetime', + sortable: true, + title: __('Updatetime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'datalist', title: __('Operate'), table: table, + buttons: [ + { + name: 'index', + text: __('Main list'), + classname: 'btn btn-xs btn-success btn-addtabs', + icon: 'fa fa-file', + url: 'cms/archives/index?model_id={ids}' + }, + { + name: 'content', + text: __('Addon list'), + classname: 'btn btn-xs btn-success btn-addtabs', + icon: 'fa fa-file', + url: 'cms/archives/content/model_id/{ids}' + }, + { + name: 'fields', + text: __('Fields'), + classname: 'btn btn-xs btn-info btn-fields btn-addtabs', + icon: 'fa fa-list', + url: 'cms/fields/index/model_id/{ids}' + }, + ], + formatter: Table.api.formatter.buttons + }, + { + field: 'operate', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + } + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/public/assets/js/backend/cms/page.js b/public/assets/js/backend/cms/page.js new file mode 100644 index 000000000..455fe87ef --- /dev/null +++ b/public/assets/js/backend/cms/page.js @@ -0,0 +1,61 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/page/index', + add_url: 'cms/page/add', + edit_url: 'cms/page/edit', + del_url: 'cms/page/del', + multi_url: 'cms/page/multi', + table: 'page', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'weigh', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'title', title: __('Title')}, + {field: 'flag', title: __('Flag'), formatter: Table.api.formatter.flag}, + {field: 'image', title: __('Image'), formatter: Table.api.formatter.image}, + {field: 'views', sortable: true, title: __('Views'), operate: 'BETWEEN'}, + {field: 'comments', sortable: true, title: __('Comments'), operate: 'BETWEEN'}, + {field: 'url', title: __('Url'), formatter: function(value, row, index){ + return ''; + }}, + {field: 'createtime', sortable: true, title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'updatetime', sortable: true, title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'weigh', sortable: true, title: __('Weigh')}, + {field: 'status', title: __('Status'), formatter: Table.api.formatter.status}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/public/assets/js/backend/cms/tags.js b/public/assets/js/backend/cms/tags.js new file mode 100644 index 000000000..db949caef --- /dev/null +++ b/public/assets/js/backend/cms/tags.js @@ -0,0 +1,54 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/tags/index', + add_url: 'cms/tags/add', + edit_url: '', + del_url: 'cms/tags/del', + multi_url: 'cms/tags/multi', + table: 'tags', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'name', sortable: true, title: __('Name')}, + {field: 'nums', sortable: true, title: __('Nums')}, + {field: 'url', title: __('Url'), formatter: function(value, row, index){ + return ''; + }}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file -- Gitee From 97a1f33af94bc6e03faf5303116b684861b888b6 Mon Sep 17 00:00:00 2001 From: abovesky Date: Thu, 9 Aug 2018 18:27:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - addons/cms/Cms.php | 162 + .../application/admin/controller/cms/Ajax.php | 59 + .../admin/controller/cms/Archives.php | 360 + .../admin/controller/cms/Block.php | 55 + .../admin/controller/cms/Channel.php | 174 + .../admin/controller/cms/Comment.php | 67 + .../admin/controller/cms/Fields.php | 90 + .../admin/controller/cms/Modelx.php | 26 + .../application/admin/controller/cms/Page.php | 56 + .../application/admin/controller/cms/Tags.php | 46 + .../admin/lang/zh-cn/cms/archives.php | 41 + .../admin/lang/zh-cn/cms/block.php | 13 + .../admin/lang/zh-cn/cms/channel.php | 29 + .../admin/lang/zh-cn/cms/comment.php | 19 + .../admin/lang/zh-cn/cms/fields.php | 43 + .../admin/lang/zh-cn/cms/modelx.php | 15 + .../application/admin/lang/zh-cn/cms/page.php | 22 + .../application/admin/lang/zh-cn/cms/tags.php | 7 + .../cms/application/admin/model/Archives.php | 138 + addons/cms/application/admin/model/Block.php | 34 + .../cms/application/admin/model/Channel.php | 97 + .../cms/application/admin/model/Comment.php | 58 + addons/cms/application/admin/model/Fields.php | 134 + addons/cms/application/admin/model/Modelx.php | 36 + addons/cms/application/admin/model/Page.php | 61 + addons/cms/application/admin/model/Tags.php | 27 + .../application/admin/validate/Archives.php | 27 + .../cms/application/admin/validate/Block.php | 27 + .../application/admin/validate/Channel.php | 27 + .../application/admin/validate/Comment.php | 27 + .../cms/application/admin/validate/Fields.php | 49 + .../cms/application/admin/validate/Modelx.php | 27 + .../cms/application/admin/validate/Page.php | 27 + .../cms/application/admin/validate/Tags.php | 27 + .../admin/view/cms/archives/add.html | 192 + .../admin/view/cms/archives/content.html | 21 + .../admin/view/cms/archives/edit.html | 201 + .../admin/view/cms/archives/fields.html | 96 + .../admin/view/cms/archives/index.html | 91 + .../admin/view/cms/archives/recyclebin.html | 23 + .../application/admin/view/cms/block/add.html | 66 + .../admin/view/cms/block/edit.html | 66 + .../admin/view/cms/block/index.html | 28 + .../admin/view/cms/channel/add.html | 130 + .../admin/view/cms/channel/edit.html | 136 + .../admin/view/cms/channel/index.html | 28 + .../admin/view/cms/comment/add.html | 82 + .../admin/view/cms/comment/edit.html | 82 + .../admin/view/cms/comment/index.html | 32 + .../admin/view/cms/fields/add.html | 122 + .../admin/view/cms/fields/edit.html | 121 + .../admin/view/cms/fields/index.html | 28 + .../admin/view/cms/modelx/add.html | 40 + .../admin/view/cms/modelx/edit.html | 40 + .../admin/view/cms/modelx/index.html | 24 + .../admin/view/cms/modelx/tpl.html | 66 + .../application/admin/view/cms/page/add.html | 96 + .../application/admin/view/cms/page/edit.html | 107 + .../admin/view/cms/page/index.html | 28 + .../application/admin/view/cms/tags/add.html | 28 + .../application/admin/view/cms/tags/edit.html | 28 + .../admin/view/cms/tags/index.html | 21 + addons/cms/assets/css/common.css | 1286 ++ addons/cms/assets/css/font-awesome.min.css | 5 + addons/cms/assets/css/jquery.colorbox.css | 70 + .../css/jquery.justifiedGallery.min.css | 7 + addons/cms/assets/css/swipebox.min.css | 1 + addons/cms/assets/fonts/FontAwesome.otf | Bin 0 -> 85908 bytes .../cms/assets/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes .../cms/assets/fonts/fontawesome-webfont.svg | 520 + .../cms/assets/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes .../cms/assets/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes .../assets/fonts/fontawesome-webfont.woff2 | Bin 0 -> 56780 bytes addons/cms/assets/img/banner/1.jpg | Bin 0 -> 59678 bytes addons/cms/assets/img/border.png | Bin 0 -> 112 bytes addons/cms/assets/img/focus/1.jpg | Bin 0 -> 76194 bytes addons/cms/assets/img/focus/2.jpg | Bin 0 -> 65468 bytes addons/cms/assets/img/focus/3.jpg | Bin 0 -> 84980 bytes addons/cms/assets/img/focus/5.jpg | Bin 0 -> 213528 bytes addons/cms/assets/img/icons.png | Bin 0 -> 729 bytes addons/cms/assets/img/icons.svg | 1 + addons/cms/assets/img/loader.gif | Bin 0 -> 2608 bytes addons/cms/assets/img/loading.gif | Bin 0 -> 6244 bytes addons/cms/assets/img/logo.png | Bin 0 -> 23120 bytes addons/cms/assets/img/noimage.jpg | Bin 0 -> 17237 bytes addons/cms/assets/img/overlay.png | Bin 0 -> 182 bytes addons/cms/assets/img/qrcode.png | Bin 0 -> 2751 bytes addons/cms/assets/img/sidebar/1.jpg | Bin 0 -> 54318 bytes addons/cms/assets/img/sidebar/2.jpg | Bin 0 -> 46229 bytes .../cms/assets/js/bootstrap-typeahead.min.js | 10 + addons/cms/assets/js/common.js | 224 + .../assets/js/jquery.justifiedGallery.min.js | 7 + addons/cms/assets/js/jquery.swipebox.min.js | 2 + addons/cms/assets/js/layerloader.min.js | 1 + addons/cms/assets/less/common.less | 1301 ++ addons/cms/config.php | 180 + addons/cms/controller/Api.php | 58 + addons/cms/controller/Archives.php | 84 + addons/cms/controller/Base.php | 36 + addons/cms/controller/Channel.php | 116 + addons/cms/controller/Comment.php | 60 + addons/cms/controller/Index.php | 24 + addons/cms/controller/Page.php | 36 + addons/cms/controller/Search.php | 75 + addons/cms/controller/Tags.php | 69 + addons/cms/controller/wxapp/Archives.php | 110 + addons/cms/controller/wxapp/Base.php | 29 + addons/cms/controller/wxapp/Comment.php | 47 + addons/cms/controller/wxapp/Common.php | 73 + addons/cms/controller/wxapp/Index.php | 57 + addons/cms/controller/wxapp/My.php | 51 + addons/cms/controller/wxapp/User.php | 203 + addons/cms/info.ini | 8 + addons/cms/install.sql | 423 + addons/cms/lang/zh-cn.php | 49 + addons/cms/library/Alter.php | 176 + addons/cms/library/Bootstrap.php | 210 + addons/cms/model/Archives.php | 318 + addons/cms/model/Block.php | 109 + addons/cms/model/Channel.php | 253 + addons/cms/model/Comment.php | 193 + addons/cms/model/Fields.php | 45 + addons/cms/model/Modelx.php | 55 + addons/cms/model/Page.php | 101 + addons/cms/model/Tags.php | 79 + .../public/assets/js/backend/cms/archives.js | 411 + .../cms/public/assets/js/backend/cms/block.js | 57 + .../public/assets/js/backend/cms/channel.js | 164 + .../public/assets/js/backend/cms/comment.js | 62 + .../public/assets/js/backend/cms/fields.js | 65 + .../public/assets/js/backend/cms/modelx.js | 103 + .../cms/public/assets/js/backend/cms/page.js | 61 + .../cms/public/assets/js/backend/cms/tags.js | 54 + addons/cms/taglib/Cms.php | 396 + addons/cms/view/default/channel.html | 59 + addons/cms/view/default/common/comment.html | 57 + addons/cms/view/default/common/item.html | 41 + addons/cms/view/default/common/layout.html | 154 + addons/cms/view/default/common/sidebar.html | 52 + addons/cms/view/default/index.html | 82 + addons/cms/view/default/list_news.html | 76 + addons/cms/view/default/list_product.html | 78 + addons/cms/view/default/page.html | 41 + addons/cms/view/default/search.html | 55 + addons/cms/view/default/show_news.html | 156 + addons/cms/view/default/show_product.html | 181 + addons/cms/view/default/tags.html | 55 + addons/cms/wxapp/app.js | 293 + addons/cms/wxapp/app.json | 60 + addons/cms/wxapp/app.wxss | 152 + addons/cms/wxapp/assets/images/avatar.png | Bin 0 -> 15135 bytes addons/cms/wxapp/assets/images/error.png | Bin 0 -> 4513 bytes addons/cms/wxapp/assets/images/ok.png | Bin 0 -> 2518 bytes addons/cms/wxapp/assets/images/share.png | Bin 0 -> 970 bytes .../wxapp/assets/images/tabbar/addon-hl.png | Bin 0 -> 1946 bytes .../cms/wxapp/assets/images/tabbar/addon.png | Bin 0 -> 1855 bytes .../wxapp/assets/images/tabbar/forum-hl.png | Bin 0 -> 1227 bytes .../cms/wxapp/assets/images/tabbar/forum.png | Bin 0 -> 2321 bytes .../wxapp/assets/images/tabbar/index-hl.png | Bin 0 -> 2654 bytes .../cms/wxapp/assets/images/tabbar/index.png | Bin 0 -> 5314 bytes .../cms/wxapp/assets/images/tabbar/my-hl.png | Bin 0 -> 2179 bytes addons/cms/wxapp/assets/images/tabbar/my.png | Bin 0 -> 4963 bytes .../wxapp/assets/images/tabbar/store-hl.png | Bin 0 -> 1439 bytes .../cms/wxapp/assets/images/tabbar/store.png | Bin 0 -> 2760 bytes addons/cms/wxapp/assets/images/warning.png | Bin 0 -> 2467 bytes addons/cms/wxapp/assets/libs/WxValidate.js | 418 + .../cms/wxapp/assets/libs/towxml/entry.wxml | 10 + .../wxapp/assets/libs/towxml/lib/html2json.js | 408 + .../assets/libs/towxml/lib/markdown-it.js | 5 + addons/cms/wxapp/assets/libs/towxml/main.js | 247 + .../wxapp/assets/libs/towxml/outTemplate.js | 135 + .../cms/wxapp/assets/libs/towxml/package.json | 26 + .../libs/towxml/plugins/hljs/highlight.js | 1 + .../assets/libs/towxml/plugins/hljs/index.js | 29 + .../towxml/plugins/hljs/languages/bash.js | 1 + .../plugins/hljs/languages/coffeescript.js | 1 + .../libs/towxml/plugins/hljs/languages/css.js | 1 + .../libs/towxml/plugins/hljs/languages/dns.js | 1 + .../libs/towxml/plugins/hljs/languages/dos.js | 1 + .../towxml/plugins/hljs/languages/erlang.js | 1 + .../libs/towxml/plugins/hljs/languages/go.js | 1 + .../towxml/plugins/hljs/languages/htmlbars.js | 1 + .../towxml/plugins/hljs/languages/http.js | 1 + .../towxml/plugins/hljs/languages/java.js | 1 + .../plugins/hljs/languages/javascript.js | 1 + .../towxml/plugins/hljs/languages/json.js | 1 + .../towxml/plugins/hljs/languages/less.js | 1 + .../towxml/plugins/hljs/languages/makefile.js | 1 + .../towxml/plugins/hljs/languages/markdown.js | 1 + .../towxml/plugins/hljs/languages/nginx.js | 1 + .../libs/towxml/plugins/hljs/languages/php.js | 1 + .../plugins/hljs/languages/powershell.js | 1 + .../towxml/plugins/hljs/languages/python.js | 1 + .../towxml/plugins/hljs/languages/ruby.js | 1 + .../towxml/plugins/hljs/languages/scss.js | 1 + .../towxml/plugins/hljs/languages/shell.js | 1 + .../libs/towxml/plugins/hljs/languages/sql.js | 1 + .../towxml/plugins/hljs/languages/swift.js | 1 + .../plugins/hljs/languages/typescript.js | 1 + .../towxml/plugins/hljs/style/github.wxss | 99 + .../towxml/plugins/hljs/style/monokai.wxss | 70 + .../libs/towxml/plugins/markdown-it-emoji.js | 3 + .../libs/towxml/plugins/markdown-it-ins.js | 2 + .../libs/towxml/plugins/markdown-it-mark.js | 2 + .../libs/towxml/plugins/markdown-it-sub.js | 2 + .../libs/towxml/plugins/markdown-it-sup.js | 2 + .../assets/libs/towxml/renderTemplate.wxml | 1801 +++ .../wxapp/assets/libs/towxml/style/main.wxss | 287 + .../assets/libs/towxml/style/theme/dark.wxss | 59 + .../assets/libs/towxml/style/theme/light.wxss | 58 + .../assets/libs/zanui/actionsheet/index.js | 41 + .../assets/libs/zanui/actionsheet/index.wxml | 40 + .../assets/libs/zanui/actionsheet/index.wxss | 1 + .../wxapp/assets/libs/zanui/badge/index.wxss | 1 + .../wxapp/assets/libs/zanui/btn/index.wxss | 1 + .../assets/libs/zanui/capsule/index.wxml | 18 + .../assets/libs/zanui/capsule/index.wxss | 1 + .../wxapp/assets/libs/zanui/card/index.wxss | 1 + .../wxapp/assets/libs/zanui/cell/index.wxss | 1 + .../wxapp/assets/libs/zanui/col/index.wxss | 1 + .../wxapp/assets/libs/zanui/color/index.wxss | 1 + .../wxapp/assets/libs/zanui/common/helper.js | 76 + .../wxapp/assets/libs/zanui/dialog/index.js | 112 + .../wxapp/assets/libs/zanui/dialog/index.wxml | 22 + .../wxapp/assets/libs/zanui/dialog/index.wxss | 1 + .../wxapp/assets/libs/zanui/field/index.js | 38 + .../wxapp/assets/libs/zanui/field/index.wxml | 35 + .../wxapp/assets/libs/zanui/field/index.wxss | 1 + .../wxapp/assets/libs/zanui/helper/index.wxss | 1 + .../wxapp/assets/libs/zanui/icon/index.wxss | 1 + addons/cms/wxapp/assets/libs/zanui/index.js | 16 + addons/cms/wxapp/assets/libs/zanui/index.wxss | 1 + .../assets/libs/zanui/loadmore/index.wxml | 24 + .../assets/libs/zanui/loadmore/index.wxss | 1 + .../assets/libs/zanui/noticebar/index.js | 74 + .../assets/libs/zanui/noticebar/index.wxml | 16 + .../assets/libs/zanui/noticebar/index.wxss | 1 + .../wxapp/assets/libs/zanui/panel/index.wxss | 1 + .../wxapp/assets/libs/zanui/popup/index.wxss | 1 + .../wxapp/assets/libs/zanui/row/index.wxss | 1 + .../wxapp/assets/libs/zanui/select/index.js | 25 + .../wxapp/assets/libs/zanui/select/index.wxml | 43 + .../wxapp/assets/libs/zanui/select/index.wxss | 1 + .../wxapp/assets/libs/zanui/stepper/index.js | 61 + .../assets/libs/zanui/stepper/index.wxml | 28 + .../assets/libs/zanui/stepper/index.wxss | 1 + .../wxapp/assets/libs/zanui/steps/index.wxml | 15 + .../wxapp/assets/libs/zanui/steps/index.wxss | 1 + .../assets/libs/zanui/steps/wxss/step.wxss | 1 + .../assets/libs/zanui/steps/wxss/vstep.wxss | 1 + .../wxapp/assets/libs/zanui/switch/index.js | 25 + .../wxapp/assets/libs/zanui/switch/index.wxml | 15 + .../wxapp/assets/libs/zanui/switch/index.wxss | 1 + .../cms/wxapp/assets/libs/zanui/tab/index.js | 19 + .../wxapp/assets/libs/zanui/tab/index.wxml | 37 + .../wxapp/assets/libs/zanui/tab/index.wxss | 1 + .../wxapp/assets/libs/zanui/tag/index.wxss | 1 + .../wxapp/assets/libs/zanui/toast/index.js | 66 + .../wxapp/assets/libs/zanui/toast/index.wxml | 31 + .../wxapp/assets/libs/zanui/toast/index.wxss | 1 + .../wxapp/assets/libs/zanui/toptips/index.js | 39 + .../assets/libs/zanui/toptips/index.wxml | 3 + .../assets/libs/zanui/toptips/index.wxss | 1 + addons/cms/wxapp/assets/styles/base/fn.wxss | 5 + .../assets/styles/base/mixin/setArrow.wxss | 5 + .../assets/styles/base/mixin/setOnepx.wxss | 5 + .../wxapp/assets/styles/base/mixin/text.wxss | 5 + .../cms/wxapp/assets/styles/base/reset.wxss | 6 + .../assets/styles/base/variable/color.wxss | 5 + .../assets/styles/base/variable/global.wxss | 5 + .../styles/base/variable/weui-button.wxss | 5 + .../styles/base/variable/weui-cell.wxss | 5 + .../styles/base/variable/weui-dialog.wxss | 5 + .../styles/base/variable/weui-grid.wxss | 5 + .../assets/styles/base/variable/weui-msg.wxss | 5 + .../styles/base/variable/weui-progress.wxss | 5 + .../cms/wxapp/assets/styles/font-awesome.wxss | 2337 ++++ addons/cms/wxapp/assets/styles/weui.wxss | 1019 ++ .../styles/widget/weui-agree/weui-agree.wxss | 6 + .../widget/weui-animate/weui-animate.wxss | 6 + .../widget/weui-button/weui-button.wxss | 6 + .../styles/widget/weui-cell/weui-access.wxss | 6 + .../styles/widget/weui-cell/weui-cell.wxss | 6 + .../styles/widget/weui-cell/weui-check.wxss | 6 + .../styles/widget/weui-cell/weui-form.wxss | 6 + .../weui-form/weui-form-preview.wxss | 6 + .../weui-cell/weui-form/weui-form_common.wxss | 6 + .../weui-cell/weui-form/weui-select.wxss | 6 + .../weui-cell/weui-form/weui-vcode.wxss | 6 + .../styles/widget/weui-cell/weui-switch.wxss | 6 + .../widget/weui-cell/weui-uploader.wxss | 6 + .../styles/widget/weui-flex/weui-flex.wxss | 6 + .../widget/weui-footer/weui-footer.wxss | 6 + .../styles/widget/weui-grid/weui-grid.wxss | 6 + .../widget/weui-loading/weui-loading.wxss | 6 + .../widget/weui-media-box/weui-media-box.wxss | 6 + .../styles/widget/weui-page/weui-article.wxss | 6 + .../styles/widget/weui-page/weui-msg.wxss | 6 + .../styles/widget/weui-panel/weui-panel.wxss | 6 + .../widget/weui-progress/weui-progress.wxss | 6 + .../widget/weui-searchbar/weui-searchbar.wxss | 6 + .../styles/widget/weui-tab/weui-navbar.wxss | 6 + .../styles/widget/weui-tab/weui-tab.wxss | 6 + .../styles/widget/weui-tips/weui-badge.wxss | 6 + .../widget/weui-tips/weui-loadmore.wxss | 6 + addons/cms/wxapp/page/index/index.js | 90 + addons/cms/wxapp/page/index/index.json | 4 + addons/cms/wxapp/page/index/index.wxml | 62 + addons/cms/wxapp/page/index/index.wxss | 20 + addons/cms/wxapp/page/my/aboutus.js | 17 + addons/cms/wxapp/page/my/aboutus.json | 3 + addons/cms/wxapp/page/my/aboutus.wxml | 12 + addons/cms/wxapp/page/my/aboutus.wxss | 25 + addons/cms/wxapp/page/my/bind.js | 55 + addons/cms/wxapp/page/my/bind.json | 3 + addons/cms/wxapp/page/my/bind.wxml | 17 + addons/cms/wxapp/page/my/bind.wxss | 0 addons/cms/wxapp/page/my/comment.js | 58 + addons/cms/wxapp/page/my/comment.json | 3 + addons/cms/wxapp/page/my/comment.wxml | 37 + addons/cms/wxapp/page/my/comment.wxss | 31 + addons/cms/wxapp/page/my/index.js | 75 + addons/cms/wxapp/page/my/index.json | 3 + addons/cms/wxapp/page/my/index.wxml | 100 + addons/cms/wxapp/page/my/index.wxss | 88 + addons/cms/wxapp/page/my/profile.js | 68 + addons/cms/wxapp/page/my/profile.json | 3 + addons/cms/wxapp/page/my/profile.wxml | 29 + addons/cms/wxapp/page/my/profile.wxss | 5 + addons/cms/wxapp/page/my/setting.js | 81 + addons/cms/wxapp/page/my/setting.json | 3 + addons/cms/wxapp/page/my/setting.wxml | 11 + addons/cms/wxapp/page/my/setting.wxss | 1 + addons/cms/wxapp/page/news/detail.js | 117 + addons/cms/wxapp/page/news/detail.json | 3 + addons/cms/wxapp/page/news/detail.wxml | 105 + addons/cms/wxapp/page/news/detail.wxss | 196 + addons/cms/wxapp/page/news/index.js | 77 + addons/cms/wxapp/page/news/index.json | 4 + addons/cms/wxapp/page/news/index.wxml | 47 + addons/cms/wxapp/page/news/index.wxss | 0 addons/cms/wxapp/page/product/detail.js | 131 + addons/cms/wxapp/page/product/detail.json | 3 + addons/cms/wxapp/page/product/detail.wxml | 117 + addons/cms/wxapp/page/product/detail.wxss | 259 + addons/cms/wxapp/page/product/index.js | 77 + addons/cms/wxapp/page/product/index.json | 4 + addons/cms/wxapp/page/product/index.wxml | 32 + addons/cms/wxapp/page/product/index.wxss | 55 + addons/cms/wxapp/project.config.json | 35 + addons/cms/wxapp/utils/util.js | 19 + addons/third/Third.php | 31 + addons/third/config.php | 93 + addons/third/controller/Index.php | 101 + addons/third/info.ini | 8 + addons/third/install.sql | 18 + addons/third/library/Application.php | 67 + addons/third/library/Qq.php | 145 + addons/third/library/Service.php | 89 + addons/third/library/Wechat.php | 126 + addons/third/library/Weibo.php | 124 + addons/third/model/Third.php | 22 + addons/third/view/index/index.html | 41 + addons/umeditor/Umeditor.php | 31 + .../assets/dialogs/emotion/emotion.css | 87 + .../assets/dialogs/emotion/emotion.js | 272 + .../assets/dialogs/emotion/images/0.gif | Bin 0 -> 43 bytes .../assets/dialogs/emotion/images/bface.gif | Bin 0 -> 27167 bytes .../assets/dialogs/emotion/images/cface.gif | Bin 0 -> 8603 bytes .../assets/dialogs/emotion/images/fface.gif | Bin 0 -> 18479 bytes .../assets/dialogs/emotion/images/jxface2.gif | Bin 0 -> 40706 bytes .../emotion/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../assets/dialogs/emotion/images/tface.gif | Bin 0 -> 19805 bytes .../assets/dialogs/emotion/images/wface.gif | Bin 0 -> 49850 bytes .../assets/dialogs/emotion/images/yface.gif | Bin 0 -> 28409 bytes .../assets/dialogs/formula/formula.css | 32 + .../assets/dialogs/formula/formula.html | 212 + .../assets/dialogs/formula/formula.js | 124 + .../assets/dialogs/formula/images/formula.png | Bin 0 -> 19301 bytes .../umeditor/assets/dialogs/image/image.css | 42 + addons/umeditor/assets/dialogs/image/image.js | 448 + .../assets/dialogs/image/images/close.png | Bin 0 -> 1042 bytes .../assets/dialogs/image/images/upload1.png | Bin 0 -> 848 bytes .../assets/dialogs/image/images/upload2.png | Bin 0 -> 1910 bytes addons/umeditor/assets/dialogs/link/link.js | 73 + addons/umeditor/assets/dialogs/map/map.html | 148 + addons/umeditor/assets/dialogs/map/map.js | 263 + .../dialogs/video/images/center_focus.jpg | Bin 0 -> 11795 bytes .../dialogs/video/images/left_focus.jpg | Bin 0 -> 11423 bytes .../dialogs/video/images/none_focus.jpg | Bin 0 -> 11546 bytes .../dialogs/video/images/right_focus.jpg | Bin 0 -> 11334 bytes .../umeditor/assets/dialogs/video/video.css | 59 + addons/umeditor/assets/dialogs/video/video.js | 282 + addons/umeditor/assets/lang/en/en.js | 150 + .../assets/lang/en/images/addimage.png | Bin 0 -> 3373 bytes .../lang/en/images/alldeletebtnhoverskin.png | Bin 0 -> 743 bytes .../lang/en/images/alldeletebtnupskin.png | Bin 0 -> 743 bytes .../assets/lang/en/images/background.png | Bin 0 -> 3854 bytes .../umeditor/assets/lang/en/images/button.png | Bin 0 -> 4929 bytes .../umeditor/assets/lang/en/images/copy.png | Bin 0 -> 1222 bytes .../assets/lang/en/images/deletedisable.png | Bin 0 -> 649 bytes .../assets/lang/en/images/deleteenable.png | Bin 0 -> 664 bytes .../assets/lang/en/images/imglabel.png | Bin 0 -> 672 bytes .../assets/lang/en/images/listbackground.png | Bin 0 -> 3750 bytes .../assets/lang/en/images/localimage.png | Bin 0 -> 3083 bytes .../umeditor/assets/lang/en/images/music.png | Bin 0 -> 91561 bytes .../lang/en/images/rotateleftdisable.png | Bin 0 -> 719 bytes .../lang/en/images/rotateleftenable.png | Bin 0 -> 952 bytes .../lang/en/images/rotaterightdisable.png | Bin 0 -> 754 bytes .../lang/en/images/rotaterightenable.png | Bin 0 -> 1007 bytes .../umeditor/assets/lang/en/images/upload.png | Bin 0 -> 3941 bytes .../assets/lang/zh-cn/images/copy.png | Bin 0 -> 4319 bytes .../assets/lang/zh-cn/images/imglabel.png | Bin 0 -> 2973 bytes .../assets/lang/zh-cn/images/localimage.png | Bin 0 -> 6979 bytes .../assets/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes .../assets/lang/zh-cn/images/upload.png | Bin 0 -> 6608 bytes addons/umeditor/assets/lang/zh-cn/zh-cn.js | 150 + .../assets/themes/default/css/umeditor.css | 773 ++ .../themes/default/css/umeditor.min.css | 8 + .../assets/themes/default/images/caret.png | Bin 0 -> 293 bytes .../assets/themes/default/images/close.png | Bin 0 -> 291 bytes .../assets/themes/default/images/icons.gif | Bin 0 -> 20371 bytes .../assets/themes/default/images/icons.png | Bin 0 -> 41374 bytes .../assets/themes/default/images/ok.gif | Bin 0 -> 866 bytes .../assets/themes/default/images/pop-bg.png | Bin 0 -> 1003 bytes .../assets/themes/default/images/spacer.gif | Bin 0 -> 43 bytes .../themes/default/images/videologo.gif | Bin 0 -> 1604 bytes addons/umeditor/assets/umeditor.config.js | 316 + addons/umeditor/assets/umeditor.js | 11003 ++++++++++++++++ addons/umeditor/assets/umeditor.min.js | 1 + addons/umeditor/bootstrap.js | 111 + addons/umeditor/config.php | 5 + addons/umeditor/info.ini | 8 + 434 files changed, 39725 insertions(+), 1 deletion(-) create mode 100644 addons/cms/Cms.php create mode 100644 addons/cms/application/admin/controller/cms/Ajax.php create mode 100644 addons/cms/application/admin/controller/cms/Archives.php create mode 100644 addons/cms/application/admin/controller/cms/Block.php create mode 100644 addons/cms/application/admin/controller/cms/Channel.php create mode 100644 addons/cms/application/admin/controller/cms/Comment.php create mode 100644 addons/cms/application/admin/controller/cms/Fields.php create mode 100644 addons/cms/application/admin/controller/cms/Modelx.php create mode 100644 addons/cms/application/admin/controller/cms/Page.php create mode 100644 addons/cms/application/admin/controller/cms/Tags.php create mode 100644 addons/cms/application/admin/lang/zh-cn/cms/archives.php create mode 100644 addons/cms/application/admin/lang/zh-cn/cms/block.php create mode 100644 addons/cms/application/admin/lang/zh-cn/cms/channel.php create mode 100644 addons/cms/application/admin/lang/zh-cn/cms/comment.php create mode 100644 addons/cms/application/admin/lang/zh-cn/cms/fields.php create mode 100644 addons/cms/application/admin/lang/zh-cn/cms/modelx.php create mode 100644 addons/cms/application/admin/lang/zh-cn/cms/page.php create mode 100644 addons/cms/application/admin/lang/zh-cn/cms/tags.php create mode 100644 addons/cms/application/admin/model/Archives.php create mode 100644 addons/cms/application/admin/model/Block.php create mode 100644 addons/cms/application/admin/model/Channel.php create mode 100644 addons/cms/application/admin/model/Comment.php create mode 100644 addons/cms/application/admin/model/Fields.php create mode 100644 addons/cms/application/admin/model/Modelx.php create mode 100644 addons/cms/application/admin/model/Page.php create mode 100644 addons/cms/application/admin/model/Tags.php create mode 100644 addons/cms/application/admin/validate/Archives.php create mode 100644 addons/cms/application/admin/validate/Block.php create mode 100644 addons/cms/application/admin/validate/Channel.php create mode 100644 addons/cms/application/admin/validate/Comment.php create mode 100644 addons/cms/application/admin/validate/Fields.php create mode 100644 addons/cms/application/admin/validate/Modelx.php create mode 100644 addons/cms/application/admin/validate/Page.php create mode 100644 addons/cms/application/admin/validate/Tags.php create mode 100644 addons/cms/application/admin/view/cms/archives/add.html create mode 100644 addons/cms/application/admin/view/cms/archives/content.html create mode 100644 addons/cms/application/admin/view/cms/archives/edit.html create mode 100644 addons/cms/application/admin/view/cms/archives/fields.html create mode 100644 addons/cms/application/admin/view/cms/archives/index.html create mode 100644 addons/cms/application/admin/view/cms/archives/recyclebin.html create mode 100644 addons/cms/application/admin/view/cms/block/add.html create mode 100644 addons/cms/application/admin/view/cms/block/edit.html create mode 100644 addons/cms/application/admin/view/cms/block/index.html create mode 100644 addons/cms/application/admin/view/cms/channel/add.html create mode 100644 addons/cms/application/admin/view/cms/channel/edit.html create mode 100644 addons/cms/application/admin/view/cms/channel/index.html create mode 100644 addons/cms/application/admin/view/cms/comment/add.html create mode 100644 addons/cms/application/admin/view/cms/comment/edit.html create mode 100644 addons/cms/application/admin/view/cms/comment/index.html create mode 100644 addons/cms/application/admin/view/cms/fields/add.html create mode 100644 addons/cms/application/admin/view/cms/fields/edit.html create mode 100644 addons/cms/application/admin/view/cms/fields/index.html create mode 100644 addons/cms/application/admin/view/cms/modelx/add.html create mode 100644 addons/cms/application/admin/view/cms/modelx/edit.html create mode 100644 addons/cms/application/admin/view/cms/modelx/index.html create mode 100644 addons/cms/application/admin/view/cms/modelx/tpl.html create mode 100644 addons/cms/application/admin/view/cms/page/add.html create mode 100644 addons/cms/application/admin/view/cms/page/edit.html create mode 100644 addons/cms/application/admin/view/cms/page/index.html create mode 100644 addons/cms/application/admin/view/cms/tags/add.html create mode 100644 addons/cms/application/admin/view/cms/tags/edit.html create mode 100644 addons/cms/application/admin/view/cms/tags/index.html create mode 100644 addons/cms/assets/css/common.css create mode 100644 addons/cms/assets/css/font-awesome.min.css create mode 100644 addons/cms/assets/css/jquery.colorbox.css create mode 100644 addons/cms/assets/css/jquery.justifiedGallery.min.css create mode 100644 addons/cms/assets/css/swipebox.min.css create mode 100644 addons/cms/assets/fonts/FontAwesome.otf create mode 100644 addons/cms/assets/fonts/fontawesome-webfont.eot create mode 100644 addons/cms/assets/fonts/fontawesome-webfont.svg create mode 100644 addons/cms/assets/fonts/fontawesome-webfont.ttf create mode 100644 addons/cms/assets/fonts/fontawesome-webfont.woff create mode 100644 addons/cms/assets/fonts/fontawesome-webfont.woff2 create mode 100644 addons/cms/assets/img/banner/1.jpg create mode 100644 addons/cms/assets/img/border.png create mode 100644 addons/cms/assets/img/focus/1.jpg create mode 100644 addons/cms/assets/img/focus/2.jpg create mode 100644 addons/cms/assets/img/focus/3.jpg create mode 100644 addons/cms/assets/img/focus/5.jpg create mode 100644 addons/cms/assets/img/icons.png create mode 100644 addons/cms/assets/img/icons.svg create mode 100644 addons/cms/assets/img/loader.gif create mode 100644 addons/cms/assets/img/loading.gif create mode 100644 addons/cms/assets/img/logo.png create mode 100644 addons/cms/assets/img/noimage.jpg create mode 100644 addons/cms/assets/img/overlay.png create mode 100644 addons/cms/assets/img/qrcode.png create mode 100644 addons/cms/assets/img/sidebar/1.jpg create mode 100644 addons/cms/assets/img/sidebar/2.jpg create mode 100644 addons/cms/assets/js/bootstrap-typeahead.min.js create mode 100644 addons/cms/assets/js/common.js create mode 100644 addons/cms/assets/js/jquery.justifiedGallery.min.js create mode 100644 addons/cms/assets/js/jquery.swipebox.min.js create mode 100644 addons/cms/assets/js/layerloader.min.js create mode 100644 addons/cms/assets/less/common.less create mode 100644 addons/cms/config.php create mode 100644 addons/cms/controller/Api.php create mode 100644 addons/cms/controller/Archives.php create mode 100644 addons/cms/controller/Base.php create mode 100644 addons/cms/controller/Channel.php create mode 100644 addons/cms/controller/Comment.php create mode 100644 addons/cms/controller/Index.php create mode 100644 addons/cms/controller/Page.php create mode 100644 addons/cms/controller/Search.php create mode 100644 addons/cms/controller/Tags.php create mode 100644 addons/cms/controller/wxapp/Archives.php create mode 100644 addons/cms/controller/wxapp/Base.php create mode 100644 addons/cms/controller/wxapp/Comment.php create mode 100644 addons/cms/controller/wxapp/Common.php create mode 100644 addons/cms/controller/wxapp/Index.php create mode 100644 addons/cms/controller/wxapp/My.php create mode 100644 addons/cms/controller/wxapp/User.php create mode 100644 addons/cms/info.ini create mode 100644 addons/cms/install.sql create mode 100644 addons/cms/lang/zh-cn.php create mode 100644 addons/cms/library/Alter.php create mode 100644 addons/cms/library/Bootstrap.php create mode 100644 addons/cms/model/Archives.php create mode 100644 addons/cms/model/Block.php create mode 100644 addons/cms/model/Channel.php create mode 100644 addons/cms/model/Comment.php create mode 100644 addons/cms/model/Fields.php create mode 100644 addons/cms/model/Modelx.php create mode 100644 addons/cms/model/Page.php create mode 100644 addons/cms/model/Tags.php create mode 100644 addons/cms/public/assets/js/backend/cms/archives.js create mode 100644 addons/cms/public/assets/js/backend/cms/block.js create mode 100644 addons/cms/public/assets/js/backend/cms/channel.js create mode 100644 addons/cms/public/assets/js/backend/cms/comment.js create mode 100644 addons/cms/public/assets/js/backend/cms/fields.js create mode 100644 addons/cms/public/assets/js/backend/cms/modelx.js create mode 100644 addons/cms/public/assets/js/backend/cms/page.js create mode 100644 addons/cms/public/assets/js/backend/cms/tags.js create mode 100644 addons/cms/taglib/Cms.php create mode 100644 addons/cms/view/default/channel.html create mode 100644 addons/cms/view/default/common/comment.html create mode 100644 addons/cms/view/default/common/item.html create mode 100644 addons/cms/view/default/common/layout.html create mode 100644 addons/cms/view/default/common/sidebar.html create mode 100644 addons/cms/view/default/index.html create mode 100644 addons/cms/view/default/list_news.html create mode 100644 addons/cms/view/default/list_product.html create mode 100644 addons/cms/view/default/page.html create mode 100644 addons/cms/view/default/search.html create mode 100644 addons/cms/view/default/show_news.html create mode 100644 addons/cms/view/default/show_product.html create mode 100644 addons/cms/view/default/tags.html create mode 100644 addons/cms/wxapp/app.js create mode 100644 addons/cms/wxapp/app.json create mode 100644 addons/cms/wxapp/app.wxss create mode 100644 addons/cms/wxapp/assets/images/avatar.png create mode 100644 addons/cms/wxapp/assets/images/error.png create mode 100644 addons/cms/wxapp/assets/images/ok.png create mode 100644 addons/cms/wxapp/assets/images/share.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/addon-hl.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/addon.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/forum-hl.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/forum.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/index-hl.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/index.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/my-hl.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/my.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/store-hl.png create mode 100644 addons/cms/wxapp/assets/images/tabbar/store.png create mode 100644 addons/cms/wxapp/assets/images/warning.png create mode 100644 addons/cms/wxapp/assets/libs/WxValidate.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/entry.wxml create mode 100644 addons/cms/wxapp/assets/libs/towxml/lib/html2json.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/lib/markdown-it.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/main.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/outTemplate.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/package.json create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/highlight.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/index.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/bash.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/coffeescript.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/css.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/dns.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/dos.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/erlang.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/go.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/htmlbars.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/http.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/java.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/javascript.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/json.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/less.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/makefile.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/markdown.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/nginx.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/php.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/powershell.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/python.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/ruby.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/scss.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/shell.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/sql.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/swift.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/languages/typescript.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/style/github.wxss create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/hljs/style/monokai.wxss create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/markdown-it-emoji.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/markdown-it-ins.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/markdown-it-mark.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/markdown-it-sub.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/plugins/markdown-it-sup.js create mode 100644 addons/cms/wxapp/assets/libs/towxml/renderTemplate.wxml create mode 100644 addons/cms/wxapp/assets/libs/towxml/style/main.wxss create mode 100644 addons/cms/wxapp/assets/libs/towxml/style/theme/dark.wxss create mode 100644 addons/cms/wxapp/assets/libs/towxml/style/theme/light.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/actionsheet/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/actionsheet/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/actionsheet/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/badge/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/btn/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/capsule/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/capsule/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/card/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/cell/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/col/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/color/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/common/helper.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/dialog/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/dialog/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/dialog/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/field/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/field/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/field/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/helper/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/icon/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/loadmore/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/loadmore/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/noticebar/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/noticebar/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/noticebar/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/panel/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/popup/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/row/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/select/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/select/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/select/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/stepper/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/stepper/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/stepper/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/steps/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/steps/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/steps/wxss/step.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/steps/wxss/vstep.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/switch/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/switch/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/switch/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/tab/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/tab/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/tab/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/tag/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/toast/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/toast/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/toast/index.wxss create mode 100644 addons/cms/wxapp/assets/libs/zanui/toptips/index.js create mode 100644 addons/cms/wxapp/assets/libs/zanui/toptips/index.wxml create mode 100644 addons/cms/wxapp/assets/libs/zanui/toptips/index.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/fn.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/mixin/setArrow.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/mixin/setOnepx.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/mixin/text.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/reset.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/variable/color.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/variable/global.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/variable/weui-button.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/variable/weui-cell.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/variable/weui-dialog.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/variable/weui-grid.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/variable/weui-msg.wxss create mode 100644 addons/cms/wxapp/assets/styles/base/variable/weui-progress.wxss create mode 100644 addons/cms/wxapp/assets/styles/font-awesome.wxss create mode 100644 addons/cms/wxapp/assets/styles/weui.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-agree/weui-agree.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-animate/weui-animate.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-button/weui-button.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-access.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-cell.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-check.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-form.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-form/weui-form-preview.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-form/weui-form_common.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-form/weui-select.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-form/weui-vcode.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-switch.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-cell/weui-uploader.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-flex/weui-flex.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-footer/weui-footer.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-grid/weui-grid.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-loading/weui-loading.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-media-box/weui-media-box.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-page/weui-article.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-page/weui-msg.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-panel/weui-panel.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-progress/weui-progress.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-searchbar/weui-searchbar.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-tab/weui-navbar.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-tab/weui-tab.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-tips/weui-badge.wxss create mode 100644 addons/cms/wxapp/assets/styles/widget/weui-tips/weui-loadmore.wxss create mode 100644 addons/cms/wxapp/page/index/index.js create mode 100644 addons/cms/wxapp/page/index/index.json create mode 100644 addons/cms/wxapp/page/index/index.wxml create mode 100644 addons/cms/wxapp/page/index/index.wxss create mode 100644 addons/cms/wxapp/page/my/aboutus.js create mode 100644 addons/cms/wxapp/page/my/aboutus.json create mode 100644 addons/cms/wxapp/page/my/aboutus.wxml create mode 100644 addons/cms/wxapp/page/my/aboutus.wxss create mode 100644 addons/cms/wxapp/page/my/bind.js create mode 100644 addons/cms/wxapp/page/my/bind.json create mode 100644 addons/cms/wxapp/page/my/bind.wxml create mode 100644 addons/cms/wxapp/page/my/bind.wxss create mode 100644 addons/cms/wxapp/page/my/comment.js create mode 100644 addons/cms/wxapp/page/my/comment.json create mode 100644 addons/cms/wxapp/page/my/comment.wxml create mode 100644 addons/cms/wxapp/page/my/comment.wxss create mode 100644 addons/cms/wxapp/page/my/index.js create mode 100644 addons/cms/wxapp/page/my/index.json create mode 100644 addons/cms/wxapp/page/my/index.wxml create mode 100644 addons/cms/wxapp/page/my/index.wxss create mode 100644 addons/cms/wxapp/page/my/profile.js create mode 100644 addons/cms/wxapp/page/my/profile.json create mode 100644 addons/cms/wxapp/page/my/profile.wxml create mode 100644 addons/cms/wxapp/page/my/profile.wxss create mode 100644 addons/cms/wxapp/page/my/setting.js create mode 100644 addons/cms/wxapp/page/my/setting.json create mode 100644 addons/cms/wxapp/page/my/setting.wxml create mode 100644 addons/cms/wxapp/page/my/setting.wxss create mode 100644 addons/cms/wxapp/page/news/detail.js create mode 100644 addons/cms/wxapp/page/news/detail.json create mode 100644 addons/cms/wxapp/page/news/detail.wxml create mode 100644 addons/cms/wxapp/page/news/detail.wxss create mode 100644 addons/cms/wxapp/page/news/index.js create mode 100644 addons/cms/wxapp/page/news/index.json create mode 100644 addons/cms/wxapp/page/news/index.wxml create mode 100644 addons/cms/wxapp/page/news/index.wxss create mode 100644 addons/cms/wxapp/page/product/detail.js create mode 100644 addons/cms/wxapp/page/product/detail.json create mode 100644 addons/cms/wxapp/page/product/detail.wxml create mode 100644 addons/cms/wxapp/page/product/detail.wxss create mode 100644 addons/cms/wxapp/page/product/index.js create mode 100644 addons/cms/wxapp/page/product/index.json create mode 100644 addons/cms/wxapp/page/product/index.wxml create mode 100644 addons/cms/wxapp/page/product/index.wxss create mode 100644 addons/cms/wxapp/project.config.json create mode 100644 addons/cms/wxapp/utils/util.js create mode 100644 addons/third/Third.php create mode 100644 addons/third/config.php create mode 100644 addons/third/controller/Index.php create mode 100644 addons/third/info.ini create mode 100644 addons/third/install.sql create mode 100644 addons/third/library/Application.php create mode 100644 addons/third/library/Qq.php create mode 100644 addons/third/library/Service.php create mode 100644 addons/third/library/Wechat.php create mode 100644 addons/third/library/Weibo.php create mode 100644 addons/third/model/Third.php create mode 100644 addons/third/view/index/index.html create mode 100644 addons/umeditor/Umeditor.php create mode 100644 addons/umeditor/assets/dialogs/emotion/emotion.css create mode 100644 addons/umeditor/assets/dialogs/emotion/emotion.js create mode 100644 addons/umeditor/assets/dialogs/emotion/images/0.gif create mode 100644 addons/umeditor/assets/dialogs/emotion/images/bface.gif create mode 100644 addons/umeditor/assets/dialogs/emotion/images/cface.gif create mode 100644 addons/umeditor/assets/dialogs/emotion/images/fface.gif create mode 100644 addons/umeditor/assets/dialogs/emotion/images/jxface2.gif create mode 100644 addons/umeditor/assets/dialogs/emotion/images/neweditor-tab-bg.png create mode 100644 addons/umeditor/assets/dialogs/emotion/images/tface.gif create mode 100644 addons/umeditor/assets/dialogs/emotion/images/wface.gif create mode 100644 addons/umeditor/assets/dialogs/emotion/images/yface.gif create mode 100644 addons/umeditor/assets/dialogs/formula/formula.css create mode 100644 addons/umeditor/assets/dialogs/formula/formula.html create mode 100644 addons/umeditor/assets/dialogs/formula/formula.js create mode 100644 addons/umeditor/assets/dialogs/formula/images/formula.png create mode 100644 addons/umeditor/assets/dialogs/image/image.css create mode 100644 addons/umeditor/assets/dialogs/image/image.js create mode 100644 addons/umeditor/assets/dialogs/image/images/close.png create mode 100644 addons/umeditor/assets/dialogs/image/images/upload1.png create mode 100644 addons/umeditor/assets/dialogs/image/images/upload2.png create mode 100644 addons/umeditor/assets/dialogs/link/link.js create mode 100644 addons/umeditor/assets/dialogs/map/map.html create mode 100644 addons/umeditor/assets/dialogs/map/map.js create mode 100644 addons/umeditor/assets/dialogs/video/images/center_focus.jpg create mode 100644 addons/umeditor/assets/dialogs/video/images/left_focus.jpg create mode 100644 addons/umeditor/assets/dialogs/video/images/none_focus.jpg create mode 100644 addons/umeditor/assets/dialogs/video/images/right_focus.jpg create mode 100644 addons/umeditor/assets/dialogs/video/video.css create mode 100644 addons/umeditor/assets/dialogs/video/video.js create mode 100644 addons/umeditor/assets/lang/en/en.js create mode 100644 addons/umeditor/assets/lang/en/images/addimage.png create mode 100644 addons/umeditor/assets/lang/en/images/alldeletebtnhoverskin.png create mode 100644 addons/umeditor/assets/lang/en/images/alldeletebtnupskin.png create mode 100644 addons/umeditor/assets/lang/en/images/background.png create mode 100644 addons/umeditor/assets/lang/en/images/button.png create mode 100644 addons/umeditor/assets/lang/en/images/copy.png create mode 100644 addons/umeditor/assets/lang/en/images/deletedisable.png create mode 100644 addons/umeditor/assets/lang/en/images/deleteenable.png create mode 100644 addons/umeditor/assets/lang/en/images/imglabel.png create mode 100644 addons/umeditor/assets/lang/en/images/listbackground.png create mode 100644 addons/umeditor/assets/lang/en/images/localimage.png create mode 100644 addons/umeditor/assets/lang/en/images/music.png create mode 100644 addons/umeditor/assets/lang/en/images/rotateleftdisable.png create mode 100644 addons/umeditor/assets/lang/en/images/rotateleftenable.png create mode 100644 addons/umeditor/assets/lang/en/images/rotaterightdisable.png create mode 100644 addons/umeditor/assets/lang/en/images/rotaterightenable.png create mode 100644 addons/umeditor/assets/lang/en/images/upload.png create mode 100644 addons/umeditor/assets/lang/zh-cn/images/copy.png create mode 100644 addons/umeditor/assets/lang/zh-cn/images/imglabel.png create mode 100644 addons/umeditor/assets/lang/zh-cn/images/localimage.png create mode 100644 addons/umeditor/assets/lang/zh-cn/images/music.png create mode 100644 addons/umeditor/assets/lang/zh-cn/images/upload.png create mode 100644 addons/umeditor/assets/lang/zh-cn/zh-cn.js create mode 100644 addons/umeditor/assets/themes/default/css/umeditor.css create mode 100644 addons/umeditor/assets/themes/default/css/umeditor.min.css create mode 100644 addons/umeditor/assets/themes/default/images/caret.png create mode 100644 addons/umeditor/assets/themes/default/images/close.png create mode 100644 addons/umeditor/assets/themes/default/images/icons.gif create mode 100644 addons/umeditor/assets/themes/default/images/icons.png create mode 100644 addons/umeditor/assets/themes/default/images/ok.gif create mode 100644 addons/umeditor/assets/themes/default/images/pop-bg.png create mode 100644 addons/umeditor/assets/themes/default/images/spacer.gif create mode 100644 addons/umeditor/assets/themes/default/images/videologo.gif create mode 100644 addons/umeditor/assets/umeditor.config.js create mode 100644 addons/umeditor/assets/umeditor.js create mode 100644 addons/umeditor/assets/umeditor.min.js create mode 100644 addons/umeditor/bootstrap.js create mode 100644 addons/umeditor/config.php create mode 100644 addons/umeditor/info.ini diff --git a/.gitignore b/.gitignore index 1962050f5..3d20590a5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ /thinkphp/ /vendor/ /runtime/* -/addons/* /application/admin/command/Install/*.lock /public/assets/libs/ /public/assets/addons/* diff --git a/addons/cms/Cms.php b/addons/cms/Cms.php new file mode 100644 index 000000000..7ddcb0cd6 --- /dev/null +++ b/addons/cms/Cms.php @@ -0,0 +1,162 @@ + 'cms', + 'title' => 'CMS管理', + 'sublist' => [ + [ + 'name' => 'cms/archives', + 'title' => '内容管理', + 'icon' => 'fa fa-file-text-o', + 'sublist' => [ + ['name' => 'cms/archives/index', 'title' => '查看'], + ['name' => 'cms/archives/content', 'title' => '副表'], + ['name' => 'cms/archives/add', 'title' => '添加'], + ['name' => 'cms/archives/edit', 'title' => '修改'], + ['name' => 'cms/archives/del', 'title' => '删除'], + ['name' => 'cms/archives/multi', 'title' => '批量更新'], + ] + ], + [ + 'name' => 'cms/channel', + 'title' => '栏目管理', + 'icon' => 'fa fa-list', + 'sublist' => [ + ['name' => 'cms/channel/index', 'title' => '查看'], + ['name' => 'cms/channel/add', 'title' => '添加'], + ['name' => 'cms/channel/edit', 'title' => '修改'], + ['name' => 'cms/channel/del', 'title' => '删除'], + ['name' => 'cms/channel/multi', 'title' => '批量更新'], + ] + ], + [ + 'name' => 'cms/modelx', + 'title' => '模型管理', + 'icon' => 'fa fa-th', + 'sublist' => [ + ['name' => 'cms/modelx/index', 'title' => '查看'], + ['name' => 'cms/modelx/add', 'title' => '添加'], + ['name' => 'cms/modelx/edit', 'title' => '修改'], + ['name' => 'cms/modelx/del', 'title' => '删除'], + ['name' => 'cms/modelx/multi', 'title' => '批量更新'], + [ + 'name' => 'cms/fields', + 'title' => '字段管理', + 'icon' => 'fa fa-fields', + 'ismenu' => 0, + 'sublist' => [ + ['name' => 'cms/fields/index', 'title' => '查看'], + ['name' => 'cms/fields/add', 'title' => '添加'], + ['name' => 'cms/fields/edit', 'title' => '修改'], + ['name' => 'cms/fields/del', 'title' => '删除'], + ['name' => 'cms/fields/multi', 'title' => '批量更新'], + ] + ] + ] + ], + [ + 'name' => 'cms/tags', + 'title' => '标签管理', + 'icon' => 'fa fa-tags', + 'sublist' => [ + ['name' => 'cms/tags/index', 'title' => '查看'], + ['name' => 'cms/tags/add', 'title' => '添加'], + ['name' => 'cms/tags/edit', 'title' => '修改'], + ['name' => 'cms/tags/del', 'title' => '删除'], + ['name' => 'cms/tags/multi', 'title' => '批量更新'], + ] + ], + [ + 'name' => 'cms/block', + 'title' => '区块管理', + 'icon' => 'fa fa-th-large', + 'sublist' => [ + ['name' => 'cms/block/index', 'title' => '查看'], + ['name' => 'cms/block/add', 'title' => '添加'], + ['name' => 'cms/block/edit', 'title' => '修改'], + ['name' => 'cms/block/del', 'title' => '删除'], + ['name' => 'cms/block/multi', 'title' => '批量更新'], + ] + ], + [ + 'name' => 'cms/page', + 'title' => '单页管理', + 'icon' => 'fa fa-file', + 'sublist' => [ + ['name' => 'cms/page/index', 'title' => '查看'], + ['name' => 'cms/page/add', 'title' => '添加'], + ['name' => 'cms/page/edit', 'title' => '修改'], + ['name' => 'cms/page/del', 'title' => '删除'], + ['name' => 'cms/page/multi', 'title' => '批量更新'], + ] + ], + [ + 'name' => 'cms/comment', + 'title' => '评论管理', + 'icon' => 'fa fa-comment', + 'sublist' => [ + ['name' => 'cms/comment/index', 'title' => '查看'], + ['name' => 'cms/comment/add', 'title' => '添加'], + ['name' => 'cms/comment/edit', 'title' => '修改'], + ['name' => 'cms/comment/del', 'title' => '删除'], + ['name' => 'cms/comment/multi', 'title' => '批量更新'], + ] + ] + ] + ] + ]; + Menu::create($menu); + return true; + } + + /** + * 插件卸载方法 + * @return bool + */ + public function uninstall() + { + Menu::delete('cms'); + return true; + } + + /** + * 插件启用方法 + */ + public function enable() + { + Menu::enable('cms'); + } + + /** + * 插件禁用方法 + */ + public function disable() + { + Menu::disable('cms'); + } + + public function addonAfterUpgrade() + { + + } + +} diff --git a/addons/cms/application/admin/controller/cms/Ajax.php b/addons/cms/application/admin/controller/cms/Ajax.php new file mode 100644 index 000000000..f937fa153 --- /dev/null +++ b/addons/cms/application/admin/controller/cms/Ajax.php @@ -0,0 +1,59 @@ +request->request("keyValue"); + if (!$keyValue) { + $name = $this->request->request("name"); + if ($name) { + $files[] = ['name' => $name . '.html']; + } + //设置过滤方法 + $this->request->filter(['strip_tags']); + $config = get_addon_config('cms'); + $themeDir = ADDON_PATH . 'cms' . DS . 'view' . DS . $config['theme'] . DS; + $dh = opendir($themeDir); + while (false !== ($filename = readdir($dh))) { + if ($filename == '.' || $filename == '..') + continue; + $files[] = ['name' => $filename]; + } + } else { + $files[] = ['name' => $keyValue]; + } + return $result = ['total' => count($files), 'list' => $files]; + } + +} diff --git a/addons/cms/application/admin/controller/cms/Archives.php b/addons/cms/application/admin/controller/cms/Archives.php new file mode 100644 index 000000000..7c27d9044 --- /dev/null +++ b/addons/cms/application/admin/controller/cms/Archives.php @@ -0,0 +1,360 @@ +model = model('Archives'); + + $channelList = []; + $disabledIds = []; + $all = collection(Channel::order("weigh desc,id desc")->select())->toArray(); + foreach ($all as $k => $v) { + $state = ['opened' => true]; + if ($v['type'] != 'list') { + $disabledIds[] = $v['id']; + } + if ($v['type'] == 'link') { + $state['checkbox_disabled'] = true; + } + $channelList[] = [ + 'id' => $v['id'], + 'parent' => $v['parent_id'] ? $v['parent_id'] : '#', + 'text' => __($v['name']), + 'type' => $v['type'], + 'state' => $state + ]; + } + $tree = Tree::instance()->init($all, 'parent_id'); + $channelOptions = $tree->getTree(0, "", '', $disabledIds); + $this->view->assign('channelOptions', $channelOptions); + $this->assignconfig('channelList', $channelList); + + $this->view->assign("flagList", $this->model->getFlagList()); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + /** + * 查看 + */ + public function index() + { + //设置过滤方法 + $this->request->filter(['strip_tags']); + if ($this->request->isAjax()) { + $this->relationSearch = TRUE; + //如果发送的来源是Selectpage,则转发到Selectpage + if ($this->request->request('keyField')) { + return $this->selectpage(); + } + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + $total = $this->model + ->with('Channel') + ->where($where) + ->order($sort, $order) + ->count(); + + $list = $this->model + ->with('Channel') + ->where($where) + ->order($sort, $order) + ->limit($offset, $limit) + ->select(); + + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + + $modelList = \app\admin\model\Modelx::all(); + $this->view->assign('modelList', $modelList); + return $this->view->fetch(); + } + + /** + * 副表内容 + */ + public function content($model_id = null) + { + $model = \app\admin\model\Modelx::get($model_id); + if (!$model) { + $this->error('未找到对应模型'); + } + $fieldsList = \app\admin\model\Fields::where('model_id', $model['id'])->where('type', '<>', 'text')->select(); + + //设置过滤方法 + $this->request->filter(['strip_tags']); + if ($this->request->isAjax()) { + //如果发送的来源是Selectpage,则转发到Selectpage + if ($this->request->request('keyField')) { + return $this->selectpage(); + } + $fields = []; + foreach ($fieldsList as $index => $item) { + $fields[] = "addon." . $item['name']; + } + $table = $this->model->getTable(); + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + $sort = 'main.id'; + $total = Db::table($table) + ->alias('main') + ->join('cms_channel channel', 'channel.id=main.channel_id', 'LEFT') + ->join($model['table'] . ' addon', 'addon.id=main.id', 'LEFT') + ->field('main.id,main.channel_id,main.title,channel.name as channel_name,addon.id as aid' . ($fields ? ',' . implode(',', $fields) : '')) + ->where($where) + ->order($sort, $order) + ->count(); + + $list = Db::table($table) + ->alias('main') + ->join('cms_channel channel', 'channel.id=main.channel_id', 'LEFT') + ->join($model['table'] . ' addon', 'addon.id=main.id', 'LEFT') + ->field('main.id,main.channel_id,main.title,channel.name as channel_name,addon.id as aid' . ($fields ? ',' . implode(',', $fields) : '')) + ->where($where) + ->order($sort, $order) + ->limit($offset, $limit) + ->select(); + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + $fields = []; + foreach ($fieldsList as $index => $item) { + $fields[] = ['field' => $item['name'], 'title' => $item['title'], 'type' => $item['type'], 'content' => $item['content_list']]; + } + $this->assignconfig('fields', $fields); + $this->view->assign('fieldsList', $fieldsList); + $this->view->assign('model', $model); + $this->assignconfig('model_id', $model_id); + return $this->view->fetch(); + } + + /** + * 编辑 + * + * @param mixed $ids + */ + public function edit($ids = NULL) + { + $row = $this->model->get($ids); + if (!$row) + $this->error(__('No Results were found')); + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds)) { + if (!in_array($row[$this->dataLimitField], $adminIds)) { + $this->error(__('You have no permission')); + } + } + if ($this->request->isPost()) { + return parent::edit($ids); + } + $channel = Channel::get($row['channel_id']); + if (!$channel) { + $this->error(__('No specified channel found')); + } + $model = \app\admin\model\Modelx::get($channel['model_id']); + if (!$model) { + $this->error(__('No specified model found')); + } + $addon = db($model['table'])->where('id', $row['id'])->find(); + if ($addon) { + $row = array_merge($row->toArray(), $addon); + } + + $all = collection(Channel::order("weigh desc,id desc")->select())->toArray(); + foreach ($all as $k => $v) { + if ($v['type'] != 'list' || $v['model_id'] != $channel['model_id']) { + $disabledIds[] = $v['id']; + } + } + $tree = Tree::instance()->init($all, 'parent_id'); + $channelOptions = $tree->getTree(0, "", $row['channel_id'], $disabledIds); + $this->view->assign('channelOptions', $channelOptions); + $this->view->assign("row", $row); + return $this->view->fetch(); + } + + /** + * 删除 + * @param mixed $ids + */ + public function del($ids = "") + { + \app\admin\model\Archives::event('after_delete', function ($row) { + Channel::where('id', $row['channel_id'])->where('items', '>', 0)->setDec('items'); + }); + return parent::del($ids); + } + + /** + * 还原 + * @param mixed $ids + */ + public function restore($ids = "") + { + $pk = $this->model->getPk(); + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds)) { + $this->model->where($this->dataLimitField, 'in', $adminIds); + } + if ($ids) { + $this->model->where($pk, 'in', $ids); + } + $archivesChannelIds = $this->model->onlyTrashed()->column('id,channel_id'); + $archivesChannelIds = array_filter($archivesChannelIds); + $this->model->where('id', 'in', array_keys($archivesChannelIds)); + $count = $this->model->restore('1=1'); + if ($count) { + $channelNums = array_count_values($archivesChannelIds); + foreach ($channelNums as $k => $v) { + Channel::where('id', $k)->setInc('items', $v); + } + $this->success(); + } + $this->error(__('No rows were updated')); + + } + + /** + * 移动 + */ + public function move($ids = "") + { + if ($ids) { + $channel_id = $this->request->post('channel_id'); + $pk = $this->model->getPk(); + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds)) { + $this->model->where($this->dataLimitField, 'in', $adminIds); + } + $this->model->where($pk, 'in', $ids); + $channel = Channel::get($channel_id); + if ($channel && $channel['type'] === 'list') { + $channelNums = \app\admin\model\Archives:: + with('channel') + ->where('archives.' . $pk, 'in', $ids) + ->where('channel_id', '<>', $channel['id']) + ->field('channel_id,COUNT(*) AS nums') + ->group('channel_id') + ->select(); + $result = $this->model + ->where('model_id', '=', $channel['model_id']) + ->where('channel_id', '<>', $channel['id']) + ->update(['channel_id' => $channel_id]); + if ($result) { + $count = 0; + foreach ($channelNums as $k => $v) { + if ($v['channel']) { + Channel::where('id', $v['channel_id'])->where('items', '>', 0)->setDec('items', min($v['channel']['items'], $v['nums'])); + } + $count += $v['nums']; + } + Channel::where('id', $channel_id)->setInc('items', $count); + $this->success(); + } else { + $this->error(__('No rows were updated')); + } + } else { + $this->error(__('No rows were updated')); + } + $this->error(__('Parameter %s can not be empty', 'ids')); + } + } + + /** + * 获取栏目列表 + * @internal + */ + public function get_channel_fields() + { + $this->view->engine->layout(false); + $channel_id = $this->request->post('channel_id'); + $archives_id = $this->request->post('archives_id'); + $channel = Channel::get($channel_id, 'model'); + if ($channel && $channel['type'] === 'list') { + + $values = []; + if ($archives_id) { + $values = db($channel['model']['table'])->where('id', $archives_id)->find(); + } + + $fields = \app\admin\model\Fields::where('model_id', $channel['model_id']) + ->order('weigh desc,id desc') + ->select(); + foreach ($fields as $k => $v) { + $v->value = isset($values[$v['name']]) ? $values[$v['name']] : ''; + $v->rule = str_replace(',', '; ', $v->rule); + if (in_array($v->type, ['checkbox', 'lists', 'images'])) { + $checked = ''; + if ($v['minimum'] && $v['maximum']) + $checked = "{$v['minimum']}~{$v['maximum']}"; + else if ($v['minimum']) + $checked = "{$v['minimum']}~"; + else if ($v['maximum']) + $checked = "~{$v['maximum']}"; + if ($checked) + $v->rule .= (';checked(' . $checked . ')'); + } + if (in_array($v->type, ['checkbox', 'radio']) && stripos($v->rule, 'required') !== false) { + $v->rule = str_replace('required', 'checked', $v->rule); + } + if (in_array($v->type, ['selects'])) { + $v->extend .= (' ' . 'data-max-options="' . $v['maximum'] . '"'); + } + } + + $this->view->assign('fields', $fields); + $this->view->assign('values', $values); + $this->success('', null, ['html' => $this->view->fetch('fields')]); + } else { + $this->error(__('Please select channel')); + } + $this->error(__('Parameter %s can not be empty', 'ids')); + } + + /** + * 检测元素是否可用 + * @internal + */ + public function check_element_available() + { + $id = $this->request->request('id'); + $name = $this->request->request('name'); + $value = $this->request->request('value'); + $name = substr($name, 4, -1); + if (!$name) { + $this->error(__('Parameter %s can not be empty', 'name')); + } + if ($id) { + $this->model->where('id', '<>', $id); + } + $exist = $this->model->where($name, $value)->find(); + if ($exist) { + $this->error(__('The data already exist')); + } else { + $this->success(); + } + } + +} diff --git a/addons/cms/application/admin/controller/cms/Block.php b/addons/cms/application/admin/controller/cms/Block.php new file mode 100644 index 000000000..800ac737f --- /dev/null +++ b/addons/cms/application/admin/controller/cms/Block.php @@ -0,0 +1,55 @@ +model = model('Block'); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + public function selectpage_type() + { + $list = []; + $word = (array)$this->request->request("q_word/a"); + $field = $this->request->request('showField'); + $keyValue = $this->request->request('keyValue'); + if (!$keyValue) { + if (array_filter($word)) { + foreach ($word as $k => $v) { + $list[] = ['id' => $v, $field => $v]; + } + } + $typeArr = \app\admin\model\Block::column('type'); + $typeArr = array_unique($typeArr); + foreach ($typeArr as $index => $item) { + $list[] = ['id' => $item, $field => $item]; + } + } else { + $list[] = ['id' => $keyValue, $field => $keyValue]; + } + return json(['total' => count($list), 'list' => $list]); + } + + public function import() + { + return parent::import(); + } + +} diff --git a/addons/cms/application/admin/controller/cms/Channel.php b/addons/cms/application/admin/controller/cms/Channel.php new file mode 100644 index 000000000..50c08e27b --- /dev/null +++ b/addons/cms/application/admin/controller/cms/Channel.php @@ -0,0 +1,174 @@ +request->filter(['strip_tags']); + $this->model = model('Channel'); + + $tree = Tree::instance(); + $tree->init(collection($this->model->order('weigh desc,id desc')->select())->toArray(), 'parent_id'); + $this->channelList = $tree->getTreeList($tree->getTreeArray(0), 'name'); + $this->modelList = \app\admin\model\Modelx::order('id asc')->select(); + + $this->view->assign("modelList", $this->modelList); + $this->view->assign("channelList", $this->channelList); + $this->view->assign("typeList", ChannelModel::getTypeList()); + $this->view->assign("statusList", ChannelModel::getStatusList()); + } + + /** + * 查看 + */ + public function index() + { + + if ($this->request->isAjax()) { + $search = $this->request->request("search"); + //构造父类select列表选项数据 + $list = []; + if ($search) { + foreach ($this->channelList as $k => $v) { + if (stripos($v['name'], $search) !== false || stripos($v['nickname'], $search) !== false) { + $list[] = $v; + } + } + } else { + $list = $this->channelList; + } + $modelNameArr = []; + foreach ($this->modelList as $k => $v) { + $modelNameArr[$v['id']] = $v['name']; + } + foreach ($list as $k => &$v) { + $v['model_name'] = $v['model_id'] && isset($modelNameArr[$v['model_id']]) ? $modelNameArr[$v['model_id']] : __('None'); + } + $total = count($list); + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + return $this->view->fetch(); + } + + /** + * 添加 + */ + public function add() + { + if ($this->request->isPost()) { + $params = $this->request->post("row/a"); + if ($params) { + if ($this->dataLimit && $this->dataLimitFieldAutoFill) { + $params[$this->dataLimitField] = $this->auth->id; + } + try { + //是否采用模型验证 + if ($this->modelValidate) { + $name = basename(str_replace('\\', '/', get_class($this->model))); + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : true) : $this->modelValidate; + $this->model->validate($validate); + } + $nameArr = array_filter(explode("\n", str_replace("\r\n", "\n", $params['name']))); + if (count($nameArr) > 1) { + foreach ($nameArr as $index => $item) { + $itemArr = array_filter(explode('|', $item)); + $params['name'] = $itemArr[0]; + $params['diyname'] = isset($itemArr[1]) ? $itemArr[1] : ''; + $result = $this->model->allowField(true)->isUpdate(false)->data($params)->save(); + } + } else { + $result = $this->model->allowField(true)->save($params); + } + if ($result !== false) { + $this->success(); + } else { + $this->error($this->model->getError()); + } + } catch (\think\exception\PDOException $e) { + $this->error($e->getMessage()); + } + } + $this->error(__('Parameter %s can not be empty', '')); + } + return $this->view->fetch(); + } + + /** + * Selectpage搜索 + * + * @internal + */ + public function selectpage() + { + return parent::selectpage(); + } + + /** + * 检测元素是否可用 + * @internal + */ + public function check_element_available() + { + $id = $this->request->request('id'); + $name = $this->request->request('name'); + $value = $this->request->request('value'); + $name = substr($name, 4, -1); + if (!$name) { + $this->error(__('Parameter %s can not be empty', 'name')); + } + if ($name == 'diyname') { + if ($id) { + $this->model->where('id', '<>', $id); + } + $exist = $this->model->where($name, $value)->find(); + if ($exist) { + $this->error(__('The data already exist')); + } else { + $this->success(); + } + } else if ($name == 'name') { + $nameArr = array_filter(explode("\n", str_replace("\r\n", "\n", $value))); + if (count($nameArr) > 1) { + foreach ($nameArr as $index => $item) { + $itemArr = array_filter(explode('|', $item)); + if (!isset($itemArr[1])) { + $this->error('格式:分类名称|自定义名称'); + } + $exist = \app\admin\model\Channel::getByDiyname($itemArr[1]); + if ($exist) { + $this->error('自定义名称[' . $itemArr[1] . ']已经存在'); + } + } + $this->success(); + } else { + $this->success(); + } + } + } + +} diff --git a/addons/cms/application/admin/controller/cms/Comment.php b/addons/cms/application/admin/controller/cms/Comment.php new file mode 100644 index 000000000..a8042439a --- /dev/null +++ b/addons/cms/application/admin/controller/cms/Comment.php @@ -0,0 +1,67 @@ +model = model('Comment'); + $this->view->assign("typeList", $this->model->getTypeList()); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + /** + * 查看 + */ + public function index() + { + $this->relationSearch = true; + //设置过滤方法 + $this->request->filter(['strip_tags']); + if ($this->request->isAjax()) + { + //如果发送的来源是Selectpage,则转发到Selectpage + if ($this->request->request('keyField')) + { + return $this->selectpage(); + } + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + $total = $this->model + ->with('archives') + ->where($where) + ->order($sort, $order) + ->count(); + + $list = $this->model + ->with('archives') + ->where($where) + ->order($sort, $order) + ->limit($offset, $limit) + ->select(); + + $list = collection($list)->toArray(); + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + return $this->view->fetch(); + } +} diff --git a/addons/cms/application/admin/controller/cms/Fields.php b/addons/cms/application/admin/controller/cms/Fields.php new file mode 100644 index 000000000..8b9126dd7 --- /dev/null +++ b/addons/cms/application/admin/controller/cms/Fields.php @@ -0,0 +1,90 @@ +model = model('Fields'); + $this->view->assign("statusList", $this->model->getStatusList()); + $this->view->assign('typeList', Config::getTypeList()); + $this->view->assign('regexList', Config::getRegexList()); + } + + /** + * 查看 + */ + public function index() + { + $model_id = $this->request->param('model_id'); + //设置过滤方法 + $this->request->filter(['strip_tags']); + if ($this->request->isAjax()) { + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + $total = $this->model + ->where('model_id', $model_id) + ->where($where) + ->order($sort, $order) + ->count(); + + $list = $this->model + ->where('model_id', $model_id) + ->where($where) + ->order($sort, $order) + ->limit($offset, $limit) + ->select(); + + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + $this->assignconfig('model_id', $model_id); + return $this->view->fetch(); + } + + /** + * 规则列表 + * @internal + */ + public function rulelist() + { + //主键 + $primarykey = $this->request->request("keyField"); + //主键值 + $primaryvalue = $this->request->request("keyValue"); + + $regexList = Config::getRegexList(); + $list = []; + foreach ($regexList as $k => $v) { + if ($primaryvalue !== null) { + if ($primaryvalue == $k) { + $list[] = ['id' => $k, 'name' => $v]; + } + } else { + $list[] = ['id' => $k, 'name' => $v]; + } + } + return json(['list' => $list]); + } + +} diff --git a/addons/cms/application/admin/controller/cms/Modelx.php b/addons/cms/application/admin/controller/cms/Modelx.php new file mode 100644 index 000000000..7005bdcd5 --- /dev/null +++ b/addons/cms/application/admin/controller/cms/Modelx.php @@ -0,0 +1,26 @@ +model = model('Modelx'); + } + +} diff --git a/addons/cms/application/admin/controller/cms/Page.php b/addons/cms/application/admin/controller/cms/Page.php new file mode 100644 index 000000000..8aef1b669 --- /dev/null +++ b/addons/cms/application/admin/controller/cms/Page.php @@ -0,0 +1,56 @@ +model = model('Page'); + $this->view->assign("flagList", $this->model->getFlagList()); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + /** + * 动态下拉选择类型 + * @internal + */ + public function selectpage_type() + { + $list = []; + $word = (array)$this->request->request("q_word/a"); + $field = $this->request->request('showField'); + $keyValue = $this->request->request('keyValue'); + if (!$keyValue) { + if (array_filter($word)) { + foreach ($word as $k => $v) { + $list[] = ['id' => $v, $field => $v]; + } + } + $typeArr = \app\admin\model\Page::column('type'); + $typeArr = array_unique($typeArr); + foreach ($typeArr as $index => $item) { + $list[] = ['id' => $item, $field => $item]; + } + } else { + $list[] = ['id' => $keyValue, $field => $keyValue]; + } + return json(['total' => count($list), 'list' => $list]); + } + +} diff --git a/addons/cms/application/admin/controller/cms/Tags.php b/addons/cms/application/admin/controller/cms/Tags.php new file mode 100644 index 000000000..07077ba30 --- /dev/null +++ b/addons/cms/application/admin/controller/cms/Tags.php @@ -0,0 +1,46 @@ +model = model('Tags'); + } + + /** + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个方法 + * 因此在当前控制器中可不用编写增删改查的代码,如果需要自己控制这部分逻辑 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 + */ + public function selectpage() + { + $response = parent::selectpage(); + $word = (array)$this->request->request("q_word/a"); + if (array_filter($word)) { + $result = $response->getData(); + foreach ($word as $k => $v) { + array_unshift($result['list'], ['id' => $v, 'name' => $v]); + $result['total']++; + } + $response->data($result); + } + return $response; + } + +} diff --git a/addons/cms/application/admin/lang/zh-cn/cms/archives.php b/addons/cms/application/admin/lang/zh-cn/cms/archives.php new file mode 100644 index 000000000..0662fad55 --- /dev/null +++ b/addons/cms/application/admin/lang/zh-cn/cms/archives.php @@ -0,0 +1,41 @@ + '栏目', + 'Channel_id' => '栏目ID', + 'Channel_name' => '栏目名称', + 'Channel list' => '栏目列表', + 'Addon list' => '副表列表', + 'Model' => '模型', + 'Model_id' => '模型ID', + 'Title' => '文章标题', + 'Flag' => '标志', + 'Image' => '缩略图', + 'Keywords' => '关键字', + 'Description' => '描述', + 'Tags' => 'TAG', + 'Weigh' => '权重', + 'Views' => '浏览', + 'Comments' => '评论', + 'Likes' => '点赞', + 'Dislikes' => '点踩', + 'Diyname' => '自定义URL', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Deletetime' => '删除时间', + 'Recycle bin' => '回收站', + 'Restore' => '还原', + 'Restore all' => '还原全部', + 'Destroy' => '销毁', + 'Destroy all' => '清空回收站', + 'Nothing need restore' => '没有需要还原的数据', + 'Move tips' => '只能将数据移动到相同模型的栏目下,不同模型的数据移动将被忽略', + 'Are you sure you want to truncate?' => '确认清空回收站?', + 'Can not be digital' => '不能为数字', + 'Please select channel' => '请选择分类', + 'The data already exist' => '已经存在', + 'Status' => '状态', + 'Array key' => '键', + 'Array value' => '值', + 'Publish' => '发布' +]; diff --git a/addons/cms/application/admin/lang/zh-cn/cms/block.php b/addons/cms/application/admin/lang/zh-cn/cms/block.php new file mode 100644 index 000000000..b97f34d61 --- /dev/null +++ b/addons/cms/application/admin/lang/zh-cn/cms/block.php @@ -0,0 +1,13 @@ + '类型', + 'Name' => '名称', + 'Title' => '标题', + 'Image' => '图片', + 'Url' => '链接', + 'Content' => '内容', + 'Createtime' => '添加时间', + 'Updatetime' => '更新时间', + 'Status' => '状态' +]; diff --git a/addons/cms/application/admin/lang/zh-cn/cms/channel.php b/addons/cms/application/admin/lang/zh-cn/cms/channel.php new file mode 100644 index 000000000..288f5d97a --- /dev/null +++ b/addons/cms/application/admin/lang/zh-cn/cms/channel.php @@ -0,0 +1,29 @@ + '类型', + 'Model_id' => '模型ID', + 'Model_name' => '模型名称', + 'Parent_id' => '父ID', + 'Parent_ids' => '父ID集合', + 'Child_ids' => '子ID集合', + 'Name' => '名称', + 'Image' => '图片', + 'Keywords' => '关键字', + 'Description' => '描述', + 'Diyname' => '自定义名称', + 'Outlink' => '外部链接', + 'Items' => '文章数量', + 'Weigh' => '权重', + 'Channeltpl' => '栏目页模板', + 'Listtpl' => '列表页模板', + 'Showtpl' => '详情页模板', + 'Pagesize' => '分页大小', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'The data already exist' => '已经存在', + 'Status' => '状态', + 'Channel' => '栏目', + 'List' => '列表', + 'Link' => '外部链接' +]; diff --git a/addons/cms/application/admin/lang/zh-cn/cms/comment.php b/addons/cms/application/admin/lang/zh-cn/cms/comment.php new file mode 100644 index 000000000..6b48b3929 --- /dev/null +++ b/addons/cms/application/admin/lang/zh-cn/cms/comment.php @@ -0,0 +1,19 @@ + 'ID', + 'Type' => '类型', + 'Archives' => '文档', + 'Page' => '单页', + 'Aid' => '关联ID', + 'Pid' => '父ID', + 'User_id' => '会员ID', + 'Content' => '内容', + 'Comments' => '评论数', + 'Ip' => 'IP', + 'Useragent' => 'User Agent', + 'Subscribe' => '订阅', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Status' => '状态' +]; diff --git a/addons/cms/application/admin/lang/zh-cn/cms/fields.php b/addons/cms/application/admin/lang/zh-cn/cms/fields.php new file mode 100644 index 000000000..8d8d562bf --- /dev/null +++ b/addons/cms/application/admin/lang/zh-cn/cms/fields.php @@ -0,0 +1,43 @@ + '模型ID', + 'Name' => '名称', + 'Type' => '类型', + 'Title' => '标题', + 'Content' => '条目列表', + 'Rule' => '验证规则', + 'Validate Msg' => '错误消息', + 'Validate Ok' => '成功消息', + 'Validate Tip' => '提示消息', + 'Extend' => '扩展信息', + 'Weigh' => '排序', + 'Setting' => '字段设置', + 'Length' => '字段长度', + 'Decimals' => '小数点长度', + 'Minimum' => '最少选择', + 'Maximum' => '最大选择', + 'Defaultvalue' => '默认值', + 'Isfilter' => '是否列表筛选', + 'String' => '字符', + 'Text' => '文本', + 'Editor' => '编辑器', + 'Number' => '数字', + 'Date' => '日期', + 'Time' => '时间', + 'Datetime' => '日期时间', + 'Image' => '图片', + 'Images' => '图片(多)', + 'File' => '文件', + 'Files' => '文件(多)', + 'Select' => '列表', + 'Selects' => '列表(多选)', + 'Checkbox' => '复选', + 'Radio' => '单选', + 'Array' => '数组', + 'Array key' => '键名', + 'Array value' => '键值', + 'Createtime' => '添加时间', + 'Updatetime' => '更新时间', + 'Status' => '状态' +]; diff --git a/addons/cms/application/admin/lang/zh-cn/cms/modelx.php b/addons/cms/application/admin/lang/zh-cn/cms/modelx.php new file mode 100644 index 000000000..0a4690273 --- /dev/null +++ b/addons/cms/application/admin/lang/zh-cn/cms/modelx.php @@ -0,0 +1,15 @@ + '模型名称', + 'Table' => '表名', + 'Fields' => '字段列表', + 'Channeltpl' => '栏目页模板', + 'Listtpl' => '列表页模板', + 'Showtpl' => '详情页模板', + 'Main list' => '主表列表', + 'Addon list' => '副表列表', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Setting' => '配置' +]; diff --git a/addons/cms/application/admin/lang/zh-cn/cms/page.php b/addons/cms/application/admin/lang/zh-cn/cms/page.php new file mode 100644 index 000000000..44154bb49 --- /dev/null +++ b/addons/cms/application/admin/lang/zh-cn/cms/page.php @@ -0,0 +1,22 @@ + 'ID', + 'Category_id' => '分类ID', + 'Type' => '类型', + 'Title' => '标题', + 'Keywords' => '关键字', + 'Description' => '描述', + 'Flag' => '标志', + 'Image' => '图片', + 'Content' => '内容', + 'Icon' => '图标', + 'Views' => '点击', + 'Comments' => '评论', + 'Diyname' => '自定义', + 'Showtpl' => '视图模板', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Weigh' => '权重', + 'Status' => '状态' +]; diff --git a/addons/cms/application/admin/lang/zh-cn/cms/tags.php b/addons/cms/application/admin/lang/zh-cn/cms/tags.php new file mode 100644 index 000000000..68e086b85 --- /dev/null +++ b/addons/cms/application/admin/lang/zh-cn/cms/tags.php @@ -0,0 +1,7 @@ + '标签名称', + 'Archives' => '文档ID集合', + 'Nums' => '文档数量' +]; diff --git a/addons/cms/application/admin/model/Archives.php b/addons/cms/application/admin/model/Archives.php new file mode 100644 index 000000000..9d86aa880 --- /dev/null +++ b/addons/cms/application/admin/model/Archives.php @@ -0,0 +1,138 @@ + $data['id'], ':diyname' => $diyname, ':channel' => $data['channel_id']]); + } + + protected static function init() + { + self::afterInsert(function ($row) { + $pk = $row->getPk(); + $channel = Channel::get($row['channel_id']); + $row->getQuery()->where($pk, $row[$pk])->update(['model_id' => $channel ? $channel['model_id'] : 0, 'weigh' => $row[$pk]]); + Channel::where('id', $row['channel_id'])->setInc('items'); + }); + self::beforeWrite(function ($row) { + //在更新之前对数组进行处理 + foreach ($row->getData() as $k => $value) { + if (is_array($value) && isset($value['field'])) { + $value = json_encode(Config::getArrayData($value), JSON_UNESCAPED_UNICODE); + } else { + $value = is_array($value) ? implode(',', $value) : $value; + } + $row->$k = $value; + } + }); + self::afterWrite(function ($row) { + if (isset($row['channel_id'])) { + //在更新成功后刷新副表、TAGS表数据、栏目表 + $channel = Channel::get($row->channel_id); + if ($channel) { + $model = Modelx::get($channel['model_id']); + if ($model && isset($row['content'])) { + $values = array_intersect_key($row->getData(), array_flip($model->fields)); + $values['id'] = $row['id']; + $values['content'] = $row['content']; + db($model['table'])->insert($values, TRUE); + } + } + } + if (isset($row['tags'])) { + $tags = array_filter(explode(',', $row['tags'])); + if ($tags) { + $tagslist = Tags::where('name', 'in', $tags)->select(); + foreach ($tagslist as $k => $v) { + $archives = explode(',', $v['archives']); + if (!in_array($row['id'], $archives)) { + $archives[] = $row['id']; + $v->archives = implode(',', $archives); + $v->nums++; + $v->save(); + } + $tags = array_diff($tags, [$v['name']]); + } + $list = []; + foreach ($tags as $k => $v) { + $list[] = ['name' => $v, 'archives' => $row['id'], 'nums' => 1]; + } + if ($list) { + model('Tags')->saveAll($list); + } + } + } + }); + } + + public function getFlagList() + { + return ['hot' => __('Hot'), 'new' => __('New'), 'recommend' => __('Recommend')]; + } + + public function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getFlagTextAttr($value, $data) + { + $value = $value ? $value : $data['flag']; + $valueArr = $value ? explode(',', $value) : []; + $list = $this->getFlagList(); + return implode(',', array_intersect_key($list, array_flip($valueArr))); + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function getPublishtimeTextAttr($value, $data) + { + $value = $value ? $value : $data['publishtime']; + return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; + } + + protected function setPublishtimeAttr($value) + { + return $value && !is_numeric($value) ? strtotime($value) : $value; + } + + public function channel() + { + return $this->belongsTo('Channel', 'channel_id', '', [], 'LEFT')->setEagerlyType(0); + } + +} diff --git a/addons/cms/application/admin/model/Block.php b/addons/cms/application/admin/model/Block.php new file mode 100644 index 000000000..77172df00 --- /dev/null +++ b/addons/cms/application/admin/model/Block.php @@ -0,0 +1,34 @@ + __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + +} diff --git a/addons/cms/application/admin/model/Channel.php b/addons/cms/application/admin/model/Channel.php new file mode 100644 index 000000000..96afae736 --- /dev/null +++ b/addons/cms/application/admin/model/Channel.php @@ -0,0 +1,97 @@ + $data['id'], ':diyname' => $diyname]); + } + + protected static function init() + { + self::afterInsert(function ($row) { + //创建时自动添加权重值 + $pk = $row->getPk(); + $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]); + }); + self::afterDelete(function ($row) { + //删除时,删除子节点,同时将所有相关文档移入回收站 + static $tree; + if (!$tree) { + $tree = \fast\Tree::instance(); + $tree->init(collection(Channel::order('weigh desc,id desc')->field('id,parent_id,name,type,diyname,status')->select())->toArray(), 'parent_id'); + } + $childIds = $tree->getChildrenIds($row['id']); + if ($childIds) { + Channel::destroy(function ($query) use ($childIds) { + $query->where('id', 'in', $childIds); + }); + } + $childIds[] = $row['id']; + db('cms_archives')->where('channel_id', 'in', $childIds)->update(['deletetime' => time()]); + }); + self::afterWrite(function ($row) { + $changed = $row->getChangedData(); + //隐藏时判断是否有子节点,有则隐藏 + if (isset($changed['status']) && $changed['status'] == 'hidden') { + static $tree; + if (!$tree) { + $tree = \fast\Tree::instance(); + $tree->init(collection(Channel::order('weigh desc,id desc')->field('id,parent_id,name,type,diyname,status')->select())->toArray(), 'parent_id'); + } + $childIds = $tree->getChildrenIds($row['id']); + db('cms_channel')->where('id', 'in', $childIds)->update(['status' => 'hidden']); + } + }); + } + + public static function getTypeList() + { + return ['channel' => __('Channel'), 'list' => __('List'), 'link' => __('Link')]; + } + + public static function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getTypeTextAttr($value, $data) + { + $value = $value ? $value : $data['type']; + $list = $this->getTypeList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function model() + { + return $this->belongsTo('Modelx', 'model_id')->setEagerlyType(0); + } + +} diff --git a/addons/cms/application/admin/model/Comment.php b/addons/cms/application/admin/model/Comment.php new file mode 100644 index 000000000..77ea8be3c --- /dev/null +++ b/addons/cms/application/admin/model/Comment.php @@ -0,0 +1,58 @@ + __('Archives'), 'page' => __('Page')]; + } + + public function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + + public function getTypeTextAttr($value, $data) + { + $value = $value ? $value : $data['type']; + $list = $this->getTypeList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + + public function archives() + { + return $this->belongsTo('Archives', 'aid', '', [], 'LEFT')->setEagerlyType(0); + } + +} diff --git a/addons/cms/application/admin/model/Fields.php b/addons/cms/application/admin/model/Fields.php new file mode 100644 index 000000000..a1738eb80 --- /dev/null +++ b/addons/cms/application/admin/model/Fields.php @@ -0,0 +1,134 @@ +error = $error; + } + + protected static function init() + { + $beforeUpdateCallback = function ($row) { + + }; + + $afterInsertCallback = function ($row) { + //为了避免引起更新的事件回调,这里采用直接执行SQL的写法 + $row->query($row->fetchSql(true)->update(['id' => $row['id'], 'weigh' => $row['id']])); + $model = Modelx::get($row['model_id']); + if ($model) { + $sql = Alter::instance() + ->setTable($model['table']) + ->setName($row['name']) + ->setLength($row['length']) + ->setContent($row['content']) + ->setDecimals($row['decimals']) + ->setDefaultvalue($row['defaultvalue']) + ->setComment($row['title']) + ->setType($row['type']) + ->getAddSql(); + try { + db()->query($sql); + $fields = Fields::where('model_id', $model['id'])->field('name')->column('name'); + $model->fields = implode(',', $fields); + $model->save(); + } catch (PDOException $e) { + $row->getQuery()->where('id', $row->id)->delete(); + throw new Exception($e->getMessage()); + } + } + }; + $afterUpdateCallback = function ($row) { + $model = Modelx::get($row['model_id']); + if ($model) { + $alter = Alter::instance(); + if (isset($row['oldname']) && $row['oldname'] != $row['name']) { + $alter->setOldname($row['oldname']); + } + $sql = $alter + ->setTable($model['table']) + ->setName($row['name']) + ->setLength($row['length']) + ->setContent($row['content']) + ->setDecimals($row['decimals']) + ->setDefaultvalue($row['defaultvalue']) + ->setComment($row['title']) + ->setType($row['type']) + ->getModifySql(); + db()->query($sql); + $fields = Fields::where('model_id', $model['id'])->field('name')->column('name'); + $model->fields = implode(',', $fields); + $model->save(); + } + }; + + self::beforeInsert($beforeUpdateCallback); + self::beforeUpdate($beforeUpdateCallback); + + self::afterInsert($afterInsertCallback); + self::afterUpdate($afterUpdateCallback); + + self::afterDelete(function ($row) { + $model = Modelx::get($row['model_id']); + if ($model) { + $sql = Alter::instance() + ->setTable($model['table']) + ->setName($row['name']) + ->getDropSql(); + try { + db()->query($sql); + } catch (PDOException $e) { + + } + } + }); + } + + public function getContentListAttr($value, $data) + { + return in_array($data['type'], self::$listField) ? Config::decode($data['content']) : $data['content']; + } + + public function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function model() + { + return $this->belongsTo('Modelx', 'model_id')->setEagerlyType(0); + } + +} diff --git a/addons/cms/application/admin/model/Modelx.php b/addons/cms/application/admin/model/Modelx.php new file mode 100644 index 000000000..6a4bb4583 --- /dev/null +++ b/addons/cms/application/admin/model/Modelx.php @@ -0,0 +1,36 @@ +query($sql); + }); + } + + public function getFieldsAttr($value, $data) + { + return is_array($value) ? $value : ($value ? explode(',', $value) : []); + } + +} diff --git a/addons/cms/application/admin/model/Page.php b/addons/cms/application/admin/model/Page.php new file mode 100644 index 000000000..d2aca16fc --- /dev/null +++ b/addons/cms/application/admin/model/Page.php @@ -0,0 +1,61 @@ +save(['weigh' => $row['id']]); + }); + } + + public function getUrlAttr($value, $data) + { + return addon_url('cms/page/index', [':diyname' => $data['diyname']]); + } + + public function getStatusList() + { + return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + public function getFlagList() + { + return ['hot' => __('Hot'), 'index' => __('Index'), 'recommend' => __('Recommend')]; + } + + public function getFlagTextAttr($value, $data) + { + $value = $value ? $value : $data['flag']; + $valueArr = explode(',', $value); + $list = $this->getFlagList(); + return implode(',', array_intersect_key($list, array_flip($valueArr))); + } + +} diff --git a/addons/cms/application/admin/model/Tags.php b/addons/cms/application/admin/model/Tags.php new file mode 100644 index 000000000..688ae4aca --- /dev/null +++ b/addons/cms/application/admin/model/Tags.php @@ -0,0 +1,27 @@ + $data['name']]); + } + +} diff --git a/addons/cms/application/admin/validate/Archives.php b/addons/cms/application/admin/validate/Archives.php new file mode 100644 index 000000000..8f8cebc2e --- /dev/null +++ b/addons/cms/application/admin/validate/Archives.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/addons/cms/application/admin/validate/Block.php b/addons/cms/application/admin/validate/Block.php new file mode 100644 index 000000000..eb60cd580 --- /dev/null +++ b/addons/cms/application/admin/validate/Block.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/addons/cms/application/admin/validate/Channel.php b/addons/cms/application/admin/validate/Channel.php new file mode 100644 index 000000000..7df3d4440 --- /dev/null +++ b/addons/cms/application/admin/validate/Channel.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/addons/cms/application/admin/validate/Comment.php b/addons/cms/application/admin/validate/Comment.php new file mode 100644 index 000000000..ffddfd091 --- /dev/null +++ b/addons/cms/application/admin/validate/Comment.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/addons/cms/application/admin/validate/Fields.php b/addons/cms/application/admin/validate/Fields.php new file mode 100644 index 000000000..34941a5b9 --- /dev/null +++ b/addons/cms/application/admin/validate/Fields.php @@ -0,0 +1,49 @@ + 'require|unique:fields,model_id^name', + 'title|管理员' => 'require', + 'model_id|模型ID' => 'require|integer', + 'status|状态' => 'require|in:normal,hidden', + ]; + + /** + * 提示消息 + */ + protected $message = [ + ]; + + /** + * 验证场景 + */ + protected $scene = [ + 'add' => [ + 'name', 'title', 'model_id', 'status' + ], + 'edit' => [ + 'name', 'title', 'model_id', 'status' + ], + ]; + + public function __construct(array $rules = array(), $message = array(), $field = array()) + { + //如果是编辑模式,则排除下主键 + $ids = request()->param("ids"); + if ($ids) + { + $this->rule['name|名称'] .= ",{$ids}"; + } + parent::__construct($rules, $message, $field); + } + +} diff --git a/addons/cms/application/admin/validate/Modelx.php b/addons/cms/application/admin/validate/Modelx.php new file mode 100644 index 000000000..8b96be187 --- /dev/null +++ b/addons/cms/application/admin/validate/Modelx.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/addons/cms/application/admin/validate/Page.php b/addons/cms/application/admin/validate/Page.php new file mode 100644 index 000000000..4eb69a6ab --- /dev/null +++ b/addons/cms/application/admin/validate/Page.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/addons/cms/application/admin/validate/Tags.php b/addons/cms/application/admin/validate/Tags.php new file mode 100644 index 000000000..cc9f954fd --- /dev/null +++ b/addons/cms/application/admin/validate/Tags.php @@ -0,0 +1,27 @@ + [], + 'edit' => [], + ]; + +} diff --git a/addons/cms/application/admin/view/cms/archives/add.html b/addons/cms/application/admin/view/cms/archives/add.html new file mode 100644 index 000000000..371aa04e8 --- /dev/null +++ b/addons/cms/application/admin/view/cms/archives/add.html @@ -0,0 +1,192 @@ +
                    +
                    +
                    +
                    +
                    + +
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + +
                    + +
                    +
                    + +
                    + + +
                    + +
                    +
                      +
                      +
                      +
                      + +
                      + +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      +
                      +
                      + +
                      + +
                      + +
                      +
                      +
                      +
                      +
                      相关信息
                      +
                      +
                      +
                      +
                      +
                      + +
                      +
                      + + + +
                      +
                      +
                      +
                      + +
                      +
                      + + + +
                      +
                      +
                      +
                      + +
                      +
                      + + + +
                      +
                      +
                      +
                      + +
                      +
                      + + +
                      +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      +
                      状态
                      +
                      +
                      +
                      +
                      +
                      + +
                      + + + +
                      +
                      +
                      + +
                      +
                      + {foreach name="statusList" item="vo"} + + {/foreach} +
                      +
                      +
                      +
                      + +
                      +
                      + + + + +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      \ No newline at end of file diff --git a/addons/cms/application/admin/view/cms/archives/content.html b/addons/cms/application/admin/view/cms/archives/content.html new file mode 100644 index 000000000..3b402ee4f --- /dev/null +++ b/addons/cms/application/admin/view/cms/archives/content.html @@ -0,0 +1,21 @@ +
                      + {:build_heading()} + +
                      +
                      +
                      +
                      +
                      + {:build_toolbar('refresh,edit,del')} +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      \ No newline at end of file diff --git a/addons/cms/application/admin/view/cms/archives/edit.html b/addons/cms/application/admin/view/cms/archives/edit.html new file mode 100644 index 000000000..83cd966e4 --- /dev/null +++ b/addons/cms/application/admin/view/cms/archives/edit.html @@ -0,0 +1,201 @@ +
                      + +
                      +
                      +
                      +
                      + +
                      +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      + +
                      + +
                      +
                      + +
                      + + +
                      + +
                      +
                        +
                        +
                        +
                        + +
                        + +
                        +
                        + +
                        + +
                        +
                        +
                        + +
                        + +
                        +
                        +
                        +
                        + +
                        + +
                        +
                        +
                        + +
                        + +
                        +
                        +
                        + +
                        + +
                        +
                        +
                        +
                        +
                        + +
                        + +
                        + +
                        +
                        +
                        +
                        +
                        相关信息
                        +
                        +
                        +
                        +
                        +
                        + +
                        +
                        + + + +
                        +
                        +
                        +
                        + +
                        +
                        + + + +
                        +
                        +
                        +
                        + +
                        +
                        + + + +
                        +
                        +
                        +
                        + +
                        +
                        + + +
                        +
                        +
                        +
                        + +
                        +
                        + +
                        +
                        +
                        +
                        + +
                        +
                        +
                        +
                        +
                        +
                        状态
                        +
                        +
                        +
                        +
                        +
                        + +
                        + + + +
                        +
                        +
                        + +
                        +
                        + {foreach name="statusList" item="vo"} + + {/foreach} +
                        +
                        +
                        +
                        + +
                        +
                        + + + + +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        \ No newline at end of file diff --git a/addons/cms/application/admin/view/cms/archives/fields.html b/addons/cms/application/admin/view/cms/archives/fields.html new file mode 100644 index 000000000..7fbbac61b --- /dev/null +++ b/addons/cms/application/admin/view/cms/archives/fields.html @@ -0,0 +1,96 @@ +{foreach $fields as $item} + +
                        +
                        {$item.title}
                        +
                        + {switch $item.type} + {case string} + + {/case} + {case value="text" break="0"}{/case} + {case editor} + + {/case} + {case array} + {php}$arrList=isset($values[$item['name']])?(array)json_decode($item['value'],true):$item['content_list'];{/php} +
                        +
                        + {:__('Array key')} + {:__('Array value')} +
                        + + {foreach $arrList as $key => $vo} +
                        + + + + +
                        + {/foreach} +
                        {:__('Append')}
                        +
                        + {/case} + {case date} + + {/case} + {case time} + + {/case} + {case datetime} + + {/case} + {case number} + + {/case} + {case checkbox} + {foreach name="item.content_list" item="vo"} + + {/foreach} + {/case} + {case radio} + {foreach name="item.content_list" item="vo"} + + {/foreach} + {/case} + {case value="select" break="0"}{/case} + {case value="selects"} + + {/case} + {case value="image" break="0"}{/case} + {case value="images"} +
                        + +
                        + + +
                        + +
                        +
                          + {/case} + {case value="file" break="0"}{/case} + {case value="files"} +
                          + +
                          + + +
                          + +
                          + {/case} + {case bool} + + + {/case} + {case custom} + {$item.content} + {/case} + {/switch} +
                          +
                          +{/foreach} \ No newline at end of file diff --git a/addons/cms/application/admin/view/cms/archives/index.html b/addons/cms/application/admin/view/cms/archives/index.html new file mode 100644 index 000000000..47eb8d9ac --- /dev/null +++ b/addons/cms/application/admin/view/cms/archives/index.html @@ -0,0 +1,91 @@ + +
                          + +
                          +
                          + {:build_heading()} +
                          +
                          +
                          +
                          + {:build_toolbar('refresh,add,del',['add'=>[url('cms.archives/add'), 'btn btn-success btn-addtabs', 'fa fa-plus', __('Add'), __('Add')]])} + {:__('Move')} + + {:__('Recycle bin')} + + + +
                          + +
                          +
                          +
                          + +
                          +
                          +
                          +
                          + diff --git a/addons/cms/application/admin/view/cms/archives/recyclebin.html b/addons/cms/application/admin/view/cms/archives/recyclebin.html new file mode 100644 index 000000000..ab39d45a1 --- /dev/null +++ b/addons/cms/application/admin/view/cms/archives/recyclebin.html @@ -0,0 +1,23 @@ +
                          + {:build_heading()} + +
                          +
                          +
                          + +
                          + +
                          +
                          +
                          diff --git a/addons/cms/application/admin/view/cms/block/add.html b/addons/cms/application/admin/view/cms/block/add.html new file mode 100644 index 000000000..c56d17293 --- /dev/null +++ b/addons/cms/application/admin/view/cms/block/add.html @@ -0,0 +1,66 @@ +
                          + +
                          + +
                          + +
                          +
                          +
                          + +
                          + +
                          +
                          +
                          + +
                          + +
                          +
                          +
                          + +
                          +
                          + +
                          + + +
                          + +
                          +
                            +
                            +
                            +
                            + +
                            + +
                            +
                            +
                            + +
                            + +
                            +
                            +
                            + +
                            + +
                            + {foreach name="statusList" item="vo"} + + {/foreach} +
                            + +
                            +
                            + +
                            diff --git a/addons/cms/application/admin/view/cms/block/edit.html b/addons/cms/application/admin/view/cms/block/edit.html new file mode 100644 index 000000000..ac4196b29 --- /dev/null +++ b/addons/cms/application/admin/view/cms/block/edit.html @@ -0,0 +1,66 @@ +
                            + +
                            + +
                            + +
                            +
                            +
                            + +
                            + +
                            +
                            +
                            + +
                            + +
                            +
                            +
                            + +
                            +
                            + +
                            + + +
                            + +
                            +
                              +
                              +
                              +
                              + +
                              + +
                              +
                              +
                              + +
                              + +
                              +
                              +
                              + +
                              + +
                              + {foreach name="statusList" item="vo"} + + {/foreach} +
                              + +
                              +
                              + +
                              diff --git a/addons/cms/application/admin/view/cms/block/index.html b/addons/cms/application/admin/view/cms/block/index.html new file mode 100644 index 000000000..2206b204f --- /dev/null +++ b/addons/cms/application/admin/view/cms/block/index.html @@ -0,0 +1,28 @@ +
                              + {:build_heading()} + +
                              +
                              +
                              +
                              +
                              + {:build_toolbar('refresh,add,edit,del')} + +
                              + +
                              +
                              +
                              + +
                              +
                              +
                              diff --git a/addons/cms/application/admin/view/cms/channel/add.html b/addons/cms/application/admin/view/cms/channel/add.html new file mode 100644 index 000000000..4d1bfaa38 --- /dev/null +++ b/addons/cms/application/admin/view/cms/channel/add.html @@ -0,0 +1,130 @@ +
                              + +
                              + +
                              + +
                              + {foreach name="typeList" item="vo"} + + {/foreach} +
                              +
                              +
                              + + 栏目: 栏目类型下不可以发布文章,但可以添加子栏目、列表、链接
                              + 列表: 列表类型下可以发布文章,但不能添加子栏目
                              + 链接: 链接类型下不可以发布文章和子级栏目
                              +
                              +
                              +
                              +
                              +
                              + +
                              + +
                              +
                              +
                              + +
                              + +
                              +
                              +
                              + +
                              + +
                              +
                              +
                              + +
                              +
                              + +
                              + + +
                              + +
                              +
                                +
                                +
                                +
                                + +
                                + +
                                +
                                +
                                + +
                                + +
                                +
                                +
                                + +
                                + +
                                +
                                + +
                                + +
                                + +
                                +
                                +
                                + +
                                + +
                                +
                                +
                                + +
                                + +
                                +
                                +
                                + +
                                + +
                                +
                                +
                                + +
                                + +
                                + {foreach name="statusList" item="vo"} + + {/foreach} +
                                + +
                                +
                                + +
                                diff --git a/addons/cms/application/admin/view/cms/channel/edit.html b/addons/cms/application/admin/view/cms/channel/edit.html new file mode 100644 index 000000000..73abf8989 --- /dev/null +++ b/addons/cms/application/admin/view/cms/channel/edit.html @@ -0,0 +1,136 @@ +
                                + +
                                + +
                                + +
                                + {foreach name="typeList" item="vo"} + + {/foreach} +
                                +
                                +
                                + + 栏目: 栏目类型下不可以发布文章,但可以添加子栏目、列表、链接
                                + 列表: 列表类型下可以发布文章,但不能添加子栏目
                                + 链接: 链接类型下不可以发布文章和子级栏目
                                +
                                +
                                +
                                +
                                +
                                + +
                                + +
                                +
                                +
                                + +
                                + +
                                +
                                +
                                + +
                                + +
                                +
                                +
                                + +
                                +
                                + +
                                + + +
                                + +
                                +
                                  +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  + {foreach name="statusList" item="vo"} + + {/foreach} +
                                  + +
                                  +
                                  + +
                                  diff --git a/addons/cms/application/admin/view/cms/channel/index.html b/addons/cms/application/admin/view/cms/channel/index.html new file mode 100644 index 000000000..1466c35e5 --- /dev/null +++ b/addons/cms/application/admin/view/cms/channel/index.html @@ -0,0 +1,28 @@ +
                                  + {:build_heading()} + +
                                  +
                                  +
                                  +
                                  +
                                  + {:build_toolbar('refresh,add,edit,del')} + +
                                  + +
                                  +
                                  +
                                  + +
                                  +
                                  +
                                  diff --git a/addons/cms/application/admin/view/cms/comment/add.html b/addons/cms/application/admin/view/cms/comment/add.html new file mode 100644 index 000000000..9a7118b0c --- /dev/null +++ b/addons/cms/application/admin/view/cms/comment/add.html @@ -0,0 +1,82 @@ +
                                  + +
                                  + +
                                  + + + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + {:build_radios('row[subscribe]', [1=>'是', 0=>'否'])} +
                                  +
                                  +
                                  + +
                                  + +
                                  + {foreach name="statusList" item="vo"} + + {/foreach} +
                                  + +
                                  +
                                  + +
                                  diff --git a/addons/cms/application/admin/view/cms/comment/edit.html b/addons/cms/application/admin/view/cms/comment/edit.html new file mode 100644 index 000000000..3f12aad98 --- /dev/null +++ b/addons/cms/application/admin/view/cms/comment/edit.html @@ -0,0 +1,82 @@ +
                                  + +
                                  + +
                                  + + + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + {:build_radios('row[subscribe]', [1=>'是', 0=>'否'], $row['subscribe'])} +
                                  +
                                  +
                                  + +
                                  + +
                                  + {foreach name="statusList" item="vo"} + + {/foreach} +
                                  + +
                                  +
                                  + +
                                  diff --git a/addons/cms/application/admin/view/cms/comment/index.html b/addons/cms/application/admin/view/cms/comment/index.html new file mode 100644 index 000000000..e33e5f01e --- /dev/null +++ b/addons/cms/application/admin/view/cms/comment/index.html @@ -0,0 +1,32 @@ +
                                  + {:build_heading()} + + +
                                  diff --git a/addons/cms/application/admin/view/cms/fields/add.html b/addons/cms/application/admin/view/cms/fields/add.html new file mode 100644 index 000000000..fde627395 --- /dev/null +++ b/addons/cms/application/admin/view/cms/fields/add.html @@ -0,0 +1,122 @@ +
                                  + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  + + + +
                                  + +
                                  + +
                                  +
                                  + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  + {foreach name="statusList" item="vo"} + + {/foreach} +
                                  + +
                                  +
                                  + +
                                  diff --git a/addons/cms/application/admin/view/cms/fields/edit.html b/addons/cms/application/admin/view/cms/fields/edit.html new file mode 100644 index 000000000..de46ee5e6 --- /dev/null +++ b/addons/cms/application/admin/view/cms/fields/edit.html @@ -0,0 +1,121 @@ +
                                  + + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  + + + +
                                  + +
                                  + +
                                  +
                                  + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  + {foreach name="statusList" item="vo"} + + {/foreach} +
                                  + +
                                  +
                                  + +
                                  diff --git a/addons/cms/application/admin/view/cms/fields/index.html b/addons/cms/application/admin/view/cms/fields/index.html new file mode 100644 index 000000000..d042f87a1 --- /dev/null +++ b/addons/cms/application/admin/view/cms/fields/index.html @@ -0,0 +1,28 @@ +
                                  + {:build_heading()} + +
                                  +
                                  +
                                  +
                                  + + +
                                  +
                                  +
                                  + +
                                  +
                                  +
                                  diff --git a/addons/cms/application/admin/view/cms/modelx/add.html b/addons/cms/application/admin/view/cms/modelx/add.html new file mode 100644 index 000000000..33c1c82b3 --- /dev/null +++ b/addons/cms/application/admin/view/cms/modelx/add.html @@ -0,0 +1,40 @@ +
                                  + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  + +
                                  diff --git a/addons/cms/application/admin/view/cms/modelx/edit.html b/addons/cms/application/admin/view/cms/modelx/edit.html new file mode 100644 index 000000000..3f5388505 --- /dev/null +++ b/addons/cms/application/admin/view/cms/modelx/edit.html @@ -0,0 +1,40 @@ +
                                  + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  + +
                                  diff --git a/addons/cms/application/admin/view/cms/modelx/index.html b/addons/cms/application/admin/view/cms/modelx/index.html new file mode 100644 index 000000000..543991629 --- /dev/null +++ b/addons/cms/application/admin/view/cms/modelx/index.html @@ -0,0 +1,24 @@ +
                                  + {:build_heading()} + +
                                  +
                                  +
                                  +
                                  +
                                  + {:build_toolbar('refresh,add,edit,del')} +
                                  + +
                                  +
                                  +
                                  + +
                                  +
                                  +
                                  diff --git a/addons/cms/application/admin/view/cms/modelx/tpl.html b/addons/cms/application/admin/view/cms/modelx/tpl.html new file mode 100644 index 000000000..7b49a6b46 --- /dev/null +++ b/addons/cms/application/admin/view/cms/modelx/tpl.html @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/addons/cms/application/admin/view/cms/page/add.html b/addons/cms/application/admin/view/cms/page/add.html new file mode 100644 index 000000000..48adf679a --- /dev/null +++ b/addons/cms/application/admin/view/cms/page/add.html @@ -0,0 +1,96 @@ +
                                  + +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + +
                                  +
                                  +
                                  + +
                                  + + + +
                                  +
                                  +
                                  + +
                                  +
                                  + +
                                  + + +
                                  + +
                                  +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    + +
                                    + +
                                    + {foreach name="statusList" item="vo"} + + {/foreach} +
                                    + +
                                    +
                                    + +
                                    diff --git a/addons/cms/application/admin/view/cms/page/edit.html b/addons/cms/application/admin/view/cms/page/edit.html new file mode 100644 index 000000000..63fd1ed72 --- /dev/null +++ b/addons/cms/application/admin/view/cms/page/edit.html @@ -0,0 +1,107 @@ +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    + +
                                    + + + +
                                    +
                                    +
                                    + +
                                    +
                                    + +
                                    + + +
                                    + +
                                    +
                                      +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      + {foreach name="statusList" item="vo"} + + {/foreach} +
                                      + +
                                      +
                                      + +
                                      diff --git a/addons/cms/application/admin/view/cms/page/index.html b/addons/cms/application/admin/view/cms/page/index.html new file mode 100644 index 000000000..c968a2213 --- /dev/null +++ b/addons/cms/application/admin/view/cms/page/index.html @@ -0,0 +1,28 @@ +
                                      + {:build_heading()} + +
                                      +
                                      +
                                      +
                                      +
                                      + {:build_toolbar('refresh,add,edit,del')} + +
                                      + +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      diff --git a/addons/cms/application/admin/view/cms/tags/add.html b/addons/cms/application/admin/view/cms/tags/add.html new file mode 100644 index 000000000..5b6a2fac1 --- /dev/null +++ b/addons/cms/application/admin/view/cms/tags/add.html @@ -0,0 +1,28 @@ +
                                      + +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      + +
                                      diff --git a/addons/cms/application/admin/view/cms/tags/edit.html b/addons/cms/application/admin/view/cms/tags/edit.html new file mode 100644 index 000000000..97ff20cf6 --- /dev/null +++ b/addons/cms/application/admin/view/cms/tags/edit.html @@ -0,0 +1,28 @@ +
                                      + +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      + +
                                      diff --git a/addons/cms/application/admin/view/cms/tags/index.html b/addons/cms/application/admin/view/cms/tags/index.html new file mode 100644 index 000000000..a0379d73a --- /dev/null +++ b/addons/cms/application/admin/view/cms/tags/index.html @@ -0,0 +1,21 @@ +
                                      + {:build_heading()} + +
                                      +
                                      +
                                      +
                                      +
                                      + {:build_toolbar('refresh,delete')} +
                                      + +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      diff --git a/addons/cms/assets/css/common.css b/addons/cms/assets/css/common.css new file mode 100644 index 000000000..8556a7eff --- /dev/null +++ b/addons/cms/assets/css/common.css @@ -0,0 +1,1286 @@ +@import url("../../../css/bootstrap.min.css"); +@import url("../../../libs/font-awesome/css/font-awesome.min.css"); +html, +body { + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 400; + overflow-x: hidden; + overflow-y: auto; + padding-top: 40px; + background: #f4f6f8; + font-size: 14px; + color: #616161; +} +.wow { + visibility: hidden; +} +.dropdown:hover > .dropdown-menu { + display: block; + margin-top: 0; +} +.dropdown-submenu { + position: relative; +} +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 3px 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-border-radius: 3px 0 3px 3px; + -moz-background-clip: padding; + border-radius: 3px 0 3px 3px; + background-clip: padding-box; +} +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} +.dropdown-submenu:hover > a:after { + border-left-color: #fff; +} +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #ccc; + margin-top: 5px; + margin-right: -10px; +} +.dropdown-submenu.pull-left { + float: none; +} +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 3px 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-border-radius: 3px 0 3px 3px; + -moz-background-clip: padding; + border-radius: 3px 0 3px 3px; + background-clip: padding-box; +} +.navbar { + border: none; +} +.navbar-nav .form-search.focused { + position: relative; +} +.navbar-nav .form-search.focused input { + position: absolute; + top: 0; + right: 0; + width: 250px; +} +.navbar-nav li > a { + font-size: 13px; +} +.navbar-nav li > a h5 { + overflow: hidden; + text-overflow: ellipsis; +} +.navbar-nav > li > a { + font-size: 14px; +} +@media (max-width: 769px) { + ul.dropdown-menu { + position: relative; + width: 100%; + background: #222; + } + ul.dropdown-menu .open > a, + ul.dropdown-menu .open > a:hover, + ul.dropdown-menu .open > a:focus { + background: none; + color: #9d9d9d; + } + ul.dropdown-menu > .dropdown-menu { + position: relative; + width: 100%; + margin: 0; + } + .navbar-nav .form-search { + padding: 0 10px; + } + .navbar-nav .open .dropdown-menu { + position: relative; + width: 100%; + margin: 0; + left: 0; + } + .dropdown-submenu > a:after { + display: none; + } +} +.navbar-brand { + padding: 5px 5px; +} +.toast-top-center { + top: 50px; +} +#toast-container > div { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +/*修复nice-validator和summernote的编辑框冲突*/ +.nice-validator .note-editor .note-editing-area .note-editable { + display: inherit; +} +/*预览区域*/ +.plupload-preview { + padding: 10px; + margin-bottom: 0; +} +.plupload-preview li { + margin-bottom: 10px; +} +.plupload-preview .thumbnail { + margin-bottom: 10px; +} +.plupload-preview a { + display: block; +} +.plupload-preview a:first-child { + height: 90px; +} +.plupload-preview a img { + height: 80px; + object-fit: cover; +} +#floatbtn { + width: 50px; + height: auto; + position: fixed; + top: auto; + right: 50%; + bottom: 10px; + left: auto; + z-index: 80; + margin-right: -620px; +} +#floatbtn.fixed { + position: absolute; + bottom: 279px; + right: 50%; +} +#floatbtn a { + position: relative; + z-index: 90; + display: block; + margin-top: 4px; + width: 50px; + height: 50px; + line-height: 50px; + text-align: center; + font-size: 20px; + color: #d5d5d5; + background-color: #fff; + border: 1px solid #eee; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#floatbtn a.hover:hover { + -webkit-transition: background-color 200ms ease-out; + -moz-transition: background-color 200ms ease-out; + -o-transition: background-color 200ms ease-out; + transition: background-color 200ms ease-out; +} +#floatbtn a.hover:hover:before { + content: ""; + position: absolute; + z-index: 100; + display: block; + width: 100%; + height: 100%; + padding: 10px; + font-size: 14px; + line-height: 15px; + color: #fff; + text-align: center; + background-color: #17bb9c; + -webkit-pointer-events: none; + -moz-pointer-events: none; + pointer-events: none; +} +#floatbtn a.hover:hover i { + display: none; +} +#floatbtn a.hover:hover#fb-tipoff:before { + content: "\7206\6599\6295\7a3f"; + font-weight: 400; +} +#floatbtn a.hover:hover#feedback:before { + content: "\53d1\8868\8bc4\8bba"; +} +#floatbtn a.hover:hover#back-to-top:before { + content: "\56de\5230\9876\90e8"; +} +#floatbtn a#fb-qrcode:hover #fb-qrcode-wrapper { + display: block; +} +#floatbtn .iconfont { + display: inline-block; + font: normal normal normal 14px/1 iconfont; + font-size: inherit; +} +#fb-qrcode-wrapper { + position: absolute; + right: 59px; + top: -55px; + z-index: 120; + display: none; + width: 190px; + height: 212px; + background-color: #fff; + border: 1px solid #eee; +} +#fb-qrcode-wrapper:after { + content: ""; + position: absolute; + right: -6px; + top: 73px; + display: block; + width: 0; + height: 0; + border-left: 6px solid #d5d5d5; + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; +} +#fb-qrcode-wrapper .qrcode { + margin-top: 20px; + line-height: 1; +} +#fb-qrcode-wrapper .qrcode img { + width: 128px; + height: 128px; +} +#fb-qrcode-wrapper p { + font-size: 12px; + line-height: 20px; + color: #999; +} +#fb-qrcode-wrapper p em { + color: #dd3067; +} +.text-primary, +.text-primary:hover { + color: #2c3e50; +} +.text-success, +.text-success:hover { + color: #18bc9c; +} +.text-danger, +.text-danger:hover { + color: #e74c3c; +} +.text-warning, +.text-warning:hover { + color: #f39c12; +} +.text-info, +.text-info:hover { + color: #3498db; +} +.well { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.responsive-container { + position: relative; + width: 100%; + border: 1px solid #f8f8f8; +} +footer { + padding: 30px 0; +} +@media (min-width: 979px) { + ul.nav li.dropdown:hover > ul.dropdown-menu { + display: block; + } +} +.main { + background: #fff; + padding: 15px; + min-height: 500px; +} +.main h3 { + margin: 0; + margin-bottom: 10px; + height: 35px; + line-height: 35px; +} +.main h3 label { + display: inline-block; + font-size: 14px; + font-weight: 400; + vertical-align: middle; +} +.main > row { + margin-top: 15px; +} +.main label { + font-weight: 400; +} +.main .fixed-table-container thead th .th-inner { + font-weight: 500; +} +.main table a:not(.btn), +.main .table a:not(.btn) { + text-decoration: none; +} +.nav-sidebar li.active a { + text-decoration: none; + background-color: #ecf0f1; +} +.navbar-toggle .icon-bar { + width: 18px; +} +.footer-inner { + padding: 2em 0; +} +.footer-inner .copyright { + margin-bottom: 20px !important; + line-height: 1.5; +} +.footer-inner .footer-logo { + margin-bottom: 20px; +} +.footer-inner .footer-logo a { + padding: 15px 15px; + background: rgba(0, 0, 0, 0.07); + font-size: 40px; + font-weight: 700; +} +.footer-inner .footer-logo a:hover, +.footer-inner .footer-logo a:focus { + text-decoration: none; +} +.footer-inner h3 { + font-weight: 400; + margin-bottom: 20px; +} +.footer-inner p { + font-weight: 40; +} +.footer-inner p:last-child { + margin-bottom: 0; +} +.footer-inner .links { + padding: 0; + margin: 0 0 20px 0; +} +.footer-inner .links li { + list-style: none; + padding: 5px 0; +} +.footer-inner .links li a:hover { + text-decoration: none; +} +.footer-inner .footer-social { + text-align: right; + margin-top: 0; +} +.footer-inner .footer-social a { + margin-right: 15px; + margin-bottom: 10px; + font-size: 20px; +} +.footer-inner .footer-social a:hover { + text-decoration: none; +} +#footer { + border-top: 1px solid #ddd; + margin-top: 50px; + padding-top: 20px; +} +.article-section { + background: #fff; + padding: 15px; + margin-bottom: 20px; + -webkit-border-radius: 2px; + -webkit-background-clip: padding-box; + -moz-border-radius: 2px; + -moz-background-clip: padding; + border-radius: 2px; + background-clip: padding-box; + -webkit-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); +} +.article-list-main .article-item .content { + margin-top: 15px; + color: #919191; +} +.article-list-main .media { + color: #919191; +} +.article-list-main .media .media-body { + padding-left: 10px; + line-height: 25px; +} +.article-list-main .media img { + -webkit-border-radius: 6px; + -webkit-background-clip: padding-box; + -moz-border-radius: 6px; + -moz-background-clip: padding; + border-radius: 6px; + background-clip: padding-box; + width: 220px; +} +.article-list-main .article-tag { + display: block; + clear: both; + margin-top: 20px; + padding-top: 15px; + border-top: 1px solid #efefef; +} +.article-list-main .article-tag .pull-left { + height: 34px; + line-height: 34px; + color: #919191; +} +.article-list-main .article-tag .pull-left a { + color: #919191; +} +.article-list-main .pager { + margin: 40px 0 20px 0; +} +@media (max-width: 767px) { + .article-list-main .media img { + width: 140px; + } +} +.article-metas { + overflow: hidden; + margin-bottom: 10px; +} +.article-metas .date { + height: 45px; + width: 45px; + margin-top: 10px; + text-align: center; + color: #c1c1c1; + border: 1px solid #c1c1c1; + -webkit-border-radius: 50%; + -webkit-background-clip: padding-box; + -moz-border-radius: 50%; + -moz-background-clip: padding; + border-radius: 50%; + background-clip: padding-box; +} +.article-metas .date .day { + margin-top: 2px; + font-size: 16px; + line-height: 1.2; +} +.article-metas .date .month { + font-size: 12px; +} +.article-metas .metas-body { + padding-left: 60px; +} +.article-metas .metas-body p { + margin-bottom: 0; + margin-top: 0px; + font-size: 12px; +} +.article-metas .metas-body .title { + margin: 5px 0 0 0; + line-height: 36px; +} +.article-metas .metas-body .title a { + color: #616161; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.article-metas .metas-body .title a:hover { + color: #46c37b; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.article-metas .metas-body .sns { + color: #e1e1e1; + margin: 0px auto; +} +.article-metas .metas-body .sns span { + margin-right: 10px; +} +.article-metas .metas-body .sns span i { + margin-right: 5px; +} +@media (max-width: 1199px) { + .article-metas .metas-body .title { + font-size: 20px; + line-height: 30px; + } +} +@media (max-width: 767px) { + .article-metas .metas-body .title { + font-size: 16px; + line-height: 20px; + } +} +.article-text p { + line-height: 30px; + margin: 20px auto 30px auto; +} +@media (max-width: 767px) { + .article-text p { + margin: 10px auto 20px auto; + } +} +.article-text img { + margin: 10px auto; + display: block; + max-width: 100%; + height: auto; + -webkit-border-radius: 2px; + -webkit-background-clip: padding-box; + -moz-border-radius: 2px; + -moz-background-clip: padding; + border-radius: 2px; + background-clip: padding-box; +} +.product-action-btn { + color: #999; +} +.product-action-btn .bdshare-button-style0-16 .bds_more { + float: none; + padding: 0; + height: inherit; + line-height: inherit; + font-size: inherit; + background: none; +} +.product-like-wrapper { + margin: 15px auto; + text-align: center; +} +.product-like-wrapper a { + display: inline-block; + width: 44px; + height: 44px; + line-height: 44px; + color: #999; + text-align: center; + background-color: #bebebe; + background-position: center center; + background-repeat: no-repeat; + -webkit-transition: background-color 300ms linear; + -moz-transition: background-color 300ms linear; + -o-transition: background-color 300ms linear; + transition: background-color 300ms linear; + -webkit-border-radius: 22px; + -webkit-background-clip: padding-box; + -moz-border-radius: 22px; + -moz-background-clip: padding; + border-radius: 22px; + background-clip: padding-box; + vertical-align: middle; +} +.product-like-wrapper a.product-like { + position: relative; + margin-right: 5px; + background-color: #46c37b; +} +.product-like-wrapper a.product-like:hover { + background-color: #08aa73; +} +.product-like-wrapper a.product-dislike { + position: relative; + margin-left: 5px; +} +.product-like-wrapper a.product-dislike:hover { + background-color: #999; +} +.product-like-wrapper a i.fa { + font-size: 20px; + color: #fff; +} +.product-like-wrapper .like-bar-wrapper { + position: relative; + display: inline-block; + vertical-align: -18%; +} +.product-like-wrapper .bar { + width: 110px; + height: 7px; + overflow: hidden; + background-color: #dcdcdc; + -webkit-border-radius: 4px; + -webkit-background-clip: padding-box; + -moz-border-radius: 4px; + -moz-background-clip: padding; + border-radius: 4px; + background-clip: padding-box; +} +.product-like-wrapper .bar span { + display: block; + height: 100%; + width: 50%; + background-color: #46c37b; + -webkit-transition: width 300ms linear; + -moz-transition: width 300ms linear; + -o-transition: width 300ms linear; + transition: width 300ms linear; +} +.product-like-wrapper .num { + position: absolute; + top: -18px; + display: block; + width: 100%; + font-style: normal; + font-size: 10px; + color: #999; + text-align: center; +} +.product-like-wrapper .num i { + position: absolute; + right: 55%; + color: #46c37b; + font-style: normal; +} +.product-like-wrapper .num span { + position: absolute; + left: 55%; +} +.product-like-wrapper.like-status-1 .product-like { + position: relative; + background: #86a4d5; +} +.product-like-wrapper.like-status-1 .product-like::before { + content: "\5df2\8d5e"; + position: absolute; + top: 0; + left: 0; + display: block; + height: 100%; + width: 100%; + font-size: 14px; + line-height: 44px; + color: #fff; +} +.product-like-wrapper.like-status-3 .product-dislike { + position: relative; + background: #bebebe; +} +.product-like-wrapper.like-status-3 .product-dislike::before { + content: "\5df2\8e29"; + position: absolute; + top: 0; + left: 0; + display: block; + height: 100%; + width: 100%; + font-size: 14px; + line-height: 44px; + color: #fff; +} +.entry-meta ul { + overflow: hidden; + margin: 0 0 10px 0; + padding: 0 0 10px 0; + border-bottom: 1px solid #dedede; +} +.entry-meta ul li { + line-height: 26px; +} +.related-article { + margin-top: 10px; +} +.related-article .row { + margin: 0 -5px; +} +.related-article .col-sm-4 { + position: relative; + display: block; + padding: 0 5px; + margin: 5px auto; +} +.related-article .related-item { + position: relative; + -webkit-border-radius: 2px; + -webkit-background-clip: padding-box; + -moz-border-radius: 2px; + -moz-background-clip: padding; + border-radius: 2px; + background-clip: padding-box; + overflow: hidden; +} +.related-article .related-item img { + width: 100%; +} +.related-article .title { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 10px 20px; + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + color: #fff; + z-index: 999; +} +.panel-default { + border: none; + padding: 0 15px; + -webkit-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); +} +.panel-default > .panel-heading { + position: relative; + font-size: 16px; + padding: 15px 0; + background: #fff; + border-bottom: 1px solid #f5f5f5; +} +.panel-default > .panel-heading .panel-title { + /*color: @gray-dark;*/ +} +.panel-default > .panel-heading .panel-title > i { + display: none; +} +.panel-default > .panel-heading .more { + position: absolute; + top: 13px; + right: 0; + display: block; + color: #919191; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.panel-default > .panel-heading .more:hover { + color: #616161; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.panel-default > .panel-heading .panel-bar { + position: absolute; + top: 7px; + right: 0; + display: block; +} +.panel-default > .panel-footer { + padding: 15px 0; + background: none; +} +.panel-default > .panel-body { + position: relative; + padding: 15px 0; +} +.panel-primary > .panel-heading { + background-color: #46c37b; + color: #fff; +} +.panel-primary > .panel-body { + background: #fafafa; + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} +.panel-gray { + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08); + -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08); +} +.panel-gray > .panel-heading { + background-color: #f5f5f5; + color: #919191; +} +.panel-gray > .panel-body { + color: #919191; + background: #fff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; +} +.panel-page { + padding: 45px 50px 50px; + min-height: 500px; +} +.panel-page .panel-heading { + background: transparent; + border-bottom: none; + margin: 0 0 30px 0; + padding: 0; +} +.panel-page .panel-heading h2 { + font-size: 25px; + margin-top: 0; +} +@media (max-width: 767px) { + .panel-page { + padding: 15px; + min-height: 300px; + } +} +.tabs-wrapper { + border: 1px solid #e4ecf3; + -webkit-border-radius: 4px; + -webkit-background-clip: padding-box; + -moz-border-radius: 4px; + -moz-background-clip: padding; + border-radius: 4px; + background-clip: padding-box; + margin-bottom: 30px; + background-color: #fff; +} +.tabs-wrapper .tabs-mark-group { + border-bottom: 1px dashed #e4ecf3; + padding: 10px; +} +.tabs-wrapper .tabs-mark-group .title { + width: 90px; + margin-top: 3px; + float: left; +} +.tabs-wrapper .tabs-mark-group .classify { + margin-top: 3px; +} +.tabs-wrapper .tabs-mark-group .classify a, +.tabs-wrapper .tabs-mark-group .classify i { + color: #919191; +} +.tabs-wrapper .tabs-mark-group .classify a:focus, +.tabs-wrapper .tabs-mark-group .classify a:hover { + color: #43bc60; +} +.tabs-wrapper .tabs-mark-group .content { + margin-left: 100px; +} +.tabs-wrapper .tabs-mark { + margin: 0 4px; +} +.tabs-wrapper .tabs-mark a { + border: 1px solid #e4ecf3; + padding: 2px 5px; + color: #919191; +} +.tabs-wrapper .tabs-mark i { + font-size: 10px; + margin-left: 5px; +} +.tabs-wrapper .tabs-mark.active a, +.tabs-wrapper .tabs-mark:focus a, +.tabs-wrapper .tabs-mark:hover a { + color: #43bc60; + border: 1px solid #43bc60; +} +.tabs-wrapper .tabs-group { + padding: 0 60px 0 15px; + position: relative; + overflow-y: hidden; +} +.tabs-wrapper .tabs-group .title { + float: left; + padding: 15px 0; + width: 100px; + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: normal; +} +.tabs-wrapper .tabs-group .content { + list-style: none; + padding: 0; + margin: 0 0 0 100px; +} +.tabs-wrapper .tabs-group .content > li { + float: left; + padding: 10px 12px; +} +.tabs-wrapper .tabs-group .content > li > a { + display: block; + padding: 5px 10px; + border: none; + -webkit-border-radius: 4px; + -webkit-background-clip: padding-box; + -moz-border-radius: 4px; + -moz-background-clip: padding; + border-radius: 4px; + background-clip: padding-box; + color: #919191; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.tabs-wrapper .tabs-group .content > li.active > a, +.tabs-wrapper .tabs-group .content > li:focus > a, +.tabs-wrapper .tabs-group .content > li:hover > a { + color: #43bc60; +} +.tabs-wrapper .tabs-group .tabs-toggle { + position: absolute; + right: 20px; + top: 18px; + font-size: 12px; + line-height: 1; + cursor: pointer; +} +.tabs-wrapper .tabs-group + .tabs-group { + border-top: 1px dashed #e4ecf3; +} +.article-filter { + position: relative; + background-color: #fafafa; + -webkit-border-radius: 4px; + -webkit-background-clip: padding-box; + -moz-border-radius: 4px; + -moz-background-clip: padding; + border-radius: 4px; + background-clip: padding-box; + margin-bottom: 30px; +} +.article-filter .nav-sort > li { + float: left; +} +.article-filter .nav-sort > li > a { + height: 40px; + padding: 10px 15px; + color: #616161; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.article-filter .nav-sort > li > a:hover { + color: #43bc60; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.article-filter .nav-sort > li > a.active { + color: #fff; + background-color: #43bc60; +} +.article-filter .nav-sort > li > a.active:hover { + color: #fff; +} +.article-filter .btn-group.open .dropdown-toggle { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + color: #43bc60; +} +.article-filter .filter { + position: absolute; + text-align: right; + top: 0; + right: 15px; + width: 300px; +} +.article-filter .filter .btn { + background: none; + padding: 10px 0; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.article-filter .filter .btn:hover { + color: #43bc60; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.article-filter .filter .btn > i { + font-size: 18px; +} +.article-filter .filter label { + margin-left: 15px; + margin-top: 11px; + vertical-align: top; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +.article-filter .filter label:hover { + color: #43bc60; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; +} +h1 .breadcrumb { + padding: 0 5px; + margin-bottom: 5px; +} +h1 .breadcrumb li { + font-size: 12px; + font-weight: 400; +} +#carousel-focus-captions .item .carousel-img { + background-size: cover; + width: 100%; + height: 120px; + background-position: center center; +} +#carousel-focus-captions .carousel-control.left, +#carousel-focus-captions .carousel-control.right { + background-image: none; +} +#carousel-focus-captions .carousel-control.left span, +#carousel-focus-captions .carousel-control.right span { + display: none; +} +#carousel-focus-captions .carousel-control.left:hover, +#carousel-focus-captions .carousel-control.right:hover { + -webkit-transition: all 1s ease; + -moz-transition: all 1s ease; + -o-transition: all 1s ease; + transition: all 1s ease; +} +#carousel-focus-captions .carousel-control.left:hover span, +#carousel-focus-captions .carousel-control.right:hover span { + display: block; +} +/* Extra small devices (phones, less than 768px) */ +/* No media query since this is the default in Bootstrap */ +/* Small devices (tablets, 768px and up) */ +@media (min-width: 768px) { + #carousel-focus-captions .item .carousel-img { + height: 340px; + width: 100%; + } +} +/* Medium devices (desktops, 992px and up) */ +.article-sidebar .panel-adimg img { + width: 100%; +} +.hot-tags .panel-body a span { + margin-bottom: 10px; +} +.product-list .product { + position: relative; + margin-bottom: 20px; +} +.product-list .product .detail { + position: absolute; + z-index: 1; + height: 30px; + right: 15px; + bottom: 12px; + padding: 0 15px; + line-height: 30px; + text-align: center; + text-transform: capitalize; + letter-spacing: 0.02em; + font-size: 14px; + color: #00b22d; + border-radius: 2px; + background: whitesmoke; +} +.product-list .product .detail:hover { + background: #eee; + text-decoration: none; +} +@media (min-width: 769px) { + .product-list .product:hover .detail { + display: block; + } +} +.card { + border-radius: 4px; + position: relative; + padding: 12px; + margin: 0 auto 50px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + -webkit-transition: all 200ms cubic-bezier(0.55, 0.055, 0.675, 0.19); + -moz-transition: all 200ms cubic-bezier(0.55, 0.055, 0.675, 0.19); + -o-transition: all 200ms cubic-bezier(0.55, 0.055, 0.675, 0.19); + transition: all 200ms cubic-bezier(0.55, 0.055, 0.675, 0.19); + min-height: 325px; + background-color: #FFF; +} +.card:hover { + -webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); +} +.card .image { + position: relative; + width: 100%; + height: 1px; + overflow: hidden; + padding-bottom: 75%; + background-repeat: no-repeat; + background-size: cover; + background-position: center center; +} +.card .title { + padding-top: 10px; +} +.card h2 { + color: #000; + padding: 0; + margin-bottom: 5px; + margin-top: 10px; + font-size: 16px; + font-weight: 700; + line-height: 1.4; + text-transform: uppercase; + text-align: left; +} +#content-container > h1 { + margin-top: 0; +} +.lasest-update .panel-body { + padding: 8px 0; +} +.lasest-update .panel-body ul { + margin-bottom: 0; +} +.lasest-update .panel-body ul li { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + position: relative; + height: 35px; + line-height: 35px; +} +.channel-list .row .col-xs-6 { + min-height: 315px; +} +.channel-list .row .col-xs-6 h3 { + border-bottom: 2px solid #eee; + padding-bottom: 10px; + position: relative; +} +.channel-list .row .col-xs-6 h3 > a { + font-size: 16px; + border-bottom: 2px solid #17bb9c; + padding-bottom: 10px; +} +.channel-list .row .col-xs-6 h3 em { + position: absolute; + right: 5px; + top: 5px; + font-style: normal; + font-weight: 400; +} +.channel-list .row .col-xs-6 h3 em a { + font-size: 12px; +} +.channel-list .row .media { + margin-bottom: 10px; +} +.channel-list .row .media .media-body { + font-size: 12px; +} +.channel-list .row ul li { + border-bottom: 1px solid #eee; + margin-bottom: 5px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + position: relative; + padding-right: 40px; + height: 30px; + line-height: 30px; +} +.channel-list .row ul li a { + color: #616161; +} +.channel-list .row ul li span { + position: absolute; + right: 0; +} +#comment-container #commentlist dl { + position: relative; + border-bottom: 1px solid #eee; + clear: both; + padding: 10px 0; + margin-bottom: 5px; +} +#comment-container #commentlist dl dt { + float: left; + margin-right: 10px; + width: 54px; + height: 54px; + display: block; + position: absolute; +} +#comment-container #commentlist dl dt img { + width: 50px; + height: 50px; + border-radius: 50%; +} +#comment-container #commentlist dl dd { + padding-left: 60px; + float: left; + width: 100%; +} +#comment-container #commentlist dl dd small { + display: block; + color: #999; + margin: -2px 0; + height: 20px; + line-height: 20px; + font-size: 10px; +} +#comment-container #commentlist dl dd small a { + display: none; +} +#comment-container #commentlist dl dd dl { + margin: 0px; + border-top: 1px solid #eee; + border-bottom: none; + padding-top: 15px; + padding-bottom: 0; +} +#comment-container #commentlist dl dd dl dd { + width: 550px; +} +#comment-container #commentlist dl dd p { + margin-bottom: 10px; +} +#comment-container #commentlist cite { + font-style: normal; +} +#comment-container h3 { + position: relative; + font-size: 16px; + padding: 15px 0; + background: #fff; + border-bottom: 1px solid #f5f5f5; + font-weight: 400; +} +#comment-container h3 a { + display: none; +} +#comment-container #postcomment .form-group { + margin-bottom: 10px; +} +#comment-container #postcomment label { + font-weight: normal; +} +#comment-container #postcomment a small { + display: inline !important; +} diff --git a/addons/cms/assets/css/font-awesome.min.css b/addons/cms/assets/css/font-awesome.min.css new file mode 100644 index 000000000..d22045eae --- /dev/null +++ b/addons/cms/assets/css/font-awesome.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} + \ No newline at end of file diff --git a/addons/cms/assets/css/jquery.colorbox.css b/addons/cms/assets/css/jquery.colorbox.css new file mode 100644 index 000000000..09b7f3556 --- /dev/null +++ b/addons/cms/assets/css/jquery.colorbox.css @@ -0,0 +1,70 @@ +/* + Colorbox Core Style: + The following CSS is consistent between example themes and should not be altered. +*/ +#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} +#cboxWrapper {max-width:none;} +#cboxOverlay{position:fixed; width:100%; height:100%;} +#cboxMiddleLeft, #cboxBottomLeft{clear:left;} +#cboxContent{position:relative;} +#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;} +#cboxTitle{margin:0;} +#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;} +#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} +.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;} +.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;} +#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;} + +/* + User Style: + Change the following styles to modify the appearance of Colorbox. They are + ordered & tabbed in a way that represents the nesting of the generated HTML. +*/ +#cboxOverlay{background:url(../img/overlay.png) repeat 0 0;} +#colorbox{outline:0;} + #cboxTopLeft{width:21px; height:21px; background:url(../img/controls.png) no-repeat -101px 0;} + #cboxTopRight{width:21px; height:21px; background:url(../img/controls.png) no-repeat -130px 0;} + #cboxBottomLeft{width:21px; height:21px; background:url(../img/controls.png) no-repeat -101px -29px;} + #cboxBottomRight{width:21px; height:21px; background:url(../img/controls.png) no-repeat -130px -29px;} + #cboxMiddleLeft{width:21px; background:url(../img/controls.png) left top repeat-y;} + #cboxMiddleRight{width:21px; background:url(../img/controls.png) right top repeat-y;} + #cboxTopCenter{height:21px; background:url(../img/border.png) 0 0 repeat-x;} + #cboxBottomCenter{height:21px; background:url(../img/border.png) 0 -29px repeat-x;} + #cboxContent{background:#fff; overflow:hidden;} + .cboxIframe{background:#fff;} + #cboxError{padding:50px; border:1px solid #ccc;} + #cboxLoadedContent{margin-bottom:28px;} + #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;} + #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} + #cboxLoadingOverlay{background:url(../img/loading_background.png) no-repeat center center;} + #cboxLoadingGraphic{background:url(../img/loading.gif) no-repeat center center;} + + /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */ + #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; } + + /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */ + #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;} + + #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} + #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../img/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxPrevious:hover{background-position:-75px -25px;} + #cboxNext{position:absolute; bottom:0; left:27px; background:url(../img/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxNext:hover{background-position:-50px -25px;} + #cboxClose{position:absolute; bottom:0; right:0; background:url(../img/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxClose:hover{background-position:-25px -25px;} + +/* + The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill + when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9. + See: http://jacklmoore.com/notes/ie-transparency-problems/ +*/ +.cboxIE #cboxTopLeft, +.cboxIE #cboxTopCenter, +.cboxIE #cboxTopRight, +.cboxIE #cboxBottomLeft, +.cboxIE #cboxBottomCenter, +.cboxIE #cboxBottomRight, +.cboxIE #cboxMiddleLeft, +.cboxIE #cboxMiddleRight { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); +} \ No newline at end of file diff --git a/addons/cms/assets/css/jquery.justifiedGallery.min.css b/addons/cms/assets/css/jquery.justifiedGallery.min.css new file mode 100644 index 000000000..49f43476e --- /dev/null +++ b/addons/cms/assets/css/jquery.justifiedGallery.min.css @@ -0,0 +1,7 @@ +/*! + * Justified Gallery - v3.6.4 + * http://miromannino.github.io/Justified-Gallery/ + * Copyright (c) 2016 Miro Mannino + * Licensed under the MIT license. + */ +.justified-gallery{width:100%;position:relative;overflow:hidden}.justified-gallery>a,.justified-gallery>div,.justified-gallery>figure{position:absolute;display:inline-block;overflow:hidden;filter:"alpha(opacity=10)";opacity:.1;margin:0;padding:0}.justified-gallery>a>img,.justified-gallery>div>img,.justified-gallery>figure>img,.justified-gallery>a>a>img,.justified-gallery>div>a>img,.justified-gallery>figure>a>img{position:absolute;top:50%;left:50%;margin:0;padding:0;border:0;filter:"alpha(opacity=0)";opacity:0}.justified-gallery>a>.caption,.justified-gallery>div>.caption,.justified-gallery>figure>.caption{display:none;position:absolute;bottom:0;padding:5px;background-color:#000;left:0;right:0;margin:0;color:#fff;font-size:12px;font-weight:300;font-family:sans-serif}.justified-gallery>a>.caption.caption-visible,.justified-gallery>div>.caption.caption-visible,.justified-gallery>figure>.caption.caption-visible{display:initial;filter:"alpha(opacity=70)";opacity:.7;-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>.entry-visible{filter:"alpha(opacity=100)";opacity:1;background:0 0}.justified-gallery>.entry-visible>img,.justified-gallery>.entry-visible>a>img{filter:"alpha(opacity=100)";opacity:1;-webkit-transition:opacity 500ms ease-in;-moz-transition:opacity 500ms ease-in;-o-transition:opacity 500ms ease-in;transition:opacity 500ms ease-in}.justified-gallery>.jg-filtered{display:none}.justified-gallery>.spinner{position:absolute;bottom:0;margin-left:-24px;padding:10px 0;left:50%;filter:"alpha(opacity=100)";opacity:1;overflow:initial}.justified-gallery>.spinner>span{display:inline-block;filter:"alpha(opacity=0)";opacity:0;width:8px;height:8px;margin:0 4px;background-color:#000;border-radius:6px} \ No newline at end of file diff --git a/addons/cms/assets/css/swipebox.min.css b/addons/cms/assets/css/swipebox.min.css new file mode 100644 index 000000000..38db35c84 --- /dev/null +++ b/addons/cms/assets/css/swipebox.min.css @@ -0,0 +1 @@ +/*! Swipebox v1.3.0 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */html.swipebox-html.swipebox-touch{overflow:hidden!important}#swipebox-overlay img{border:none!important}#swipebox-overlay{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99999!important;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#swipebox-container{position:relative;width:100%;height:100%}#swipebox-slider{-webkit-transition:-webkit-transform .4s ease;transition:transform .4s ease;height:100%;left:0;top:0;width:100%;white-space:nowrap;position:absolute;display:none;cursor:pointer}#swipebox-slider .slide{height:100%;width:100%;line-height:1px;text-align:center;display:inline-block}#swipebox-slider .slide:before{content:"";display:inline-block;height:50%;width:1px;margin-right:-1px}#swipebox-slider .slide .swipebox-inline-container,#swipebox-slider .slide .swipebox-video-container,#swipebox-slider .slide img{display:inline-block;max-height:100%;max-width:100%;margin:0;padding:0;width:auto;height:auto;vertical-align:middle}#swipebox-slider .slide .swipebox-video-container{background:0 0;max-width:1140px;max-height:100%;width:100%;padding:5%;-webkit-box-sizing:border-box;box-sizing:border-box}#swipebox-slider .slide .swipebox-video-container .swipebox-video{width:100%;height:0;padding-bottom:56.25%;overflow:hidden;position:relative}#swipebox-slider .slide .swipebox-video-container .swipebox-video iframe{width:100%!important;height:100%!important;position:absolute;top:0;left:0}#swipebox-slider .slide-loading{background:url(../img/loader.gif) center center no-repeat}#swipebox-bottom-bar,#swipebox-top-bar{-webkit-transition:.5s;transition:.5s;position:absolute;left:0;z-index:999;height:50px;width:100%}#swipebox-bottom-bar{bottom:-50px}#swipebox-bottom-bar.visible-bars{-webkit-transform:translate3d(0,-50px,0);transform:translate3d(0,-50px,0)}#swipebox-top-bar{top:-50px}#swipebox-top-bar.visible-bars{-webkit-transform:translate3d(0,50px,0);transform:translate3d(0,50px,0)}#swipebox-title{display:block;width:100%;text-align:center}#swipebox-close,#swipebox-next,#swipebox-prev{background-image:url(../img/icons.png);background-repeat:no-repeat;border:none!important;text-decoration:none!important;cursor:pointer;width:50px;height:50px;top:0}#swipebox-arrows{display:block;margin:0 auto;width:100%;height:50px}#swipebox-prev{background-position:-32px 13px;float:left}#swipebox-next{background-position:-78px 13px;float:right}#swipebox-close{top:0;right:0;position:absolute;z-index:9999;background-position:15px 12px}.swipebox-no-close-button #swipebox-close{display:none}#swipebox-next.disabled,#swipebox-prev.disabled{opacity:.3}.swipebox-no-touch #swipebox-overlay.rightSpring #swipebox-slider{-webkit-animation:rightSpring .3s;animation:rightSpring .3s}.swipebox-no-touch #swipebox-overlay.leftSpring #swipebox-slider{-webkit-animation:leftSpring .3s;animation:leftSpring .3s}.swipebox-touch #swipebox-container:after,.swipebox-touch #swipebox-container:before{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:all .3s ease;transition:all .3s ease;content:' ';position:absolute;z-index:999;top:0;height:100%;width:20px;opacity:0}.swipebox-touch #swipebox-container:before{left:0;-webkit-box-shadow:inset 10px 0 10px -8px #656565;box-shadow:inset 10px 0 10px -8px #656565}.swipebox-touch #swipebox-container:after{right:0;-webkit-box-shadow:inset -10px 0 10px -8px #656565;box-shadow:inset -10px 0 10px -8px #656565}.swipebox-touch #swipebox-overlay.leftSpringTouch #swipebox-container:before,.swipebox-touch #swipebox-overlay.rightSpringTouch #swipebox-container:after{opacity:1}@-webkit-keyframes rightSpring{0%{left:0}50%{left:-30px}100%{left:0}}@keyframes rightSpring{0%{left:0}50%{left:-30px}100%{left:0}}@-webkit-keyframes leftSpring{0%{left:0}50%{left:30px}100%{left:0}}@keyframes leftSpring{0%{left:0}50%{left:30px}100%{left:0}}@media screen and (min-width:800px){#swipebox-close{right:10px}#swipebox-arrows{width:92%;max-width:800px}}#swipebox-overlay{background:#0d0d0d}#swipebox-bottom-bar,#swipebox-top-bar{text-shadow:1px 1px 1px #000;background:#000;opacity:.95}#swipebox-top-bar{color:#fff!important;font-size:15px;line-height:43px;font-family:Helvetica,Arial,sans-serif} \ No newline at end of file diff --git a/addons/cms/assets/fonts/FontAwesome.otf b/addons/cms/assets/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..81c9ad949b47f64afeca5642ee2494b6e3147f44 GIT binary patch literal 85908 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 uQr82 literal 0 HcmV?d00001 diff --git a/addons/cms/assets/fonts/fontawesome-webfont.eot b/addons/cms/assets/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..84677bc0c5f37f1fac9d87548c4554b5c91717cf GIT binary patch literal 56006 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�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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/addons/cms/assets/fonts/fontawesome-webfont.ttf b/addons/cms/assets/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..96a3639cdde5e8ab459c6380e3b9524ee81641dc GIT binary patch literal 112160 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 zÄ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 V*eEM;|ho{trTA6=?tf literal 0 HcmV?d00001 diff --git a/addons/cms/assets/fonts/fontawesome-webfont.woff b/addons/cms/assets/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..628b6a52a87e62c6f22426e17c01f6a303aa194e GIT binary patch literal 65452 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 q%u^)w#YX9ZIvhtu?9Cy6YRi6f6G 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 literal 0 HcmV?d00001 diff --git a/addons/cms/assets/fonts/fontawesome-webfont.woff2 b/addons/cms/assets/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3311d585145b1cc1b9581e914acbb32d8542b4f5 GIT binary patch literal 56780 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 literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/banner/1.jpg b/addons/cms/assets/img/banner/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..140f636fd0be1c807c0d69cd4667ea93bf2a6a63 GIT binary patch literal 59678 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 W_<#MuYld)!IR5#Eu)q}^YyTf@=;t8- literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/border.png b/addons/cms/assets/img/border.png new file mode 100644 index 0000000000000000000000000000000000000000..f463a10d838aeba263ff44e5c3578dfe7ba07648 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI}$P6Txn<}3KQfvV}A+A9B|Ns9>Z_d99WHFWm z`2{zujf-{zawI%m978JNrXFPE1@f8<7E8}%%lTu>&#KnM&G`7uteHSj22WQ%mvv4F FO#q`M9f1G< literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/focus/1.jpg b/addons/cms/assets/img/focus/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdaf9723ab5da20fe204ee143aab9db93b358a21 GIT binary patch literal 76194 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 b1e{!OYQbmjVCV(VD_Ci?8CYrf@%R4+f~NX} literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/focus/2.jpg b/addons/cms/assets/img/focus/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb110e2041260d14ce11a67e60c6b668a7ebae7f GIT binary patch literal 65468 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 Ky1NLu`X&JEH;SeJ literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/focus/3.jpg b/addons/cms/assets/img/focus/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76873165efe52916299e0fc2fdff0dd7c09f0064 GIT binary patch literal 84980 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�A@wt@1H6pXCH-g5Wn1ui`nQAq`z5tV%qhuE zXh1pk>wi%6o2?VIyg&Xs^XK0im;YCT>OXodfUO)Z58Znfh=J*?pH3alhDw3KPZM@F zBSS~|TF4{AgN4tU8Nl$DzBX<aK+sl#S7&ml-<2spL>67&$P_bEdAgwK6k~T<_^z~qP)G~ZZ^F?xznSoYDH6u zT_D@-ThxzAL};T-STy#4uHdXn%7 zfRp=pjxRQinN3{G(I(Y;VphiB_~mlCqulx2GP@cFVCI~rI;S${>N_`F*AYGZXa1Ft zzwq$aam^Z$IiY+Esh!na;}ZT^|M1jT{tW}U{}ow`EzdH$99jJGrEsP)r8soBp(U~} z++Ae4ly)e){BfGqr z)vs0)T^jLb1yii9wr3tzrRFN~1ot8GWglcOtp6HL;0ckWVEx1cv9stD!wW@iZkOAc zpbXMMgWC%th>4sb)-#YIEcZ2krP&YM z`QC`0M>771|3bn~Qs!)Ci7)o`8dPv{@n}HrPfiCXPIOOg-~ov2=QlivA|zWRzSOio!yuyg5_x8_gnjGlHnx7t!4DSg-wBQoez6dG$^?r^Hj_b&d& zgk60iW^w}_>acDpCz5m?)WyAu`hwL4e4{a{1C4w6y~!*iva+>FzG9Y@zm6Wrs>=WR ziqn#u*2O`ekJXZu0LveTKwG?w-HDcGec@D3JvLYh#kbOv$5MxqF(K|j25N6s4On7%*I{<-m>W@@`F zY@5$%FstzixI|?VnXm zZzMlQrflFy?CcI|>^;cFBlp9v=>PbI>2j$+#~Q2ZjU1@MGkrHZN8Cy4Jnib!iQg-a zSOIFH&Yf{vMxz4r6Z7qi%nE&*Z7y^XrV({=!X@Rz@_%Gl9^2@z`k?BQqoIf;u-Jhp zh9HkBenS6WbH-qLb@S>sxX4Uby*|$tqjKMC*NMg+5CG#`LypD zy?Sg7jhV0QUxUv>06;RCnmis#t|8%e{A{h3?b?#zw ztz!F^@g|F%YQ|K?`t{7@rE}(*qxS^yuM7k{`l<#;4|i9+ags80V-5$#c=344S)Y2% z^F&7df8}FgUR2sXYGor%?wS`<*O^>pI!e{ zT@r+{#NT!mkT%>La2-(l$Up9TAaQoR)cP=K-PK0uhvb#;dp#VBgt}4>pkw@DQ|hsh@rq zvq5STtDhskB-x~?&8%3~t4%;50Qym2rXKlk`p3UDeEy?z^uK$nN&pD(zvz2FSJaF2 zGU*>L?9S9zyYJhbR50f#9P(!?QMw0S8$X$kNY_%WrPj<*?n2WruwYh;RgdQEEtWV) z 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�}0g^5sC#roLfoj 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�)^=!z5 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

                                      5Kgyle^Z0{3WYXRa$DHu-xkL-FuNV zv{y%@s;I@jyqKbV(N%xoNqH%lqMxlQ0E2v=h!@G@GZl^aQbd{3@cSnjClIMqQzBx& zVkZ>8tUSxLUr}BV zaFRs9SqMLD^OKT3U$-3p06cY6hW6v%dA3UBtszbrTGjQ=tT|RNo_HUq`f>H~pSSvR z)L>~2L37NrcvREX;5>nko)7Zp?e_lP)1jy+T=q1Zv-sb&jmn~!*+%^51-!I4+PVdlvJdw{IPkw&i z%b~7<-1s-;sm=_LH*!7O$>6GEl5jn|9zi~GKVS3cB)v>nK&Kb{S5M3qObE#w=fURy z9!SnVx6`1kmp)$Jx`>xrjXnFk7EI5B;~5-z{{UQnPILVF8B=%B$5Wjd+4GPD^`qsl zv=mJ20VgE?08i=k{{W{#I%FNQJ!{@jK#*L?2|oV-LB>Zv@9FQ-Y_sqA zgkHpb>63~IRgP77;`44FV~#un$t0eB-{0%u0@lBSWv@Ll;_q#Dt;m~Ki<*<@#5+FX zNjc-5NaP%I$<98x@I3L-AnC|`we9N?W021_w^2u~MC$Ji#d~I|xQ9?$dZqbr0NYWJ zy#D};3-9;FdinnVZ4frb)qM7rIlufWY<=_aYE}N^eiftt0P$~O^8Wy}m|p7z(#ZH` zV8xl7h73oQ!kh!1JRUgDS<%!eIHtY#PiQWhrGsQ(lEjgm?d7l!JYez3&q@OYRW&oK zE(#pv@;6{{oB+e0=lAEQW+BFL6$ccppqgr#6F;0`ucI<2fB(Ll&TL*?2`Iq>_Ki%>66a;|Q6ms$Ol4BMrD8F>D;OZsmb8ZmuzYVdD)V156r6P?Q2zHAeb`8?n#00tXRIq`$WeDx>_0jC1zJpTYSg9=K=R={8sWZ>>Ev}fjE zNdz1=J%AYUR1lP_PZB=ya#?5A_S3&`baOQ2$%fD3u^%8Sg-m3VpP~Ms`*YO^$)$47 zi#X%$q-hrq{y!8~opJ!hyATnZnzmsr%4O*4D) zczA5rq5_s?P^4l$p~j%SWOCyNoP3_lM&e1x=OZ3?&$#MIBI-4-c7e@D)EUhzk)bNt8C>!0b>q>z4;muh%%v|}txN|p4` z9RC2AGDt#6ebIHxJ~%CTx?1GH1yn3v z0%##`4#E3J$s@{w?f@f&Tw@=6;QqdFI*PuUDu=I)JdcDpm_cCXrjJfE{w)PkEC9B7 zH)XC8cgIpeFTmY@QZG|=_oTOYgxtTO{&PV$3j=v0s66&zy+o-xnYKK}mz zPp?jyWVs@hY=dh~???jGx*zicF-=VoY(}a-#6aDF{{Sf-58DSnPi}~ylp)*(U}|aj z$Y&4*WUzlM&yO!739F{7wp&rjl>_oVXB+Z4%Kfr@{{U0%)g|K5F0L-aT^+%-%h{sL zoGi(Tst6q^%ziy0K5IVnQPQlaD%LHf^3O7%0AQSa;0?d#2ftZZjCajZN@g>LU`ZUQ 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 RoS(l(HNAP(5F}W~|Jg-QE|>rS literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/icons.png b/addons/cms/assets/img/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..7a79f7a75cc17d4dd61795b9f4c82cca02853ca8 GIT binary patch literal 729 zcmV;~0w(>5P);IjcJFb2c|KzybM1alZL1|jAxf(;-sujmH&t$?xu*g?6kaw6CD zPw@+N(nPYNHp%nNJ+b}lB$=6#Z7>+j(XA#)@*V3f3ylqE{N&P@a0QAv4vgD{z6YVP z0|O6Z(+iCY(DZ^bEA~6k`5UUU@_-e%sb4oR?>y8zuIr(39h;gTh6AZbsfGu#z$1MPU4h6$?J+w9u>kEbU>J|if1TZSPM)Wfj z<2WV6ba74-h^0i-PO|O!an9DC4AVS#G&9hb92`^Mc{Ht_pCA zfGl^>1ajYC_7DE2`I&B;co$tIxZIG{B+CXlR=AXT(gPT!zL4I@F(zN2*SvDYADbp2 zs4wJ+w_K4wEMotzxlw}N;#~G~naO?Jk@vK5Z%3{=wew&P$Wg$Rx--*5Sz5>rxU_`1 z>htjGS}=8awuFj&jcz^H@=%rzG8bF|rH;WqaMOlULw5C#IgWF}9RchJY?4|-&H>SM z2{+sfum{{8_4x*2HDm_JMZlE-o8D&7Im3j?k$6$IN)JIaTiM2B=zWEGx`ia~gi2?A zx{|emgE~MX*|Nbj5Bq05EVH|Iw<~ZESFrmP`%jp6lblsR7L0;>r@Q23!_WId%R4#lvkVY(#Qg00000 LNkvXXu0mjfCyPmL literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/icons.svg b/addons/cms/assets/img/icons.svg new file mode 100644 index 000000000..414e84411 --- /dev/null +++ b/addons/cms/assets/img/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/cms/assets/img/loader.gif b/addons/cms/assets/img/loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..a82c2aa4dc6114efde112eee35bc36975e0e67e4 GIT binary patch literal 2608 zcmdVceNwsM1&+2XX^}Xdn?PVUdn-NeEaq(kLKf zf+zxFVL(Ko^(Zebpk+d>1(iYyA}Us1qK3jil&ELNTIbrH>e=RkrQO-t{@Zp=_x$<% z^E~Hse$V&&$m3!p>vZ0LH}EY0xVpNIj*fbIdIkjrMMOlz#>T4EYJY$KsHmvqjtmxqOgaX1{MQW+Q+C=?2tnwmO0JFBXyBoaw(ZfcuN9A^_0K$RblLk3pk=Md?)l$pV#C(ZYlb!0P#TCm?RifChhRXyCbIy|U8aV2(u*}r1ZDvwcRpr3 z!hmHNC3H4NCxE<4_2i^{pmEQ(e5!Pdp3U8ZbJ-?ZZT_kAI43{G#OzlyO>&cJ7)MO8 zrZYEAo8nA0Hh^VPe0c-1&&}u|%ETOe`+d!*?dFHz(ACKAxCIafJ9;kQuK zk);do!#;m^e8sO5#S7VH$}LuO%C!v@=aklxy?m~*;@P35RZ%IJs9`^~HBM4w@7Yye zV^xF`4KVtB`E^5dPflwATt+ z#n&clXyza2!%|n{09T)T|Dt{F&j!GUp@z5TX{THpMZh(sjozZ%f;PXz{Hbmf=cwpN3iU z3m(jJ@hzQAQxA=>#f2C@jXOad^Qf)GMvtdcnTpi~wzIqFa^_%J?aayYEslj_j9^Ee zS6p|?Rqh*6&Utz@SETI+@3e9P>6alyEYUIy6LCc4u#`n8CMThB`#E%WmPffh<32a*R>X#VjU-9l7oF z`9iB4niG`)-mqSS1b8vnB-62`O%hM8}uJ5U8gy2>?53sBov|OzJElvGm@m<9%W^} z`XRElWSrU92-LsICC@h0OK8TqP0nCKx>1F**9;_jHzu&kYPDcP8~>U!oXBq7?h`mn zPUIZ51 zEvDDqMS)*raPmlge@tlKzCA{lVtb?(@AD0cPC5IK86D}lV&Q_Q(>IN@0ThjNtOsh1jMOKF|bF!UU8?^Ic z>VDr18AZea-g~K8RP8Sym8a*g(;&lXKZdVYuGq4cRe+se|#|KK4dPvR1~v9Ly93JPmK3@C!cP^q29GYF0C@!+KUbx{*f8VOrN?>6Q5* hw6?$|ULSgP+4Ycxy=$k>J1cIzv*Ok-{*PX*zXK?kgfsvE literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/loading.gif b/addons/cms/assets/img/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..a32df5c0881b563e18f3660758009a4aec47a5a0 GIT binary patch literal 6244 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 literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/logo.png b/addons/cms/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d76d7cac6bbf3ca25ae1dfe29e769cf26450decc GIT binary patch literal 23120 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 YogxoaaE`yIgpK@0YbOCmEIg1o&U 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 Z4|>gCtz-TJR{tk``M+Cfjxzhh{{r>y7gqoP literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/overlay.png b/addons/cms/assets/img/overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..53ea98f7003cf014cda2f764a7d982e405bd1b5f GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^av;pY3?xs=ZJr3E3<7*YT>t<7&(6-y!NDOSA|fs> z4iv@@^0LaF09818x;TbZ%z1NeAuof1z|jlq0?ZV)A8h5lQLnD@Q>uGq<+3e(rH8NF wGFLG_IXT618W25kEc*C=-akH|?*IRp8MKNmPAJ`FsRUW)>FVdQ&MBb@0FX~HaR2}S literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/qrcode.png b/addons/cms/assets/img/qrcode.png new file mode 100644 index 0000000000000000000000000000000000000000..09711165c3594d31453dd0ca3ac9caaaef0e7332 GIT binary patch literal 2751 zcmbW3YgiL!7RM(;fPjdRn-`=_Rxq$&K~zL2W(>L#qJ&bHi|B%DEJm=XRic1QLMdYP z!KjE73?O2WMJ`4Jsx=cUY7{|BKm>uLQb7VST1+tHGJR=3?e4SH?uWTN^US>SKj;5D z=e$QEBi7Bdoo@?4&`f67nkaDX1;=BO6*zBxK|2pYgiLN|Xe2Wyj6l6X_bk_X zAUZoreDn8}Q0poJ=cp6Gjl@w9F3YLovnXi}MeVI{w4=k%b{rPe3p2@0R(T@(t?~RP z_vRh(LYk~)ALY49`SM$9Z}v;0dQR}KGp)W`dBHCjId}V1@tpZ~d#%ZBeh2(o{5<`N zmd^Ey^?%_XSXdcdz;_B7nX}Pl`?pC2o`G;^z~67Kq&Js0x?c@jcXO$49DChOne-7< zY44OoK2Nt6Y)EnnK2B~+kVzA(A4sMBUy@nHcccx6W?6jM>XlP;|6?nwtYoX)T_d&* zM;(5$Pcq(NpD`ggz^XBOo~p)G+9PGYz1^ulnkD~0WD>Kjn^FZc(zLE(tbPtzT#qrVTdwhiTTHp*nla0q z@v-_xgu0I?oEVI1Fr*9KMifQ_9;AhRap_VOuOdyYGuBM@l&0=S$C}g8r2gZ+y{dSB zdHt0X}rErepHc;$h3a93)cKiT=nqg!^(w#u{;uQ1U8C@C<^VKn4 z?)l}>*p*7XTpxx0>qC)gOL9-DL2m9#?@I_q$LMj2Gbt4uI{^cc*?wG0Tm&-$KJm{* zs1%N6X*BFepq6;f3oR#;#W34jaD*@1P;iVIN%BEy-a4Igtva|(#VcQiUdQWOD%(rm zcs$J{6k-@(IDqGic3%eeg2Y9~JseQE) zDbJ#@G@jPUii(24J!ytYt=t@w5Y?wpY3WNa-(Ffl?du)Df;ZY=BMmI-c>nQ%M!qm) zYRb**2s3mx+mk=ugvdTPWU|L?2vkFkc=-p5UrlAu^oJUez)VB_m68=|bkYpti|9GLSzUTDRDNFVi2eZ1l{R6V8E$7txH z`Yl)p`n0U$%y8<%X}^62vV#Osh%6jY6HoGm9@PEt1-|e!zt6^*+6 zCb7v8R^jJN5#mMRc$BBXOhk54_>Ke#o@+RxZk7EwI~XPBrB6)Hl|zJ#EJKK$jhN`0pp(5pM6Dtl7q8+Xm}U4}8D;hi)gF~`TI8fbW? zICWJ+dT!3@3|?Q14FD8$Wy5S!b!leQ4H2dWjV!C0uC5p1Hza?4aTP}M?m3PtTHoYf zPB$$Bs?(F0Ca$STl8$oCjrhPSE_&*kZ||CWbK$S}LgxdUY}ONV-lyfX7!{|SlMLAM z8}dqCQ5WFAIBMjY!Odu9HC9`teL7KJiXX~K5bI*f%MehgQ04k^XRwBWl;?J_ijFzp}9z&3I5U3dm6 z;fxke!~gHO{3Ac}0289}&1gnOI*qBF4%{YC+dRSo*#JmSRB37Z6Mn}M)Yq#kZDjFHM z4|zH600cUBu_+`{92B+a5g^d}BFNQ6#l0VlbRK$``|!-*!9Km*)TkXWu*RAt)#$Sk z*87Zr|0u&k?38nc;p@k5@=p%#>7>eyzgZ;L_nFghE~+-30xEwi$v+jlQskq&z$<)X zU!dZe8*ao#j8)mBX?$z3sm!EH8dhP}_W$lye`FY#Tgi$g_b0YULiCNAWi^I)Wh0gb zm@k{zJQ7-6F1mD&SIYZ=FPbI5~+|xxI1ltfE*oN?hi>(4e2-FEzN<%CnbFnBX t=aY literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/sidebar/1.jpg b/addons/cms/assets/img/sidebar/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9baf528b691675c8e278b79bb6c98c5e9decfc40 GIT binary patch literal 54318 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 LNJB_NNJszKNki>7 literal 0 HcmV?d00001 diff --git a/addons/cms/assets/img/sidebar/2.jpg b/addons/cms/assets/img/sidebar/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3f163189a6f0db288a9e284ad3e259d0fa906d6 GIT binary patch literal 46229 zcmbrlbx>Pt)HfPjindUoxE61L;_gzQxI=L(?(PuW-QC?GSaDBr4O$59u9tJp`+nct zKkwYVCNs%wS!+M}Enm;;;_C(gOGZLk0ssR807$(N;B^Hc`u6Mp-|^2w{{KDU?e5ne z05&q<0frF{1{(m24FiV_^V$y}0RUj&Vd37y{XYjR96SOFDhv`b;@f#MEC2uj4h9|( z9t9B|69pRv0Q1jz03tThdvX?GWRwp$iU#)nac8(6De~%?e@|`V;j?nNo^y&g&k|74 zaI2}CIXJl_6}QaqQc{28FbqjZY5L5@E+(mBVruRfkepvw(%1@pV?_G4WUz07ydD25 z$r~qRL?jdhc+_`q7dT?SN%F=U5dje%6$cR$1?GPwLBb|~&mw$={I4Xq{&9JAA30r` zeos+wY@Vaw;S;c`IVU&Ip?;#I`pou?OGHUs!_>^tDW!29YVMF!QrbXGBd%;@Y!VQk zP*glHyGzS1Vdxs1SkOE8x(q;jTNzkvIBb9*;1TuKu*0k{wMS?K2-D%sbyfzzhGw5Q z5GCoA=jWdH*xn1=O?vgYyr?F=OK}DI`gEM3&r#l9W(()=mZdj|GZ@?Fkic|P2*9)# z@V}5uK4dn6fjlaI6=64^%+D)rMpI))L*(VD4p_uq^{4AKt*$^pzy%r&(zG@_ZNsc#2#BTcKPdg+_T}b42IS$ z)!qJX)}u+S4L}sa6@#fN6s;NKEam#}ocTm=NvjXoMStqJQ$^!*1}k8|Y;QwKe0@aa z9XA9{oKEIdjY|JxSPd_f7q@{+M%W6S?DAPg;$MAyEJv-dMn>dBBIN^i1Hqa?-_ADw zegby0Z1Ehh>klI-K!1Qwh_63YsTRSAiIRt_HcK*Ijs0|%5ywCjEPQwS!1;JSNQ1t7 zICNn)H1tL9poZ`9z{Cj5fAxP@f`@h(g-4{(nO)vVvuNWr;kGGe{CuQt0e7AG7MgLOSuqSXyMtD*QQC6VZNJ$CW zfyCI^aakn)6YXWRMp2oTGMgwc6ltb=XtExF)ByGc3I6QOPp?pFqcyf4ck{f=oym5; zoZ+dH#v(IbbqhIx8+N@rA!XKM7sYrMbvb@~a)5xCUjg*l-i8EbH9oHZpf|rpznH@r zL{VJ)9}(zixTRoeNF`He|MK@8K?Uhm9m-R;JA98ezQp(Ser zK(K@cY=shBZ-*R=BA^9+T@b#$>~jTTw*pME4YJP`?9LvqZ&d8DN!Tq*L!%#9`jRbD zRowTL<0JvF)=xcLMm`RLp$`=VKp^*vS4&9yN!hr=7?4uw7qK`_(LY2r2#EcRJCoq7<(9)ei}~ND9$eKb~5aqZZbB)%B@w zZ~bl#e%bEvN#M_VtE-VXpFOeS}t|+4@qa^PT%SyS2VYGJ(Rig#? z9o7Ia+((nN@zgx=-m*HUjZ0rP@i<=UhYZ}?nA|{aHW4J-U!FP z(cs#VR9pj2K!Ak%?Amc#rbbm!!3)5J=!<^8tqExJrgf|G=zb)L9UW5=Ss9(};=4pLTL1%AeENJL1?g03~aA=tx6LqFW?PER4FCe@9Q zK3|Lt=-eTM^6b9l?bQ$dQ#`uQ+){)R#OquS^aHdQ=Qp;{Y@G6IRa~SVI6t$q^=$Uo zcPXUm4O-bgpB^smT$R}^!xe>)T%PVdAMej{FTwoR|^IhctTGuJ5`p#x`l0H#~m%y^IBxQP&P_$8&y-c_w@@Fi-E*TC)84Ai;y){#l zE=2LeJO}P#5O(rD-Kw!gZ({K6LvpxHxrd*82pcbly&TZJbSj;-=w$vO;aPfvxHUdM zu9!`zI-QsUG3#WKPG0{OBKCTW>G`InrI@R`yBC1&A2^8;5|U@@h1-;k$=*ZtaNj`n z!}kNSzT3&|Eo2Bk_1o0Bs+2LpZ^jY3$R5&#Lo_wESeM3o1`C3O@pRCQn%CU zc)C}P@Aa$=JiQ##y*DY6&psi(f1bTokYt(sU)*9i6ccck@=5kqDuw>#6J&1U_T--7 zYuTyUnXX7wP$7!J5Z=H|&(A1gh=svMvn5`IqZ|xO`J@_7o9Ktgap`8WD&UiM74k4h znTyd5&9%9{cmD-RPU0~pHS_WE7EN}#Hu@C)-_l7(!lR|y5f077pvJH4`+V}6|@PmWHF^w#{ z?63md_M4NcWW*ahh~Dd@4O+Ew6vc!sF)SoL)i9f_0v>}#mShAb2j!RGCCF(BeLe-Z zS)ViQo4I`>j{IO*Rtkc@1m}-@2LsIQz$LJNC>c?7CeU|?rU@{%4P>Nr|AGd z>u_BEfl1>0)EJ%~t|?`N4+nSj$xJ!L#~;k+RX#u!o@$ip_t$aAZhOpS0|K6`J2q=7 z^%?p>%ss;sd$Jk(a7EPc*oqm&t#J?e-(Y|?7mJk(Oa|^cX!~BB%kA;lTk^#xE&8BZ zVV65d%yEOTmaxs?8rWP9FcF@Sy~L0lg2>Iz{%fBA#uiF2SsI10G=#5!@2-sZm)AZA zgEZ?kE?TzG&_~W+6arPtwivGf5X%BT;9H5?>8IQ`n_m4a@t>hmHd81>3k`8c^uD#J zNNhiVOR4Fg_gSL^^UQewS;i?Sa{v%O$XH4xe^V?RJx01&s)K;QflYCKqR27+yJ$hz zPbz-DYIrQv=%`SDq32*Q2n^lP=$Cx74be2o$@YP4mMRbXkoZ9OZV`A@u(8*B|1Z*F zSq-j`SgusVb)8|}Fi%b2DK48E?dE_%Mk@abAmtebkbwDLj-Gu{l~pa3!U>1~#*)C2 z<16KC_gfVp-#IkInXyWglva{*{|vJvrn;1Zd(RM<8uAJ-gY3vY*53f0M5Cn00sf%S zbJ9t-qm;OXUJi2QCc*vw{7w<4HOQP~vHG~Z3b+#}zEpd%s0&6L4ManTY z<;c~~QhRE)df4gjxUJ$RBSXp3tFdIEbV;)47sa0qn0AZ21zB(r`^T``^kk*JMOvDn z;y~qKTRrNL!-ptjh{9lQ##JT_6NN&s9u)0nK19n-zNeQl*i>TOwfHzN8yKG}iUrgd z{w8fAOhGI*Y61^JU>R1#`hbH}KfBj7?d1xAVVIK*u zJ9pm8H1dLPYdCM}Mso@CTV&Ym_f~2$9iK2QNpoJR?_Y3ZS$?3w zec6jK*dy@aTv;Fd_RMVm?k3p%>=kg<0gZW~9PDCUoYFPw{Heo|Y!iQAvO;a%g$$|| zSgbusgUmr%H+eM?gwkDa$(NVm?q{llN`?Q=90gw z5{&47V`D<%+!{UoSqtGwsg~-2=CxS}!zj!ulQiN=N4se~0{xvh?TYw9f*i-5m@HGz zA^=Ql&`-*%**?;fD1(>BH>bFb`jAsJNdEHYRB){W`U;>_quMK*cJhB{Jsf_+zzAaQ z=_`Qq7uHrW0Wz{rYBSCAD}bTu?LO?g=W9wJR|roO(Ea6l_Z4ve>3|_*wbhy~ictBPM*kOSm$?QR-i^$d|*HOJhnu?w`pqiNV+#Q7F zGQDq~AkMX?B|>g+9!?*@moiL6b-)oThBJxvn`8GGeQNwCtXmF;{U4vx9i>qOjy@qx zxt#TL--o=p9>=gD%AwtBHOp}EH!CZ)?N=nPYM8DsbWTcSS1DpZ%-_Lxk99e2$p+1K zy`5=#3swFhWlLI>KA-cmCp&h-6#kdoTes*JZXan(5+80KYxeT(%psyEQ@~iZNC5XG zM5^d5zWoplo5ZaeZxLXyWsCin1UFPJ+aRU;!h6*sM}T;BXQ(T)T;;!KD`D7?8M{LL z++Ij1M=O<}sh78o$FXR4j+5t`szcn-lucWd(ZXXedzG^!N39nmHQtoP0l6-ZD+)1JAEM z&Iv)#dqPl}+4%-}3RV$!)&r9g3K={Zjpr-Hnx}nNF zMK4HEMvaW8{uL1NQtP`C@uOw@+5ui*^=Gr z8mGt-W*+_F@8Qth4C%EYYNu-tX4=Y!TRPjy9Q718$Yq)P%Rc3`C(n74E4s5TPSLmW zB3Z#5H#bbi=QZ5ecdZVyNV?AJM~{6`@_HxE;LU!3t8FQgz#k}O*8O!12D=?v!}+5h zT?r;BI&Vu9r?TRAa_s$IINEbEwPuO!W#GbPIs2j&R`*zBWUSh*s?#&AFkg$CUl+> z8F?30K+voq%aU^@N$dY$3ME9+?X<`J0_s@|cGWcD6>)GhWEOQc9|N z@w=Lyc?tE{pCRu&v|Pg@uQ|3%)8m>iBbP_(UFmSfivE4udr=nv+dA3u5dyTr7x$TI z==Jo8Twi1njBpXa$bPRx@{P=D(AeR9h?}B@ao+Kin8J}Y5wva*=a6T@AH5#NrTd+k zs8xqna3A3iF3J}|+9%WMAxRsSop4Iww z`Ty%epYlVt8<68GU~j+|e;&PE-m;OS_19pbWm6~d=MU)a;~a4Y#H{GwY38UXD2*Z| z{RYOGb92i_M1h7oN;hUSvWUyHwul7FV8)D(t4+p4>`oU1=}{?m{FRsWO86eZCcfZT%wd`s5(7-#`*(DhP_^*-jKmWQSa zW0-ExSE%qATI*qZMWn$8n#{Wtu#j`49K;oCGC77#c66e^W z1-o+4ZY(AcYm2cvbfzfI&m@Q6T>`Af@UQg6pqdr? zW~?Z|bbnnXC8|HEfS;i^Xyv>lethl_M86IlBzmjHVXC_(@o_`rAo8m8|GhG85k39b z(NnxV2?bo=?)veLChAX{Ot$m0g&+FolO?Wvk0N=gD>|aSF;T`4VJs}bm@A3bF9vV< zpH)uKBg@l=F{Akkr=I%?qpLy6gQfPxmk3{O%r_(ZY=EsTypV>w_olZNEYqZSz6)Pg zFp9mMGHNXC9?wySAIPn}Wk)+=yL^djFpD^m<|hwJDpD3czAcBpQ1M4?{jWMGKvxnX zfmeX4PF}Xh{foC3{|31-n8(Ko$m2%?##-ObX;_akDK>!goh)QO$kEgF&#(siZH~Jm zZL4BqtrA>9U4o7)-eVQg;^ghWVT>{d{qgR_GFow>|p#@$CXKX?w8Q^ z1R3S9VtR~shu9l1r>9*>WN+C^{oUmn`Tv6Y@uE_K!#zaD2N!4Ozk1L=5ihQZB&?GA z-?eJ(XU$u}#C&dyG`Gh)6@M{N0a9n-$|fA8q@@d{1BC#4g0q?*40exFAwbLl)%lyO<6Gs1RnRq> zKHsY06w2)F*_0b1x&s+j^+#61Gw$xHLk_(J3*h3EzeN=PkczW9osY2F*$2cI0g}iK zcfXLMxt@G7Si;Bqg_Rt?*?q9Uy16Nwf-E=or{PZk1=mYR>BBxdJ1#j@q}K(^mH<&F z=vEcY1}58}bY}yX*H2WB;IZ$gwLCeh$WhAeJPS67JG3`HN%7y}04+=wU2yW^J@qpq zCJ78kV0jn;0_y&{-VZmIb)+nhea;%JV+t^@fXT5{0bFd8 zyTkze4a%&Snm(VSvkI8+xjUz%9X`u33ZCwdp10;KEvJZ;8B?b*r5}FeCn5Q%d@@! z`ItV(N70e$d52}2RlUsZ4&%feY@5)q=)w@%wEHUHNLNjE8u5)pAuMv3CB^cH~sp9y1^sz1gf~M11~1&2L0)6r%_FAy~490eA_G5zEW;NQ21wr3Fi#wi?eB- zzw^L?k5F%eYIr(vUYtWH6^+m!NAAYycd1Cl!RQ2hZYE3g$ZpBBVp_H~V`i$KgIfso zE|!tklXGnS1MzTwGwZ3Naw0YVwit>?U`R{;mC>boe@b`?|5J1RtzH#r8nE>PM}tez zEo92f@?TlJGW6n z>=LUzw>IgV@52+?)_GN+>^aaH&DTFA0rpNScq(G`$^mgo%BkHM#9!SO zKRb&qm+Mqj12K;^_7}hewMR@EGUYE?6sG8KaQCpoMVMbu@8hULUG|3qygjT|Vh3RE zH3of=MX$Glq8v<>hIPyFJb6N+l5uH;Oc=QNu=2Z#+tZi0N2hPg`qwKH!}BEYyB- zit2Oc6YpKh!24KeFWmZ(1k%F1Fh6%N>4<7qbPQtUI3AR&A`&ff?yc;S zEG3GJb2(AbZP{JfEo2IMKv=%07|Q4YrQ%## zI+~K4JI9$XST<_-(w=&5q*hvYKccwmm;#%#CM>t9l1|%}*cp zf(Wr?^c?PYmGG6-HA$2)(GphT8h~ z>W3DzZR*eJsnQL!8M;Ar?-_ZH;}lLv_&{Xih&np4{S?+Xu>Nuhp&RI>4sM504H}T} zRN0_UM9+ z7$;+p86`2?x|{|U=0z5OichOA@WM?(nIk|{VI3sNvH)i4D;B-ypPMGQwV3QUtEp@` z9*nndaEz~)rzGEq`54%QKbWj1uC9#aA|cIbSa4VToQ>bcdO{@CEXS0X@WrxxznJGR zGIhaj(Y5R2rabB5pW8JW!xilZy)`43pQxJyX{0bAQA`VXvO#mRqksBQVm(lGYtgsJ z^Q_uh>H!^rbHR~L-=P*aNx{G=SEf#Py%hezhn2?4;HqM!XmaabUB{Ecler?LkYA)| zTMkPGOE=_HNnS4^KKvlPs(ScijO-SnIW}1WNdX+nBJ5N{Cqizkdn(z*ElFBz1K|}> z+S*31*+Di}>));@#qDNCI?SQPWsiht%q#hqO&^jvtq6#|wWp8Ci^wh46vky*CX`C6 zD-I;JRO1i~#&0#1WaLIpfLPsHfi_!fEhzYIX;hFQj;)j+Dn9tBw3S;n?PdZ~#c7sH zrgS=@x~W*xh&&UzkNGDPcx<1_!@nl!tH;C&Z#(lcK&xZ}i_BI&p4%YoAoNYe!~_8y zxoP)lLVWfjwYkjy$V`MX&JuI;rc8vY%sS1zr=hQI2#OcmttO1YAMe5#(2(xe8d+0M zrZ?0f`LOu)OEpdvG9IVSD*KRq+^_UQC1z(SWR6&u%Rs%9h+bT2g#(-8eOf9>q!1O2=#c=(0QzZin0aF}v-GfOyR73(;ZswsZdUp2P!B>F zby=w56>02cti4p`P93lKTT`Nzj#m|ViHLru_plt2A+f{4Yi6TBJ}1t?Q@DkH92vIJ zSp!2gy%5`FbGUWiYzM|+p zAwGCB*|*=^;F7r-38x)Sp$0aNr(3P9E}$yXZq+z`fvf-(7#RmOf{h@P)himeuO(Q10^pQohcSI-Y6Cx)8hwdfA%hLE_o3bEbh(!*#_pY~DVnMXunjxV=( z?;cN3msq|YR%hNJE$MzwJ=r{l&gpiO7fz9!MQ0W+o-Vc; ztqX3(6+8Klhjx5+Gv7(*O{3tUH@>u)c*f>p=qpf{%5ds4P_5 z@C%I1v^Iw*ESPI^e_HB_^G_7+$g@r%$F}d){kR<3t+%eaQdOO`*FcRFp`i(s0A+Lr z42bq{M0IM3goWWzQ_OQ)44a(=ekp8fElgm?HD%q4*egSJH_WPcFcv1stC6Zuc}xAv zh9&LL>3POr1f(S?xA1QqZ!aP0001@s3>tGKUaJHOl9$bZA-9)Dr4*FeZzTf&3Ge;x zTQ@3KnGXbbA>$`m~N#&Nf3oTBE#vsLK8LKk32q7oT4Q-e1EWnk}0}^VcUu!TI&R8e(db z&b!tg*y40r;S)|j7X;!wuBSDv3F}_CO3V+bPqKP#Bb&WD&)lJ3cx$Ij2IlO9)7Cv0 zW&L(Sx#2y#h)^lY`Ae!Q&pC$rKp)V<+$J7~rf2+ zbz7$FrGCu&vaKu%fK#i_F3!77zdzkn3Ko4QaQ>cj_8`I(qws~=IJnh>>N>Sz9?s+y zPv1RTfn);&D7{o99{PXhszT(oS%nIxItyXsefjo)+EVvdh zyginD1=wnn4ypc)(wTxt{sD~)_?IU`2Yxj*d}RIA|MUfcyLM2Hjd9>@w8Tc{`ygqv zY`)ESjBLGI??|x$pnAUX^qtEcP~Kxc?y68GqIxmdT7r@}w)CV59Z;Ey(OYu!mh{Vou`v5KpqwR8S; zB4)M_>q98MD^hm@__RFq>=LZgcpI&CXLC{pSlHem1oGe8uYIzu>82`lce;0DUWJvt zP0&1%362?GqG8`uLEJhE5~&sFLO7Ma@Fei$4y z{3icMi08Sg(!wk;MG}FR$7)lL8`$Fa6xa7rzM`S@DmpqH>A3$S^lOi6vwqj;jyj%^ zP0+R{1GqQP)^tpq@v#}sr-u-8HFv!}?GGQvx|YONn0%fOPqSfrIA|_9Z)K_|Lb~_Y zXda%~ioB7MGz|RW0YZIY`njZwWUv@cw3LZn{?o*7!|L>~8}B-4zYDeFJ%h-W(c7y? zw#7`oq;8(?MupTDFCwb!#1LH!`?;tnT;Gy1*feLt?Ni8^Il38YSN@Qdc5+)O6517+nen-x&hz~f) zmP;Hr^D3%@$7ZBWwV<8wv8C+OM^1DFcO$r6MW%F|ozqn3t6RPdItSf}0;Ud4B?mS3>A$+o+8GzNgaXLZpsy`aPB%I1tfJe_|9={xv~KUgjO@VvjD8CSFrHVkzQ(CSNT}Ky4wUQPj-hgDG zkyjNY@tn636n~h-9O2Y_Gq3t>)F>rjNeOMsmO(~M*k-bqb=N=Et6QzSQQ+Re@lCIvk44)FyrOadD3JP>8vA6PC>v+&e~Iupbtqg6EeT^a&OtA5#4 z-vs=dUmaU;0g zEp-;I1_?A%viv4ZAz3VT=b0*vRYlz1VnL3NO_!!SYlNpHRi6EeV;1kVP?^_TD;c<& zop;a;8v|QSJ~JUlsH!)sPO)QKvw%uAY)lqq2K^xKI*cc6cvd}_S422f755UcKb)`X zx!*!SF();;L6ZEdY+zvDm|%OO9~(N{LiXt}fk~EYqDikHwsk94l{9tgW?)66DP^M8 zt+`~FRQ34yql_Wre9t0g{%0T9M+OA5i~bB6pzG5ZyM#WbCFSl~}(1RKwp{N~pLdY&D&;HUllp zOb7rDAJAh5g9V3Yj;asSgAWp?tK}0lFXBLQ7jjiE4$T~;iU*2IKowbu_8931RL~6l zBg69pDst&*D5$vd>qk(+DbmY7P)6qy<%(tobF0$H8YU^h^n}BR31JASgq0$2Ax;U4 z4coz>*W)ZD3T%zXQrQicubpXuleo2MAkHhpJc0506y3fCj6vEck}`yiC%?YQnJ+}D z!g5gt6#D#@nUhbrv0TVwOlIRJr1X%{Kv&ChWx>S#V%oFS6yp*bCv2{}=+5A)d*=%~ zficYa&7}W==dQVW5YZWR3)kXf0plpB0I6iAWpLB3@1yP}(|Emo=~u7o$g89jdl7uF zH#d?~eY1YGJN4{g0QssCM%9wJI$30Z?eLtwai>HVl|dntcbtyUMVROCGgSHXEF-kn$YqSsK|FoP` zObt@$CJTHT)rrYkbYY(f#mF9Q13|5aaS5B;X(}OoOFbif1@_>UNC{micrfiz;%}#j z#H0jo!^ia&g2|CSq0g2gtLjFy$$L5}MEtc8E*8Q=G9$RE84XlkKegj>=y35Xnh40| zvX5z4E!*yfZ)UtCET3?{&DLN*KIfN{nO>MgOZNkRPo}+VRQ(v0Mf8ysP@%d)Un={DJ;gIFmS2M=Z0>UI-@4}$7 zl?!_~+KG|;0ux-Ma2AHrp*X0U$jB_ga2nPJ@~2*JNLx`{6XRB;r{D);TVt zQit6Z#MV-jrFFThEkoD!5P5NAr3!`HoPm|*v3>J6E*?PD=Nt+#Ym{UVtNXx~xI@HwC}oq8v-BCpFE6|7o7KyW+1%CPTBMzI4*U}w1X z#e+XabhN8p&8fGV*5V!uc9AbJ4RkdxFT43bmnbl5!qP0IOtko0h6W3DQAaZ{v8}e| z15+zUXS3x--{T|(d5R9Czqqpb}P|V;&#G(OXCnJUKF~4Dj>Pfo(QptVH>(&9Q5; zHx@tLtHaf7gTFRCby@%=v)VH+Gu5rzap$K_iO!-1= zXUP8w;K$l->YrF!Q0dU_Dsy=*=aF%K9F*q)N>l8RwAGK$&2foS&nz#hQq98Qe6ixj z-^D1=7_Y40T1j5^wXGqGM|3jZNp|X$i|A`6OHy4aA^-R%dN_J|V@^Ce4o9I#>e+ER z1@lYAYjpa13`t1k7Hd9h)hWqIA;}jS*x*~J7R0g; zbr?n-x8O(S%l4nX!{1!4!nWJ|w!+{_bAUlI$zFxa8u>WF5Lb8=vCH^3U6NgbhC@Vv zyBsmug5-WIX;AlKa-3077)!eCy`nw$xE`s#wp&?f7R~#il}9w=Gl!+RGnwsP2IkrJ zYEO#o&T14L(Jrf%-mBK4_`Znfizf0sO6)#ud5$%q6rIS*@cIw(IrZTb=*mBjbuQ*j zs)E7|vYK2QyQxnYMZ&w7QA*7tLg?2bO@6J+oGGwa{cs)-8t;yED_Z(?p{N*aIZ^g$ zD1T{ehPE!@4s|trPwOfYqhNXXfTCQsL-D(?Wb*6^!MA08p4eM>G$K!7mkjx%FS3wx z1!r`Mc)1{Ty0lJOBK%x~x3<^EhxbNLDI(2iUq=^B!G#IDKMBu@k80O+T>4xz5&}~} z;VDTy+RoQ~`;Esz#Z{l*pW){i4+~_7JFIVO(!&c0!7h<3MoJdX)l(zc&gKL7kSXH#{pTA(%HC-~o-O%-!y=UhtotjE&w z-1n-6>w)a`n1lBNuYd-%vl^v`&rg3?o*|j901f$$oqdMO{M%a+(wE%1C}Zv8rve+m z4Q5RaruTKdArFRVAHTrE9$(A7cjqHe=;j_nx#ew>iavn<`MD`l>>FT};NjNx#>cV> z_rLKKB>)9C0{#0jGb-9pq?nkLT<<3aI#DuA0ZBavh;p)yGiLY6EcYa}R(`lr5rtn4 zqJWF2p92YRr`zLGIR$BOifcF7*jR|}6Q|1M=E>Xqu*%8XJ{>;{7>)j=%bjeWcC%LA z((>7VyOK%(%Jw95lO6|=Xij}ug7uvn&(mQ9tg-c)9AFHwo6USlHvhWK>4?Im`rD{e znN*=s$dkWlsGmIs1*yEG3w=R{S8GTH@Jox|d4(lRN=tN_S;~+Ac} zko%!wLDw5p-Zb%F>sbMgM@2jZFoMi`pUO{Ex7{abMifj7&2e26OgK6nb#=UTcfduh zS5YS;SjC0qc8y7TYt;rAlIP^I!kw_gTD2nIBghM{AEEVa;nGpPYu$yxgpC%R7jzbm ziZ$nfZsw49J|0M#0b?q_IeeF8qS1OVR|pDyccQVUGpo38-AiW+>*8u}Ygb<}d;2ga z?=!@_UfC>e3I4vGKKN6X!lx>|Dt52sGWK$>GG`tew;{_t{=#+_9 z0QGvJ@94)S9R}+sm%F?($$?*kFF(x8wxXuafIfG=yxOv$7N>~pz&Fv}?_;1yI{WF4b!Uu*I3{<(R7X=C^b*w=J7bQk#H z;X0F|J!7_SD}M7+Qf2~=v6Fy&;TqE7W8v(re&gxuzjwN~@d`NVdj;&~yaGlls$T($ zoOk1|fK~8IMYZ!oweP^~%k?YZYR(W`1eE$QnW2$$uz9pu2XlmjL#Dls@56@b3){?V z=X_Sv<8qeMacq4fh?r0}2)3+tsW3k)z!ZIVbj9>THt1C8`EqT2?-d|%d^3mYQ&I1- zkJjFq+59MVowFR@1b$x=+y6b!GiAyMgMrO-rp{#}cIhZAjAwFciNM+#+SIVrXXY~1 zvhb!dnDj>mM0cTnJDWXR>HzG?@bG`fve}}xTj^qNZPqtsg6da<126zwXCqxX{hagq zw1^wmkK9j5*1uCRM0Y=hWP5q%RUgBC{?w%IjZ-8mj^;=7+Yil##0PG>J4&T5cc(Aw z{!!GoxoR7dVh0?GZUbTlfxR4VZ=o7NV&3j%2hiB^ss9?~bg|JJlSwEhm+`T#j-;fL zp=$cHfL)RoLDwO^JC&FaE&C1LR?LpK@A7XO23WFjie$vm^WgC9eo7V$jrEq(pf!?^ zgF@bh``HD$jvXL1OZS|=lv@zDPMD9^V!Y;AzDB!aWZoInIs`DUwk*JzF(`oJp8>D4?XhEX?22cwU;4igKdo$*vt0Q8 z=OsAO%N9AOqPXwqUzA7xUzDf)i}F}+3eKy51)-Ot^o;9eo6g$4_5OFHd)^J#4D=Tg zck?$La8LBD0?n?v3i0^&63`y*ZScBpihz!hNpi+zH8YRv;qlqq1`oK%_FndXcPcE! z6ktj|W7Iw%t}N%3KCl<5J5SDh|H7o1)cS>(zp%lb{qBgR#`vcJ|$L zFU?*SS+-ayAcK9knr3~Wokw)@blc+v^OKpdEl$H1vhLrkP`(L@eqcK4%2Mp`|y(~QiCi2o=x&-D9w9BiB5{#MwO#*XFH z0C;9p5kD*dhge=mtGZkAeY1|7bFjjQPK%h^UotYaiO=gEEPR*XGxDV9aYN1qsn;t0aY2B_H-I^SQbGe zRG!f(?+PrZBW<}GGCm|)*FyNoP-MP=J-sKplcsRNgy=zcn?`NbDt_9bAsUA-x3B_W zcmFV8S)F3wUib5THAA=+m{~iH<0k85WUQ%Bg@NNDfy3$%-_$y^A?OoD{WP;Sc7vL9 zVwKBiYjFTP?)PT5a2<|XvfO;s`E@@<&-6b|fhros%qh{~?RnWU?RLhos-vZa0|?`r zV-2Y~R%ygd$zN$~i}nTod=c@G+kY&3d=ER*=!`qdVtV8))Sy`#8QH30H%=l!?(m+N zYWoDAt}%KwI8_nvecT>x;P3*_Dt(;fX_aN@7Zm;Tv;ohHnifQQqdvngRnwK(Xf(Yy zqG0G6E@lu}vEXVM>WPF2XLNlf*RS zl7KtjR6@r%%I*4nSh`v@Q7)o*KdZMA*Vw1_@1Z!1P(Cj;ooIobuq<;}3sl39^`nR5 z#EDsG5<@l*%gmKF#UTF&D$x#`_8_5{4=#F@C9tqPwf>GQK@JG#3*{BB0Jc5nSHLij z?Mt<~um@q0;M+7izTnPd%-tZUVEUOz@Ki(d6+qGR3b??%TyWl*bMaJyQi%$L`ZIcZ znAZi2_Rkcq1%(yp1d^NQtL>{&R$tJ$Iu;w2s=AmUdN|PT z7o%cW2Zt-)V5ToaMrIWRkJ#i|^MhgXV437$ud{&1^-ocu(gRzOrKM*TYpv6f&8>&C zc^e3*=!|x=6Y!yIvK6SL^Z9){v(3}Q9xq;$PH}h`qjIh&QfjP5j@v5NbVa_Ny0mpr zwZ$WF3Pp!?zyB$#C4!QFQFegS#GEmPfN+*EMhUq*Em}EN#vbNM!U*G7ijP{luIjth z!u#YWM$#hOfC#>v5;KILFIGrEb2Ht_dd!EvbB8>CCzZnF5y_B$jZG`d|C!eHnmgt- z_iKu5s#yukq(B@_FKrd3q?kLKo7Y^IT^#4YE@Ifb)3Eh#Q9U6Oir!*p1OojXfYY&mB4mQ>7NK@mO5Q4s(Yl`OmYCvw;<{jmzP3 zh%V;-fUSxwj*UjY2$xNhAmj2f3T5Oqy_aHM}h)L`z zaL_^ua0@ zafv0ODK=D1&O>OC|J~IOEhpTU0t=gf#b)^Hw=RqE<681E(}v0C6{e!kEnV-;h^@;b zfRT#!-&ms8$ZP{gkMGFZiI4TwHIGn^j5`@ujypk4KOGZ}OstxguhqrsW72CCQlz9@ zOfsbs_w(Bl%$Aj;g^pq435^9+sjW&UPH zPZ6oFEEwg~yj_#!g(SJS+WLPF<(h0guK;_B(@K5sVr0p!f9cFH;VCW7S`&M%#_qR~ zmBzaKv7elqfR$o3EQT5_Q!>Y(b_kI{=FfcQxmG+=_ASV5YQA? z2dgP;#u-Vg6!j-sC%NV&hsp{g>*BhV_U{xK*WWjqKdi_0Jgiv|6ERP77eK9@L(yd% zj&V5B$w~*?WWz(og2bs-0g3y#E(fOiJtxuT5uF12BPH$B<#u*6rvCF0Z#CR}s>SA% zmJ{S1W9=-2*_b$CHSngH;c8Qy4dl`QA&pOrC|5abhWQ$Do34CEZl~AW2aODW8IMbd za#?cLlKSc(F$y!Rjy@@l@ec*o{V;iBb@Bwwg27RmHspGv=J>)DG7No!{C&`rk<`zD<>vXUeUgl&8HXE} zwh>mXi8`hTi_3eEsJv?1@!%+TP`Gh>hEm-K=MQt}(de-qofxh{$&A&90fsiD_tWaQ z5C>Tn3l<{|odmY}cqy_`y)8!L@FMBMq6B6+A_7rkm`2(JmhmF2@+46PmuS0B-n7lYLoeU_#Bfw9e)kc$| z+z^!t@r#22b@jCI<@;&0j7~FLI^cOvLgRZozZ!numE&1BY{N_-f)Sxqqeg%t-3myR z8X%RMxP*6TI+aB_6NOYu^X*dR+k9WLdqrGb4K?G~$AzZ9xJonbnP5 znY3DYRaIFLb?e`u8vZ|&y=72a0oSe_+$DI?V8Pwpf=lt@MS{DxP~6?!-J!S@cXx+U zid%seDBhFjea|=ZoS$E2_MXX1CX*l8d#| z+)mlr>4V%7k6a@2cQp0cIC<f8IFpD#rc+F&PVxX z-JWjtYj!j`sqIoahmb^BUXmz0q@6Y$liFbSDEzGr#>_zgyxAOynAjzm+}!Dm$Hr=0 zmE-1W$!7{?8vdDXBw{q@Vnr6|d5@RK!BIYY(j+QDx5J^qq(-U5U&J~t!qK^-8@VW% z85#X2owm06Op3B(J77&E**_Ic=v9~vBCoCqK}Rdkwuwpws`8FYLp4(o3c1pm z**Qq)%=c+6_Dd9c+7J`WXS(GeNc*$|dgu#Xw(X3p#nBY%i2VdYvlf>mgM68kU%$ur zkdZA&s8@LW13+$%mU{{hYUPQR<3cL#d)kG6O6xwiJEq9~twarX&Tmb!7Cr44jV@QT zwzBE7vdp2OUlvd3DDdqVG4zXlJ#|$Y>~$2(P5FHKC`826ZjVAuhuu~2YgLNSuy%wV zZg!kJ3chp`p7G0l0NM5Lc^Ryu@6wwt8coyNGL-|L^z`m=u$!a8xqj}}LRaY1R6X(; z)e2SUg@cpsA*U&9W@h8EmOqoV!!-ElGLs;)>O$BuoeCAyqH!jcl0GmXV^T8jXJsRb{Gi;KIAh@y_WjH2Eko*npZ$}JNx!hH%C4T6V!faj( zyG>7*h-r2P{krAZ$yi!~Cvm@9-um=ib=I1;(1M)}+YI=|=e#l>MUu__5L2i&^6s(s z)U?M4e5f|2%XnX_vV~rr9Xfu%6f*DN+H|oV%hp9lQ^#V(^&B7_P+p^kWbS zGyX>n9K_GJdH?<}gQ_hp^?OB_uUa~O(2M#)O*d@0T8K3^p{>=v?AkI+#XocS^dI1| z+3)G$X-sJYJElPJKMu72m?OkLWa<3R_A~V&7P&{@8V}jC>zPepz?|*O{?(qz>fTKt zD+WlS|J-^Ped@P+_XNuiw;m3_KL9#APF=pQ_u*a!>6zW(=i}ZEn4g)TOkW1lTaXzY z9INmlIXl?`pEA&zMLfwPg+B@zAkWO+1l@)g`3qP(`gDnmxg+l8U)Kzt>UIgZ#C1qY z*M1(lXG$FUCg9vKztA*i%x|^bZQtz@14VmnnyS=JVb4m~BR|C2ws-!OxO&dwT%s)= zKl~3cQ2!b0-Mn5YpisIF==Pl`E(I(@z>O$N23f*RXM~nXbp;B7RVZc6E}|Fpl7C-& zzjAZ+9Qq3j#;*>IuYdmBRt!&FmB5a<2#PQE#7MVD#HsY2Ld?{|a==zfMAS`Tpb+rE?2c{*lD)mQjzaX_|JS>bCdEnkE%%MRY z{qD%Tv!x#t~RF!8Nm8TkgSXqJgvmpOcy<8sLiqJu%r^CTbk=2Us*v&)6 zog8Z%tldJ*s*21~NW{JE?PBifaXwEz#;6xYXSaQ%qFW)Uz(w{Lu|5M(la`7H8taZ!I5%?=Mw));)uRepSPC%hy%cR`TIlV#U zI_Ibl`z_2+LaVt!tWo5c^y$ga#n0xb(noN;FLlOu;T(7TZ+JVncrzBdw6TQ~gu%Wt zeHN^ON`f0M^?OjGp9CM5GZhgc;YBn1CHw2I$9eI=#PfcUhBTET!+;<7qS`YqL$3p;j<^nlsGQ$9*Eb`dOv#!wWgDWedBErwE(7aq4; zm#B8cE+adh|-Vo3>nk3*c6Y zBl%HKO8x`#(>S_%swcqAn$!1mcsd^zPs>_%Ve^k+>h#wTm&4YoZ>Rw|-)rrU`fmH<8-FC?HUI2Zb~ExadT- zu%5_G&ko5Ci~nK)fNBZap^q>d{R6Zyvl^0rM^E*RT!Y@R1Yl=3K7(=Ui7s91vvwoz zD;E3SfYcuYiX-;@rfwa?n=Or3);_(9IoWwBs(uL=xc${(EuC;yD+hC=w+5WEqaXUQ zh49}~{&;hAbN&a2LNYE|Zo53aCDtZk@2aqx(&j@5mja$ zvZGrNJCn(ACcHb%jHd6s3>(iZn?6D`XxKBz3Al$7yJ^r)w>+o1rN8BF6fNlDyMA-)W867M-YDoDHqQM5Q=sG7!sS zr@nDoun5UXEu(4kOT=PT535 zcUrdT<&?q+IK$vl=S8bo?Jxk(8h=R{M50N(rg9upT+EPn;y}H&)hS4B-#)*oa7&+0QiPjIe zg6|I32q^|!(~Nugx+uT$9VJ@y#UpnC9RH6eZM$xCerC&uKYUYLNj`px3y7CrlB+GGK z=r_2(>K-dx(zcS&{xqlMAa-Sy!QQ*F0$?JmR;4o_>J@adBfqu=&9Q~^De13beNn`JF&KUGVsTyVo~wq-KVGF3ca_gni(!XNv-^Q!9AY4^vgR9L;!+FKb}7v-ZDfWY#$EDZB&z9N(p9@i7T z38tLDgu55G&YDk+v^TI_2nC0Ny}BNQwcE3kdtn&Tr0wzf zDO`tU>hKZJBvW?8()}$yge>i147{#FbuX1CnV^h+fT?X}o4v(Xk7Y91LU3DLcD0b{ zI$X^PqP)%EYfyHFjs_#auMya_tnJW3OLEbWq!)kM?cvjr6~UwmxyZ2O2Ho|?q=%04 zD`DoRd1$Gi*wh7e#=c`FEWmDlzZ_v0(6dx<+iJEN;bHrD(e&*X$B*1gCuaqYY_jf2 zj0aULgOs&e&m+tKHKV(LnUuhs`{ZKcFP$raymQnPkIv5m=jAX-Nc2zPGLkm_HSWg2 zyYG}QZ)cNmmv^uG-$lbcMY@}>=dQ-Td>IRaNvTtJ4SBC|#{U5N4n8aXnN)lZu%gk= zP{5GlKU(V5|7xi=!hdM~qovk?g=Jtu&eP$u+45X{isz*ol|QvU6@;y!O8-ML@!Wpv z-fj7hr;QztJGZBw%l~nIp3eq(G1?I;*I|cguy3?D{zyBx#xyRC4vU;P{Asd{h*+FF zTSUf-my1}PHv!~CWePe|@y>k|3-#{)Szz{o3mh)bhRu+tPvVYlQE(BNvO+j5fm)aq zkMO{^Ny343I<3}1ipHPf%&4#9jyZ`KE~_uOwb$fnK$k8}6>5oY!dJjvklmsx&?!tN z|84+R&AJRLM~tb3elq>Ag$hv>d7=p(5`1fOf&%w-5BX@5Lkzv&P{m1b+sp+mYI+XS zO0RWFG=`Q2beVqXE;z)TZ=@w0l(>3kAvTHo{<;xP5VyV&ooPRI>|RALK)4$-;u8UV zik3JEHFB?f-Or(il?5T?JUXxK)4Er??FhZH$+@U1yjv3%BF^Ipkz`~|-csOr@nIo7cNB~jl16gOlrf+Mu%rISQ@Sir>axCw#BL`! zBQL=f$b&02Uqevkjq@YAVJmm5RiT(R5!>h9!|asslZWX_rmAYo)NZ0ed1P1Jh%Ptg zuNs}RndOu)WAh{_hmO2v?*-=|dfCt#ezo|JQhei*1W8u`92zeEWnYKM1a zS?@%K+SE>6%89rOx>^kAO?6q&GkAjBS#{!Y%hG>pn&=|*e6AkCb~fVcF%r-9|2b`K z%^vetz*jSRyi3Z0Sy#a@OdU0M>vWK=+iSrZ07|4poOIN04OnsB-}=4KcS-kdsL9z& zxGPCN#n*T|SgBnfq+(nr3>}dfYK{<&>~N)%!gs{bf>a(Zr5iiJKbhZ>Ewe{m6&+HD zs{LN-4&sm7_}-Xw-e^nZ8e_8Z+Q~X%{eCspuvKw#-k$x&Rm)s?_-?EN19nIvZL-5V8gUw%#2NA&sNyp7hK@%w%xve5 zrE7O6E3J!ms;SCkbwWXq=+AV?Ixq>=un^#1&=%pz(@L9iJ3={6F{XPFGTt$kF!cBI z^)Jr`zOhdF*>|vv_a=T6^eL(|ji){AUZl*R`RctQ}=F-hSm(i-=*gH{F4qP-Dxnf=Fz`^FD%IlVyW| zOh0ys{3S_G(WA>F5c`_QS}&6uM7?6na*WJ?wq~kzQRO-_BI^)%;40O*oTWD~W+B*; zEclDEqm;aV-#Bfdm~2rmJ!T)D_lMa*X*2E%u8tc6L85*6d}wqu{!3z}goXa6wH-tH zo~7p^uYx?c@`c0h8Z~-6AiG-G9r8DdmcpR+pcpP2<{esMC?tM|7z~78EnfG^95)4X z&jn#xY9zHR**Utw4~o-n;GKRGA@9`Y#5QY5mKL(ibHqA!3n8}|%+wGh z!5rdgF%`nzL(#CJh6pkix{iOTSu->H+f4;&E zR942aehm;=k#u8VM6tbP&pRu>Qnoo>xHbB+<%aq;yx^2-exg8eMx}*Q z##+?19;5VwDWLM;BZSoyYma6uyvh+ zrw@4fzRcnd66TU0O%?Z-W8v%5OqzFwaS>plhiusUqHo0v@Q3K>^HuboF?s}pVBDLt z-9NzUHsR!x;Xi=Zy2WPPe;ImtwHRaE8>0Q5PS>&DDp}wum-PLS9 z=MhK{I60SEJ~iffCMaE}wI_Jlni+qipbxv}|a*DuUuNgDX#z+jA8I(8K_nxdN~8C1K& zdYK%Y8^{P#ELwYWd|@DJ5URjCd<1ftdwN1_X+XSGi(AI$Kokphp49d>3bsFrH8bD49|yn;cwo2Oxpt0Xhi55F24 z;sU^Yr@dcPn8!^2O6{*j#(I}zK<#7KX z5}^YZ7iR!a$9XD*bh0hWS`3|FiKd7dB0&HVI|MGoB#KO<@>&&z3PktQK1kE*hj-LM zcoT|dLrw>OqzJ6OUM(O~oPqJmt%(`WM^h(^q?0XzxN9b3yZ7mgOVT*CM}dg5KFcJh zOFJC{{zee|+R#u+_HU9u;GODuSq-aNyf)h56xNzR$mD^lP3q$+>UCv)n99}|tmF7W zn)<1|#I4#PNwP5e25VhAPMeI%v^PbS8KV^lU`8>>cP!q;g?n;bzD{m!@U!`>(YfnF zJiI{An_+%T!bEBf9vG;~%8>9z*!bmw;Z~RG)k>|m zT@EKlRywQ52u}0CaR3!XQ+|tJX5?dL2-2$0*MEs6>V4hMk!JR1Tj4S~Q?Sg5S&_0()RLkAtLCK_w(paa#=g61 zqB15;FhHjp$iJW1?2O}BmAJQ{b|>Md?r)}JG&;9yG@$)?EVDtJuzg63(#B=ArUG8t`wZab+r2f9F4I(iQ3?d)x zONnQ&b`FtVz~Oa@=c~ehxc`Tx=?-t!B6tI!wAeextpPaAC2Z{O9p?MCFL{}4HfU%F z_3Hi(cY*5=c;!niN`zrL#Gi5>unQ?Rop1K%(5=dgo4S_|pVrj;M`7zgwQXW{?J79g zZ4xTx;&nOy&uUW(#pk5|S^7w!poURoU)^56o>{LccHLLt^x@Vf6cep2PuEOf9N%nS zKWVx6IsEGK>GX58V^V_g6S0a$FMlA+k=;d8fee@!PsiU&+PVwI@b5vZZ=BTiH4&Y*WSG3WFp zwLT+yq9pfpPqk`vu558${_@*P*u zA@@7s>958-^wsaF*{9HrO*SeraDBAxf#nYWx6s=!)HG#$+$Z^t1h7e%G@-R!`x3~* zoDP{_k=DJcQ`)-LM`V{smqc$#i#R8OEy~9T+gu;mjr2XHylvTnkOFNo2%?ar-6;#g zhawABA}yEK4~{8|Uk-~5g4vg)P>@^p$R@hEuheaHXBiGC!Rx3jB!DxLbl7Gf$mm`P zE%I%gh3=KM*1M}>Aw##e{X#);DnaQNKsMNlC3LVy4Lcr%n}j@F)@2nlha55uD0cjK--!mr$S^-aCc6^l410VDR`rVVL*I zU);J8Q=>*@8o$tx?ZNce_|tNJWeMra7sAZdBw;LS`wV~ z37w-szgbjOp~uB#6f!?n2WY*AU@QCLvwlU$Xp=Ms$_jZ+s_WC#t8-z)JxInJVJjiS z!2z9adV^_{mfSTQs>JyFt{la(xZblsjot4{gG-qrlYbS`Q^+wN!e>H!yG!`5ux46J zh0)91GDkQ`{36@SbBtU#+YvyxwgNt%M5tRPB0z@u zcas?vvtQipKxQP zb#6RhqH!DixZm67k?p5NWs?3QU`93PIe-70p|$qCauNJ(=_!#J)l2J{)vth?-jCY| zc|P``Wp82Y9zs`5mvP*4ZwI_Dt;f9#D7Uh`5ijfom?0Yf09W!xfv&aPcg*_m%GO4F zLLP2-&21wwL>(CviIQXA3UU;}kH3p^Z5^u%5_grw(;CDr$+0?5!e@)sdRv5VBa_diCCh&!qd@|BQ>)(`kRVWl-QQ$7^!~UGtFU?jv&O zGY4p~?^zuR*lD5qi-7+&vgRVVTW!zo@MR4%inN&(GmZ&*sAeIR)@80S*G6GNLUn^_ zLbu2VxPekwN$9U1JWDR5Bwr zz8B3(QWTQjbLe|U-25r(tpO7F+G5Buiu@Av^6I9F(Q-)7Gz7fE%CY=Bc!|vKbssAN zFr_R!*%CQnHEUIIzi3bAIT0W|Y(E7n1B*l=glM?PBmDJ|JF&dt#fN+>FxVxT_}5}t zgi?9uEWU~;%qE;Ai1g2ee~!;uW$8-S#IujDA=!#`WWf3kcQg2X|BvqC?F{*a?}x$j zYpUlY>bd54Q_|xFnVZ3bC%%T4%F*ub`l){aq+3_mj9}&CKfuTL_F*0@Z&kz2zlj=N zEr*O6%KGm3qTWpQVO2(G{m|LRHzYp$`_hCJL8bj2?tcIZHi_cnr;SU$*=VY00ggrP zSH0P;zB1crr#9?3Q-maHk1yrFId|Hbt|eZ;j8EsOX6mRO+QUJ(yTAKohQ;v7-#tsp ztQdLYK~PG|0^wdG4f@6XQxmBI!+Z>DOEgy(wnB=D%1etwm1bARxSK4MZM0nxt_|hd z@o6qzYWsp*X~tdP1zkkq`hB)aJX@3pMTpr_2#P<)uz~ABA05h{TWV{4hVl!hslYpq zZf_ai1lAjx)Bu9}SBtW+^6ax#rdq)BgDAzR^m) zvO3?1j`+1}U7aN#-#2{z2iQm-`J$E)AcFQv7y%nzr8Lwngd8orFHP<{ySa;2Yvc{| z8RQ^D33xs(dBBlPg5K2Cocwb53Qx}cee>$+mtAW!1@GvF)IY!|8|?480i^QoZH`*i zcuKL4c%VplOL6F06pz~#(|!M_zx!i&#qmh|Wnt$Z;GpOqAe4)5UoF1t=F#MAd1XpT z|M*jPi`7_i<3V(Bj?;%WqzY$?@yt#jGg6eSuO~Is>N3e_A4Lr`x1Wf^s>k;fW$wkUzyT`|}NL zcFhKMuP*BTR@fIhzfvXUGiG81W5r_^X<;T*3O$Q5A1s+%Q~GUuKHSx$6sd+=-WpG! zG=b}eu~DOJbzGr^yJafDI+L0>(@p-RGQ+@Y62A~RSmpxp6qPh zrB6JInfwQ~H73exaXU!oCqu?JzB=w<^f>m@KUG0^TJy~RWuE^3D?A-#(KDg) z^RUngkB%igM6EY0!X z(dVNqD94`-L$~lXiJ1+llQS$pB66H4ITT#hzFwfgfpWjnLdWI!BKOyjQ)}f8J?_1h z3DkY-Z|=VUa{G?9gX5%hkk4Cv>yn)%^Q36WQ<&5OAHK{FeRn zr?iL5^RYf^cci6+*w517w_;eG<+i+6Ym!|nOds^E-p-fG$R^Djowch!m_0H3B`H%?I-ld|-1?Ela#?t~Xz8Yz*aqEX#Zq-a zPbd?=bYt1dh^y>Lg;IQK9;3-#Rx?zYqtw9%6w zH{iT80T2$9>ZMg`g3m9!5}G(aF5&I|BNgw$>juPH&EdU)MvD8oA_=i z9K}dD#1!a5>e6Wu!NhIvT9&q&1bUjSL6{Xz;o}<#BnT^8rFUGN?D9#@>Z%%U+rMLt z)9{<YV2On6n(>BraA4VnWrNzJ4#E!r({N`3UHyaOIC)sM!oKX zf|^cPm%ab56q3&@qPXoI+=w2ZZZ$(wWMF3Hr;21cI?c+v3Thn=Xa5>c1ue%!qvApW zP3B|e@5ZPe+1K;+v81jQJ`w9JU1swgrAM?&K0D{1s5{tgbHW7kUp92~YfF$9nbMx( zKImtCjQQ%YH{@2nXA(8K)kO0+ycNIK9(peOP1N1W2{Ssf@_|H-CxNHFNHfWt(9`vD^rPjgzHKK`T}FH>F~%;+F9t!OwD`&THB7vaVi1#JyOaDW z4v;qZ56L>v?;;h(WRTX6m#y?gAx^=|C{ z*1JFCXN=){RGpH-3&NjUl?MVoh3&D!!PsUI3nsZ{3^Ps?ei&{36*g4ZpFZTTXG<&) zJ?*9KxI9a1%-ddE-)s{$W$02w-H;XaW-~U4#fDw{-0!19u%@UOa#zb9s!QrGXl=6q z&9zX^K|86H%>D$FPG6PZgdZ~Dw1qOe&MRPlzPJY~GG649;i;K~OYLNy(Gd3TP!)~R zVwhsOIdHIgFJYWMv#(x4HVcg9?Zmpd=DH=P0f;W{es_T$sb4)qj7d+4%853b>nUuO zF_LmWJM2j0aqoQV8^ENXls;&+qKh{R3XgC=`#XD)MVg2!3j)IJjI$yP*`CXd>0Y*l ztC@(;1jgy~Prq+mU$@;{Qy?3iAZ-{oEWTFTEI@sz zSTowXO+>By5bW44mPIJ*eKVT@Byu#UXkNXuL>w|LL*MYCx1s90`e3Lrq^7Y<5Nxt_wib4$J~7 z^gG;b5tVV0iN?Ys!;QPwJve!A*uTT4f*S64H44ulK+yyU0EMW?mx*qsxNpOfGM{v@ zeRB0gqE8WOU7Z(rtQWd$4ntOtw>>DDdrS>GA$#K!tXbpE+;L9-04fY5H>LgC;qw5-ctGb2>R;70}2o*%et2Hkoi%^Ek83P}} ze7fu8Wj$F;j-CY9v$dSkkGkO4%(6vYk3fZ!3T=o>ye1+%Tfs_9k-^NO4jPj2YNu*T zOrS!b6o>Y$K@VFuRyxhBu_o<15{Bjt!hW7F4=Sgwo$=A2SYK=9z}(785i1ou_E~u$ zh;o6YM|?}gmAoz;U)wMpon*UAqogs96<`CtAE+byVU~>c0a=H09SKRs(Ml5)uIcvu zhX6T|xf1MH6~m{v0Jqm-k*F2s#cIo?bY)W+Fz)FrNlf4s! z>adl!s7-nCL$}VXc51o7JbV%YV<8c`qd=$Tka&o(!T>cPYt^vVG~Q>4Nv@ibo8N0> z@`UxPXca3w$)E72C5xJ}a#RB))T1&a5p%>v%0t-==`S`2xB>M)2JA!GVO&85)_5&;9jfe$wTG~0&LR{@y*mcgyJH$tk#eRkp=ag5S`KO7wi`UNB z!-Hh~($tKLBq+wk@jvGI*q=MzG;SlKxa~aS%$%N0c5UlT)nha5B8)wS^_~|AlVa&H>cC$tLUQ#8l!@;fj^Ar|Ii)%h%@FpAfzPc^<-tVpT%Y_()zi5iI zm7ym_DOm0wlL|R#nEs8ZjtgC{wDZK;<;z=naQ@UYocRb+zj$>te>(Ja5{m632sP00Dj?hsEUek zQg?)iP*f8|+S81LCWYhMU$ub6l?W5Z|5^rcKK}1z020YUF#nHH?>`Otk|mj6M4QMX zR>ommTf|>#U?3RXL@JQV5z%KP^kIPV;nzl4aP z_;;6F?Ce~Sj#KHrwV$R3*~8{+H3HOi_GYu$+qzHOvf=r;_*3FJt@*t6+jZle)`v)j za^EDJtjZkJ#>`|RJ@J^HP)Z%s+&`}3>lx|_($g(<(w1Uxn{b)~7LYX~s~e0#hs6j@ zC85eI!No;wf0z)dmIJ>G$HSG3Wp(OryHznPe|0)E-Bj%= zX=4gDYfg%VHxE31|HNR7+SktAcjsEYdnRVHduBP>x9KYJ#jE{h$BE%AbdY09zwdx7 zpz`)rrDN?`jo~VO^-ZMWzdzXOwW=HpzF4``=`y9jIAO`q zNj+OtIoMJ-R(W*9Jz@+@$XnA|UG$cnpqWtX%ngN6 zBcd-D3k){4Vbln%8tqc;99u>i2S#Z|qkA>YOhkm*W%a6X`2^4r--IMecXyxC1EG<7 z<`Gcf*DcJHT?nB362O0^$!x1nIX~MR=RJ?b(drRB*2L>L({5V?%`s$;Uo1C1k)s*yRV!K%BsPU|# z40xPI2)5{sc0C&LVQ_?L0+*`LXDfUwhngNo>_maEG-r83E-wD2SXwx@(vnrpNfB*h zVdI~Z?8W$w$-=?SVcdA2EXi*ADV4F|4?Fu@mF+W!mEOdj7{QNS4D}nyT&mDadRkW{ z;q*@-h(>}QU97mq3rW!6+1%ehh0Yso2^nLCZf;=bWv6?Jak20}*Px`}anS7$;^kJRdCwBKRRNi1 zi^ij{3)5&QWHPIQ&>1+xSA0cE`t;g5Zf%!RJqE|yZ)e?h9C?^{S9~W)&k|GZYC97( zmUuse^|0Ls4wKWBl&0|Dv+L{#acwiofFWJZxKE<`Bx$ac$2p0e`U;gZHS~(uzuCHV z6y~wD(}gI96j)jAteNFF*%1jA70|OFm=<1jaq;b8LGa2x)N#Ex(N4J{D!=RKGTgHA z&@hW-MHH==JV9>JVT{EL2$kj5oM@80-pexqeS92-bgeJ2S)4v;7%dB$U``HV^8AJQ z5y*npd{a>tPszkiwmB_|D5O2OH2J{ztUeVU9K93di@y2Qw62D!HP~cDz`5P-E-EFT zsDapH<~f5s&Edq57rFx(XNMIgx)V`A8d)IM#3~MQ2ZwD=@Gp~l${CEjz)*#Kl1zv>b7j^*|5=s{6iK|_w^ysqTjPq2=_T(>JjZa2b$2iwlAKY> zx_RH!5I+5_?!4VjZWq-y9od)T8pX}+n?+V?8q~@Y6<4F4@#E6m+q(7>rW0h2 zo%_hJ8Pz*-7aVs%2yiz#y7=IH61Dn5Mrd}1#U5Q3k_dwd!KB#-D6j|Q+qq_K7*DTzDu)iB`1%EN)D6^ zPK&!TIv8FX-3%YwSB|`8oW=Z-GD&OIvlZX5IWXeWcP9M8ln4wl=E*eKRTr>&6{98~ zC><|+LXsOW%`@A$R872psj(dMM-#f<5}VZL^c;TeM?O47kwWZEP*e2*iV~B=RAYoE?#Qs*G|4T&kn40thUIDQ7Mq zILSc}T$+dF0B7rv2#@FxyN{Wuw~mTc|{TY=^d)}iN3 z3_mDzBagQ7-fuU02%(B_uY|Uk5$JC8t|ZbqAZmRI$LLVcPR`LO@b;==?&_b8tUgdH zY-hsRSnXByP#@|%oiGema{DWC8YSO!rKHHnU1-g*!+1G>58ATQuJnw~EM+jTNMemy zMGar^4wX1szN;AyKDE2#_xB8h=JFWzI|8#794B7PF_1OnxRG!6>MRgk>dE3T;c9!ot%U%b z2C`(6`dj^;Zg$X9K;+3=IE22@j9@s1hH5%O2Oo@O<49L zQ7NKv*QoHi$1HuHrNg%nCLNP^xa!B$x*Fe>v{hGvo{Aknneb2$DoHOr_s{O7s zUxK!0G5SoC6XWTm?L zXPrO6*BL8$4*Ch@Ryka)zNkE3GMfx!H!SwCh!T5+Hj_G6H1IuR7-KvD=YY&oYI&=U zoxB*$d&d=5}Hz?VNdo#@HbBtrbVe(DX@M<-gQ(;&(}PHU~}(Weu7jhn$KiUo1(S>uiDadi$W7O50w&&w#k zO7*qDTkR~x`0F6)Pw*~9wl`{WW9l+R*2v@k{@tA77}<%*)cHVhp)RDL5?sdPsRMaQ zpFNogyAL^_dnS(?1FcB2ZWzWbvgfoL1tT+8eYIMMp~sX#Ui523G1hMqLL^{PBlkZ$ z#fWT|;oI*vBq35$faWs5Z&*#$M}^RWz3X$oeaa-4KvJ7*cKTXO$BAymg)*}Fv2xKs zzOqfXY_K^#F|+ZP;8Z$S=vN_L_jXq`g+l_$q@3{h*bSLP^h(enA-{W5k-VQb-<&gF zH(O_o<5@jfYfgeE>7G|`rjR1BBD%FOe3M<-Dgma5h;446a1;c-t9U!t)lqGDu0J@cJvUr!AzShgouW#`2uV=dPZ^Rqt0R-2~%*8q9%qC*m)fw7HS5Dj}y3mry-;*?t5RSf0AQs)MlLIypci2HsL~a$Sq+1d1dAutIg_y zQ+fjG=Z<8!k9=n2*h-y5Kpp~F9$ds94xdT_SIb$H<)&v8RK~>OOt}he(nu1?TTqz0 z6k_h%)FOCwjK_4DqPUUfS`ZQ~zX*@|reKvoX^QnmBy3(!B=9DHdn4URQv7G{uqQ9S zLYr&~Q4oS!A)To91!-)CZ$2B#Q|{XRz^u-?^CMbyNqQ+uvdLM^Fi{tg}kAX*0sYAAX$8|-jQ=@YV&yV}26S)da!*BLq-AE)y zH@M`fam;UvPVcHISS~)1kv_GsviOL@pE-NAdfEweX!z6|-QZmxICYjCm#GsKf43YA zN1Ru6+Teu{!o!XG7Y)83wYgN=z8uhfy9kN6v4d2nR_)IQ;c9Hj2g68=Av$oT8rha` z+~MGXcz6vUV}#{TcHV8l6x>-#6ZUs8UYd{;RlT3$%%l4Jv)Mt|>?VQ?x^y1ys04wI z#VND^D+Jetl3IBkVUE+mY-?-%>;N&`vJoaXjPopvI7N^*a|rS|2sx%8&VFZ!)kjW2 zq}>i#ILD5JU$QR)uS;z6p};l$Ff*&b^ty4z!Y6WRjPPseiaa_{C6CjsLeI>_RN{|n zZnRM}LViF6&du!pPzS!@jVot^LDrv$SC62N=&$z4Aej{YE8O=rj35n;AC6Yw>7jBH z_tncUovmvIba%Z65y4R%W#oqJ#L*#iLDX7&b@+t1(^bIdT5oc_grs!zt zEW}U-bA5ht$2cp#CJWx`QKOtkem)Y?B^CjdP&CtNYrpdab@%3;mKKbid$GpUGgw>~;RqvYY z*V4aENk(nhxkJ(>Xb`$5B`lH5rn+ECf95?&1B}PNaR41pykO@0nKbMHSucK=VbUji z_+-XbPryiZi%iT_)ECz}T&j6r4ns%wz_;U0cwQ=)`3+rd*3E(O<53v<=M3%yD-%Cz zC*Rf0lr}nQQv=>q7R}ndEGXQh>B_nF@L8C3b=iXwKQ&fMRv%z=iWW*8XHI^aTMf1V zN|V6ssAf##ZjmsHNHoYivmAhziHL{@kaRZ$(IWs-`;lQMCF)EP6e&2kc}W>5xLspJ z4ZKK_Vvs2=UZf2OBor7JflINH!R*Kth67~UyLoS zd2ci-f|!{G5_vq19}8EZER@4lLN29;zD^wd%#Cc{1@Apwr9q*IgJ zY0Bm=7yydBt<-baxX%V&gp8RSA0B%=oG)En`?y08+51`a+Y5_DAcE-cwN>#qzo%RE zKlK){Osdv+KD#=CGS*Q19~ilRt}B7#Vs}EeV`5)ge%-n6!V>fnkvYL*!0*%rISbmr zDQesoHa~qQ^42^1`nQV;FXJ~+@j15F*X6FU|C>Zxo~DiucjVv%I6RV2)hi^mumAG= zc|RGJaK;%Kc>reggZV; z9f%0Q`oL|)q~w?4Kr*NAj(&9enW6b%NVqbXgd~Lg0Wd$|K?4e4goYohPDQz3@NzSDGrOAVB=h^$qUf-$$K51ke?g z)!XHMzLDVL@?TfVE0ePZ9T{@(>jTPJ|Lk$NjDU=zrMx@ZOdGLXm*)r$OCDX=7r}DJ z+)*6@-w-qkL|+6}LO7RsmN-5|1YYgI!p^|j{Q!aZmxPXlzBqM=D8y~5n~i(gV|S=~ zosiW1@$sf?Rrr5MV@yhxI#QfBoY%i^U(*uHaLI3M4V{YIIRiVv2 zF2K=&jx(ctIuO>h)ldWSkb9#Waoz?g!

                                      HHU}g^d%RUyjl-fY&ssIR^Dh;M`m#sbCiDK&#Yyf{GuGGR zZT*%)OgfO|SaK<05E0)i2a?NnpS`QYHJ^b7ztrBtg(gAvIB~GVi$4_S39D+ia?4OE zN8DNAzW{c6!-4%?q?8#o(;;SS@8kU(_mz)OcB!}}cxxiWB*%#sLuxf64zY~Orr7}* zC{@4W%qD-uOi@WDC8RiHZvHBoC;KVuH z&~CidwrXeB-1id9mlJlN1wV^d_4{}#n*`|ZjCsGMy*ADN1=BQ78Q^O;ZmbDlHL92+ z<2ect-DR$MS(umm(7UH3KyHuH!4j)i@{in!nWQV7Nd zp@V{@d3h%T*Ynf$cvf~rCMGA`ychj_J_w9C%(ODw>RVy<#kfp5c}eWL@VR3~J$q)R z7}>sb$oq6_DHqN@Igg{#FJKcvqFbeQrj1*t<*FA^Jy||46347=RO-#R_A6byM1XIL zN?CnL_@gnGnxv~}7PH$P|3PrfC{-orEk`Bg<#EA5(}B^oX;BkWcNbRAQDv-%g)6J+ zrur6PoJaF^R+VZ_bV<6IjW2g8yBtEZ{ky$tV9q%+3S^e?QNs7Nw{RNQMScbhrKPAo z6tkG&HaVm6c~Yw=t@*cvvD@IS;FiU=ZxnWS5vTRMJdP%J^VpyGlbh||Iv}JW-rghT zB;(^RSP$AkHn=Blka8ouS^;mRM#Tx{fv1e&&EVi|R&tZ0NuLu-erMv%I#(MD(;wfP zLBt{p* z%G6c6vT8vr{OK5po$C-)isinvmyclG+QIGG4z#~1CHON$}THvHazF+4Y)v!xI^^#TO{DZl}lhh$Gg` z_s@-e-6EKqAyR*}OyYx@Rf9dh_p=>V<-ry%1z}K|30#DQiBw8& zjp&9Ey+H5pvew+jX-DY*c^EjpS@NEXEAUmKMrPH}A~i#7Gl!b+yN36f^r3MIS^`|O zrkp>&=La*9h0w+V#e44T`U>hMq1lWRiM-?TL{=NNKs9mCIW&8MBeqc;g@YN(mk)HT zx2Bgmt~N%Rx?C+gcUCO4DQ@Ux%I>s7HGdX7&v18#T2k%Jm$X50O};d&kcvSuYp%IE z&1(vCzQTh(^W+=rhca&W{38W?IWMpLC6De0i%VuWK>4 zh3iZ~j3841TPyG7q|pqrhw;l9-PiN&YcB?}eTVGYS|vhp2+g@zbvtm^s8j>gOAdxB z_`Iw6o@vc`g84hPSY64V3IFLDwp5T2R~%@Lb{EhiAM#H#iYx@P%ci{@+?AO`a1`0jE7Veq7H0j0KDt;&REyXp!V)&O( zP_49kXLlJ6_jdeb%=)`qYAn@kEo{v{HOBfPu3u;vFONLt(tBCpL=d{X24)&M^tk|# zbMKlPMJ4^13`a<*e~vvB-%(yDcf*#%&7=kIhq_Ngk))(W_-pcHh3dlM zn=e0MF9$X}97g$y+^DUNI09lj zkWg#;#k6pJEsRz)PHtzu=5wO!tnsfRp!I7|KNTWnfq~17&U0|W^V3H`UXQtNVCEu+ z_i>IrX4`@@vl2o6XHRoQ`$vnQH$rSlf_5Cj31qjG6m$5K&)exIs_ zjH#Nvchz!Iy2VRDM$bQNo{fH@b8yQj%>HUwlV^4%Baq(4he22eBB#MhkJ3KGmw4N~ zxm$w+)kxIv*h9Z|e(t{JbiVi6B+SFg6(I(;5|tC`nG>OKcJ@O*{2YYl9S087==pQN za4N9({Y6QKj^#+HTRM+*o3u-tSh0nrfZyJ+?J@JlQ#9}XWj@{U^x9(bHfFsDBRwsW ztY^Bkl_PjxZ4GsqVytab#O+B_Red6Q`BD^xlEfiZ84%nggA{Q!3LK5U^Hnf>x+3Pj zlvpnbP1t38UP1OHQDHu7Y_Uq4LJ$S}d`^yYeUe=2&=d0bH-aXFh(%iA&2U?LQX2dOjy5D&BOw_HKcf}Vqe&jpR+TNfpq+5!i&BJMK7j@NsW@8BlEn=SdHB!Oi4fv;oh5+sI(Uld0Gibe-R;ce624e zWM=l3(Y1?d$OBc!XvDrL2JtSHYRe+%xn5HCKSH|*o~wBBeMxEpzY$Ryk1qxdeFG?k z$Y{VAwvx^X7NbuqAkd?=Kc`2>V+Uok;DpZ6R6~?V^55+%naPtg8F}Z$gctq^xfUhE zIDEiII!VED{MIpT?oc6smW{1~cb-r>Pr&tY0VJU|PdS7&m2}UMaw85GhrjFS3O=u! z0gn1E7TA6VyZK}I2^W)RAn@h{0bl8_!#yUXLUsj%Zy!hRmw|#vGsC~-jQ?(#hC1|b z`Peq82$pS*JL*YW!?!W=6QovrRlIB7P@`aNHzQLL$yJ{P0E3s%7dcq?SzqmT$Gk>~ zZ zgfdxHEFT}KFXOG@-jU@v{od@gd3PP{AHpA|Av@X>krI&}`8gNMlW|Q`WR~ek_fIh; z^7V%CCU;6dW5$q7=k*jsC9ZlvqalomoTo;F@N=5=p)qe_>zuiUEt6rQ1O1?E@w?=i zSg~wHF(?%?^pVro^c}?!qqd9rsLc<)Bva9uEynk9N-ET^Fn=eg=#kDB%#*Li@+kqk zpUSZo8KQG2OmbgniDJV{&JyU@HHP7oR{&^`DcU zZGUbxNbZfm^>5ep9}P%uK4mugH zEhV6CFe5k2q-F_bnx{U%7FA42#)%@^R8q5M*=NjI!3Gb{VNXm;-);2snwIr+Bm8FC zKRyjA>gzJ$^81tVDX-P~IXGxlae`O;xxk6enZVg>aPBXUQR%m;RJ)&4*?5;F?$F{x ziY=(U2@V{$Km&3^gY4Vdq&C<}W-Hd0!Yrrb&2@CNDd4v@%ny~Ue6EazMcHEHbyZZ2 ziuJg&&F!|C4T9wHj5<#CoZm2^C@8=|o~h+%Oq=p)nZBr};-h^?+b?#Ow-ap&97gmt zZf|%e@&;Ot6nGY6)_YY|FKYTJJU7jj39F4O#bSHd{9kud)|0D|4;OK{wg(p<4wCRE z%#%5{t!F2C)t`=`vq(q4DR?N$QW+QvtL;6bBfW8rVr3Zw-aiWfGx&>za=T%%WVWOl z4zbVWEgUwy*LueDs)FO|F5!axnBT8*Hdl38+~q&cA9da;n6i#ktWG)}>{%XGk~l#Q zC4wu|p2{_n(WFYED!crkqz?l=K6P1h85_~@CGKIeHoM3%uy}G?o<+l{yyu#4UBp<2 zmNw$knCg4I=0hc-xwMVfn_Q}qh(B-n3i`W3-v4br^AOIqK7>Ah<5Z2?nOfw%)W*^wW1D2MVq z+Abv*blGC$+fhHnN6A>R6J;bqTa|)|sZpuSY{R*EIEpxP%(PAtfxv9R__M`kj@Am# zs02i0zrl`2@ssUwh!Dgv%+tq4{G)74q(&auFZDT9n3gTrIWq004G=Lt81l_Fj@*%Y;_L)K{7A5VYXxwGEH%sx4<|jBH6az@Z-mymjj&#d0>H$;j7AV&&tRnzk%O`nnX4$!b!vmC^VJW>dPB!*oNb zadi5(O*Ch3^~ljj@!!H^4JBNx7O1JnB4D(;q{I5Jm?5PR+Po`KR(@Md4n#979wqKS&uJ9<+Ie?0?U9zg}vbNRHMvk<9k_q^ZH|zNJcuc|1 zb;)yrVUce@DcRI+MM9MNiu3*TKfT4|x?WXMmK2Z7Lpbn1E08g4P2>sCa2vIS2soE4 zGEXK1z1;es;6l7slbNB{pT=(9>oU9x7FNInn4?1~ zDh4m3=-_o*bCDBwgr2&6`)7wwGRrD27rTd?R-31?!9+m&7U@unmiTwC?9cFRc*tw} zw_2C7ES7U5ILPstGA^0*s2Gy3{W{nzg{_THY9xJ>%0HS)+&SL;5>zg@nK$aFZizK= zZQD_~Z24}EsUfatO9$nOs<9OJULX~Hd5{jR4T?XjvXJ)rxeqxPl~4rAc5}>S4!(+s z!t9r*6AecrQ!vn2{}_?vm57p<6Z7wDo{+$FnS&KlPe#F92VgU}_OpU2!TNoyO3CgR zOuMWcPp50?lkBsiCDH^q>ilQK-UU1nHD!dwB>By}spgLNkCZ&4mUEJOW_W;}F!Rau zA=^O|+iBqYK@BM;5yrfcnA#IjCkNaY_S%at6W`gs7FM(tNL`bBPjjhFuuKxhOW)9U zna9gmyuhy_?arzE)nigID>B-Nac0WynL)pK`-d&k!StD=o%sm8ny>hm^D1=$Mo^&X zMB1iKiEE#!CSSceaS1n7oRqH%1A)i9u>{#E&#I=_HP!Egq6xW|^kdH|+zrF7snb}Cw<5Yn_xF~K?&9ohzRr+mO`iD{4S z$X~A#>J98>eOOKi`IEzuKYxT@PFf-=cSz&lz$j%65{XWT7WW=YHNj|qbrbCGSY!Tu zw6r)8#i^a1(O%zj;bu$Thp|C+J7;TC9T%$E3-%aaUHlIqE8FL8NdAm2dh^<}>*&Jm zG7!#=eHhfXR+hN2Uk$udmc zhA}Y$>JIMiJx%d+fYCYKr92_QyBoPO{1H7#8^giQESTOyn*IrYBfxdXn2+IW!@-hH zm|kODf~At@YeovFQA3Z8QicPivU*v^!u`*C7WMO`2|@1N{|h)%4RC3ivoT;jQ;c$Y4 z=aGqfUwW6;ayDoR6r+Wsi2zUgbd)`=9{d$c%XvoP+*4k5`BbO4$>fDEF{4~+0Sr>;fK;XksO zWMUy5tD`C1m1r1PzzolWi@Q6gE%xwjF>53TxDSEh+U_7j6VgZx0LD~~|8bQ)t%3xsT|S|CzQBNJ z>oO`h8qZMge?tZhNexNKAJTTV94Og4se>D2i1~|p62usho8^sRKpcvjCK))r3o)(S zO0?6x!r8joS1td0?ZEi}*lS1>6OWO1_=lc)zqInz-H-3qS#~OzcrCnUk)G{3aih@i>X-YV?TXB<$+&;VDrZ8?r38x z>0rVm@l(2ky`Sj`P&t~8hmduQwA&~~i5@ZhYn-Nf1AD0&e>WmS)>JYEQbo;;mQL*= z|DcWj3f8qlV2@UCd$>}5dhY%8G)hgi3mg60WGkw;71avd@eB-6CNwHy=ZLGLbKq|s zcDn=Gh4UrqEx6=a`5D~-?B+hNOpcLJY$Y$u<8HfFc3JWqX`xq`r^=u|001YB%sP#`Yyrj>d%O?Mc z33H-b9McgRFTN4;>7t25$%9MBx;XoI{fP)41CGj(dCKuJ&okypfXH~ep}bIu9Y&^o zWYUUiiK2LxlIR9aD`b;D&zCAH>(MM<8Wz4kdRxaJ^S)l^W-l2(!mM{`f#s<;wr-qK60gwmNHyUT3c0Y}LB&LraZ_!079 z+vTgMO}m6YPUU)TBf^BnK%g{l7n1kRj4Ccl-Q4-EZIHvcepxU!s+e%c56 z|NK1W2jcCBLcQhF$T5;@+VL~g{aWbF%*Pw%I3d7P;mCQHLYPJw;iL3r?cSg3=||M3 zl!fM`9d)jzq;=le7beJ;CjsNnDH)}2sbn-=A_F)Z>u`|J1>Q^52v47XWDd(@85_#c`xDC~0J1RF_fe-GJE_I+z`%rC&InUxk=K z3!6hbObmEL-2d=%N92~@$X#>TTN#u7L<;#0#O=5wVq)=ZHpO5=uEhP4t}dg_0r#hs z?wBi2_m3hwsVYB+Yr#-qo5IEOyq&9PHEST0q1R$$Dl0bf!iJq9Y3Rx3ozmdLmjE1& zgOYjpyIdpt1^hTFXJp%@btC8BM@Lar$Ecd-Hk^1B4SsleayFo|Bz6aj_G=~l@kocJ zKNek^P}`%8`wwKQN+B8J78p7vso~JoW=_nJ@dvn*!1IZ;)1~tYz(gp>rtuJXM60ar z;fOe_L{Gt^WPi&=5}#*gm%gaOlphZE9;^5-m?%U zN3+tvD|;$CSQyCY4qG-Y@ciKZu^mq8pAPZpLGNBzd9X93Uwz4t4g zG@u=wozD(Mt*&$wd#zFh`L6VT-JtpCVZ={Dt5g^h^N$Ofnt@On2|h(Mk#;HQqK)m3;%D^jqs^-XH_s zOk0wc`2H?!O|)^YxQQVo!*%D4ho7Krg0bjJo zm*Z_=vQrLfh-d;c2bJm%|7i7%pJ41>G zTz5Y_y&f3T=DfYl<8sS5#9zM85p+Xnr8m;3!!1tZ%u33r(sTSD430%+U6^nj8#uKM zLcxcYNo`YV&5GXAvAzUcWIRuVo#cAxjos2#4%{>9YO3gAD7&W+s_--(+O9=c+Et;} z5B?v$y2Wx$x7sI{(e`u@@UgiWLn(HciI!6d zQei*p2T2#|GUp_p*r{{Z)Lgp&e{~xjb6enb>wu;s_92?QTTldlXpsevEb-|+ zV@--`KIymjlIjWbnXh5pG-cy@K2viJUAO$nAQ3MR$5fO49)ycGI4Tm+=j^ufJvCtZ z)%W!Rv*g*yCZSHN2lB@As9P?Gre)2ZsX#%dx;eJNK~FXPzRoH-#}tfIOr{ z=?C0x0A`F^T2X>oq#rW24~%WQCMmRMNnL*G*Y4FAA=GsJQ8r|Kk(gsF{0hGSf{yVUHC>xr5FExqaRF@NweU%kySbI zW3Y(pFeM@UzeGe6J8?iLQF;44z|jyTIkZ~x@7f#GMe6LEw~V$c0Fom|1b zq$L3>#eV@#%$m5fsG%S6U>SRD?2Qm@GgYRD;h)~xVC}VS~)H!43-S`T1k)g^Tj+OXcQg5i6-i(LHk-j zwJjwX5_~xGxdUZ(2j=2_$Nz#OJ41Xd3RJQD*gj}N%~Kh(ApIO^it96dgnR7 z6j1>Q`KhR&!Yr!&%JKC0q(qs7WQobRd{{wXm8@Ut*1({bWc1wQgm(VVIXrO&6VZ*f zkrDFPX@BVT4L2%W47^7b0*i+E8_%1j6Pt-B&<^0=UCVW<9(x_rPPJdkygh)8y+zh7 zEIdg4w6M9rZUYr>KMgG#M(>NmzfnIE<(C>uZtUK<5E%r?-pZp~!s_WFE~-Gqw>7o5 z>651q_F*&3L$7Qa=g_ zu`o4Z-@W58jJv$B+|GlMFo~7H>AwIy>W|Q{0L{OM05!wnACB7wrefBh-J_`M{IeVDs zYmmCwVF`^yMOu)_az{e6#$)_gDgFX5E$u($Y2>9`POCc?d_i56!+6Z6O~MW4d&XH7 z9&sQ!N_kQ9jYny+tdXhg;+_v#YdHpB|M3DMeUgxQ;i1w#h_~A13r!lyvJTw)29bR^n(Tr{TygRfA=% zl!h{C5QPdJgk$#P)vE&T z*0SB5U@EVEIUyZ>GP_qF`D1yew|QL>bnlgw{BP_JHgzyw2JOsa^JpOC(Rp+YaKBh) z?cz9U55@J?q*Wc-Zs^7-wiz#eC3vPvk+70!I|Xf~<^&T`gx0$GrkV1ivvM#eM_DR9 z5=7tPiB3fM$;|m_YqMWxY}K?rZ9S+QjnTPcUiygqMviET#acp`EDDd{wzTZq6(|*f z==vtKw&pF{{pacqiyo_gO|1Rt~a31C;=4b~jjuQqc zi|X#rdOwZ*PAle-6cd9j+xC=dvPMTMiG1EwZr*;%6r(H6Q7(cr zeE4;=uQGs%jI?Wrsyps8qnm}Og@MNx_i@!eU;Zx|A-l-ii*|t@MUV?&Q6^gf8$*<;X2B&XYe<7Bik*#k*ddii*>2;ugGfV zBb2KD!ej0k0f=>Hc0B`v$WVh@?Q=Zma}f0sk*N@s=(8bK#Tla$C(Gl$z`r#Xu;Dqf zY|5!fPGBfljm+e^P^Fts!6INJWt#V} zFp^}6=bci_?jKLTWUv<1uATUGdnH-&^OGlK5RoUjwJco4H(SzP;behopCApl^F>75 z`f)Mn>u%u-u?Y8_+`c{wFA*9bhGpBN@JO{|oV9=1yr`e9-^cxud)*8n^{1Z=+qQ)k z9$-03Wpg8Da8^Wv4SgHbIp+fMF(t5Qms?o(hO|x9FEjS8Jhtpy_1Oq_vVuhYZ{3Ik zRcftUJz9Cu7v+&&ZP*1$w#dXc1)iVCOWJ;;Pwlo%&Kl+sa=+hMN;_5_N~Yf7F593> z-^E*(Nv;Z1FMMM06cKx$Z#iT?&{t{CsxsA+WvPfX+7JjUqb7gd4P(7QSk4FZ$&mV_;%>kXe{y@xuVZh^XKwey`8^D^4G{#6~Wiblb`gz3>dN z%zbH2Zr4kY>y}X+D5dpEd*bp{K9+4yrtuZ8>eCMacQe+mm+GogDVd>Ln;)P#c%Qx& zzGE49kv}2y>09+hb&CeNi3tmfG$(oo8(c)hsRdbF!?wlrE{;7m-eoDF1jstkAWV?t zHVrAM_a+{syE^ZBMCK#i?*uK~@2j=%Uv};wA0PJ9LSfR^@BaeiYF~LOBi}!aNsq2v z+UNgYCue@m*du)yQvYGe*m5sgg?CV~D#&>~p=;57zT>!)=$;9>!%1X^=)khcn`(TJ zS`y~J#U4HUz4P>z;7u7AlnCdYp}lqZBOLO}@jm^5T}sh4_{#xk>@oY{CC?HJWc65b zA#(|BzAYh0=$U;?Mxe5<21-=r(QitO2OjJFSe>UpJfS*vI~`N^hbV>Nq?61)4@I|N zH^NGrTfOWzAGdEW??uipjZwst;l}_x(Nkgh?YsLQ&FI%)e@8e1v578@d`lo1-1TxD zEgwECxrPfp8I`LKst}}|-yK7s$SV~^5`F(8-l?5sy6e-546mV$QWO*9L7-)EFM4`E zkJRr1U;rrb`dLYqg=qG({$;K>*!We@S%Eg`{HK>ja_ON~r+A43H}^Oi&8L8)F{xXW z_Npk72^Q|Paoo$fb`u=1wpAiXAh1kF_gYeD+A#@uOr3=)FwXe^0KK>mz*##!4>!b@ zxUx&9y-ARg3OdV`mL>tgI*$S6)?)BO)BOM&M$4WN2(Ba|w^s7xYxdFyFcOUzfL$1EmH8+)slQ*T z!w8_F?IJCaH?%Au=8VE9$rKBG2AF>?isiQNn zWOZdp29D82kBP!UO$N}?LN?&MM4e{eqTtYgll%L-4C?PX?@BlW*;4@cZwF3^vcrgs zqZ5A%Qi>3Te#s{?ro~uH^F?K;;9zLLbXLE30@MGPK66-5cIl9ibYYp`G2J*C?p1NR z5%i(0!6m`SmEEdVx09pEQVm%2MyHhT^>&}8qIW_mB~s0QdQ*3`Fh@Zi#f6`Y=qO+c z&eDSjf*Vjn=4R;fXE>;5Oqz%nCbjqZ+=w4|gUn<44?5&}PYf7x1yV4u5&W4!#vpyu3Mhq(a1OOvQ!CMf z6c3$C$iqxZ$xxW|=bptH8N3AJ61vVXYW>-<5OrDL-+tXUy~s`e3iM2Z|$&h8A(~1q0 zj0Fju)R=NbeYhLy z4kPEk`Dw#!rNnTykkHm?BFVE?x6|*}rIN}-4x(pH%4s*Yh5G(eTJ@zBl#<~E+!XU9 zG)&2k9xWD$&M*-Fp-5UH6(0QUB6?9R4`UnTYBG!bPqHedtVa3q5*X2wc)HeK|JegY zXx@RIhphPDIT4?NRA%;Y{BPnt)nY;bH&(kuO{u6-<;NHhbzK#s^oKWZ`YUt)vsd&9 zrDdc$xwX;GiJD5oZ=x3sH+n;uOh0-AU@3a)t9jC+(XQog-8vQBG2T9sF|t&~qkJ4Et;T{{We)yqW+2 literal 0 HcmV?d00001 diff --git a/addons/cms/assets/js/bootstrap-typeahead.min.js b/addons/cms/assets/js/bootstrap-typeahead.min.js new file mode 100644 index 000000000..766968716 --- /dev/null +++ b/addons/cms/assets/js/bootstrap-typeahead.min.js @@ -0,0 +1,10 @@ +/*! + * bootstrap-typeahead.js v0.0.5 (http://www.upbootstrap.com) + * Copyright 2012-2016 Twitter Inc. + * Licensed under MIT (https://github.com/biggora/bootstrap-ajax-typeahead/blob/master/LICENSE) + * See Demo: http://plugins.upbootstrap.com/bootstrap-ajax-typeahead + * Updated: 2016-11-09 04:40:04 + * + * Modifications by Paul Warelis and Alexey Gordeyev + */ +!function(a){"use strict";var b=function(b,c){a.fn.typeahead.defaults;c.scrollBar&&(c.items=100,c.menu='

                                      ');var d=this;if(d.$element=a(b),d.options=a.extend({},a.fn.typeahead.defaults,c),d.$menu=a(d.options.menu).insertAfter(d.$element),d.eventSupported=d.options.eventSupported||d.eventSupported,d.grepper=d.options.grepper||d.grepper,d.highlighter=d.options.highlighter||d.highlighter,d.lookup=d.options.lookup||d.lookup,d.matcher=d.options.matcher||d.matcher,d.render=d.options.render||d.render,d.onSelect=d.options.onSelect||null,d.sorter=d.options.sorter||d.sorter,d.select=d.options.select||d.select,d.source=d.options.source||d.source,d.displayField=d.options.displayField||d.displayField,d.valueField=d.options.valueField||d.valueField,d.autoSelect=d.options.autoSelect||d.autoSelect,d.options.ajax){var e=d.options.ajax;"string"==typeof e?d.ajax=a.extend({},a.fn.typeahead.defaults.ajax,{url:e}):("string"==typeof e.displayField&&(d.displayField=d.options.displayField=e.displayField),"string"==typeof e.valueField&&(d.valueField=d.options.valueField=e.valueField),d.ajax=a.extend({},a.fn.typeahead.defaults.ajax,e)),d.ajax.url||(d.ajax=null),d.query=""}else d.source=d.options.source,d.ajax=null;d.shown=!1,d.listen()};b.prototype={constructor:b,eventSupported:function(a){var b=a in this.$element;return b||(this.$element.setAttribute(a,"return;"),b="function"==typeof this.$element[a]),b},select:function(){var a=this.$menu.find(".active");if(a.length){var b=a.data("value"),c=this.$menu.find(".active a").text();this.$element.val(this.updater(c)).change(),this.options.onSelect&&this.options.onSelect({value:b,text:c})}return this.hide()},updater:function(a){return a},show:function(){var b=a.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});if(this.$menu.css({top:b.top+b.height,left:b.left}),this.options.alignWidth){var c=a(this.$element[0]).outerWidth();this.$menu.css({width:c})}return this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},ajaxLookup:function(){function b(){this.ajaxToggleLoadClass(!0),this.ajax.xhr&&this.ajax.xhr.abort();var b=this.ajax.preDispatch?this.ajax.preDispatch(c):{query:c};this.ajax.xhr=a.ajax({url:this.ajax.url,data:b,success:a.proxy(this.ajaxSource,this),type:this.ajax.method||"get",dataType:"json",headers:this.ajax.headers||{}}),this.ajax.timerId=null}var c=a.trim(this.$element.val());return c===this.query?this:(this.query=c,this.ajax.timerId&&(clearTimeout(this.ajax.timerId),this.ajax.timerId=null),!c||c.length"+b+""})},render:function(b){var c,d=this,e="string"==typeof d.options.displayField;return b=a(b).map(function(b,f){return"object"==typeof f?(c=e?f[d.options.displayField]:d.options.displayField(f),b=a(d.options.item).data("value",f[d.options.valueField])):(c=f,b=a(d.options.item).data("value",f)),b.find("a").html(d.highlighter(c)),b[0]}),d.autoSelect&&b.first().addClass("active"),this.$menu.html(b),this},grepper:function(b){var c,d,e=this,f="string"==typeof e.options.displayField;if(!(f&&b&&b.length))return null;if(b[0].hasOwnProperty(e.options.displayField))c=a.grep(b,function(a){return d=f?a[e.options.displayField]:e.options.displayField(a),e.matcher(d)});else{if("string"!=typeof b[0])return null;c=a.grep(b,function(a){return e.matcher(a)})}return this.sorter(c)},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();if(d.length||(d=a(this.$menu.find("li")[0])),this.options.scrollBar){var e=this.$menu.children("li").index(d);e%8==0&&this.$menu.scrollTop(26*e)}d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();if(c.length||(c=this.$menu.find("li").last()),this.options.scrollBar){var d=this.$menu.children("li"),e=d.length-1,f=d.index(c);(e-f)%8==0&&this.$menu.scrollTop(26*(f-7))}c.addClass("active")},listen:function(){this.$element.on("focus",a.proxy(this.focus,this)).on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",a.proxy(this.keydown,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this)).on("mouseleave","li",a.proxy(this.mouseleave,this))},move:function(a){if(this.shown){switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}a.stopPropagation()}},keydown:function(b){this.suppressKeyPressRepeat=~a.inArray(b.keyCode,[40,38,9,13,27]),this.move(b)},keypress:function(a){this.suppressKeyPressRepeat||this.move(a)},keyup:function(a){switch(a.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.ajax?this.ajaxLookup():this.lookup()}a.stopPropagation(),a.preventDefault()},focus:function(a){this.focused=!0},blur:function(a){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(a){a.stopPropagation(),a.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(b){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")},mouseleave:function(a){this.mousedover=!1,!this.focused&&this.shown&&this.hide()},destroy:function(){this.$element.off("focus",a.proxy(this.focus,this)).off("blur",a.proxy(this.blur,this)).off("keypress",a.proxy(this.keypress,this)).off("keyup",a.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.off("keydown",a.proxy(this.keydown,this)),this.$menu.off("click",a.proxy(this.click,this)).off("mouseenter","li",a.proxy(this.mouseenter,this)).off("mouseleave","li",a.proxy(this.mouseleave,this)),this.$element.removeData("typeahead")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f="object"==typeof c&&c;e||d.data("typeahead",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.typeahead.defaults={source:[],items:10,scrollBar:!1,alignWidth:!0,menu:'',item:'
                                    • ',valueField:"id",displayField:"name",autoSelect:!0,onSelect:function(){},ajax:{url:null,timeout:300,method:"get",triggerLength:1,loadingClass:null,preDispatch:null,preProcess:null}},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);c.data("typeahead")||(b.preventDefault(),c.typeahead(c.data()))})})}(window.jQuery); \ No newline at end of file diff --git a/addons/cms/assets/js/common.js b/addons/cms/assets/js/common.js new file mode 100644 index 000000000..23b715982 --- /dev/null +++ b/addons/cms/assets/js/common.js @@ -0,0 +1,224 @@ +$(function () { + function AddFavorite(sURL, sTitle) { + if (/firefox/i.test(navigator.userAgent)) { + return false; + } else if (window.external && window.external.addFavorite) { + window.external.addFavorite(sURL, sTitle); + return true; + } else if (window.sidebar && window.sidebar.addPanel) { + window.sidebar.addPanel(sTitle, sURL, ""); + return true; + } else { + var touch = (navigator.userAgent.toLowerCase().indexOf('mac') != -1 ? 'Command' : 'CTRL'); + alert('请使用 ' + touch + ' + D 添加到收藏夹.'); + return false; + } + } + var len = function (str) { + if (!str) + return 0; + var length = 0; + for (var i = 0; i < str.length; i++) { + if (str.charCodeAt(i) >= 0x4e00 && str.charCodeAt(i) <= 0x9fa5) { + length += 2; + } else { + length++; + } + } + return length; + }; + //搜索框 + $("input[name='search']").on("focus", function(){ + $(this).closest(".form-search").addClass("focused"); + }).on("blur", function(){ + var that = this; + setTimeout(function(){ + $(that).closest(".form-search").removeClass("focused"); + }, 1000); + }); + // 点击收藏 + $(".addbookbark").attr("rel", "sidebar").click(function () { + return !AddFavorite(window.location.href, $(this).attr("title")); + }); + // 点赞 + $(document).on("click", ".product-like-wrapper > a", function () { + var ids = JSON.parse(localStorage.getItem("vote")); + ids = $.isArray(ids) ? ids : []; + var id = $(this).data("id"); + if ($.inArray(id, ids) > -1) { + alert("你已经投过票了"); + return false; + } + $.ajax({ + type: "post", + data: $(this).data(), + dataType: 'json', + success: function (ret) { + if (ret.code === 1) { + ids.push(id); + $(".like-bar-wrapper .bar span").css("width", ret.data.likeratio + "%"); + $(".like-bar-wrapper .num i").text(ret.data.likes); + $(".like-bar-wrapper .num span").text(ret.data.dislikes); + localStorage.setItem("vote", JSON.stringify(ids)); + } + } + }); + }); + if ($("#comment-container").size() > 0) { + var ci, si; + $("#commentlist dl dd div,#commentlist dl dd dl dd").on({ + mouseenter: function () { + clearTimeout(ci); + var _this = this; + ci = setTimeout(function () { + $(_this).find("small:first").find("a").stop(true, true).fadeIn(); + }, 100); + }, + mouseleave: function () { + clearTimeout(ci); + $(this).find("small:first").find("a").stop(true, true).fadeOut(); + } + }); + $(".reply").on("click", function () { + $("#pid").val($(this).data("id")); + $(this).parent().parent().append($("div#postcomment").detach()); + $("#postcomment h3 a").show(); + $("#commentcontent").focus().val($(this).attr("title")); + }); + $("#postcomment h3 a").bind("click", function () { + $("#comment-container").append($("div#postcomment").detach()); + $(this).hide(); + }); + $(".expandall a").on("click", function () { + $(this).parent().parent().find("dl.hide").fadeIn(); + $(this).fadeOut(); + }); + + $(document).on("click", "#submit", function () { + var btn = $(this); + var tips = $("#actiontips"); + tips.removeClass(); + var content = $("#commentcontent").val(); + if (len(content) < 3) { + tips.addClass("text-danger").html("评论内容长度不正确!最少3个字符").fadeIn().change(); + return false; + } + var form = $("#postform"); + btn.attr("disabled", "disabled"); + tips.html('正在提交...'); + $.ajax({ + url: form.prop("action"), + type: 'POST', + data: form.serialize(), + dataType: 'json', + success: function (json) { + btn.removeAttr("disabled"); + if (json.code == 1) { + $("#pid").val(0); + tips.addClass("text-success").html("评论成功!").fadeIn(300).change(); + $("#commentcontent").val(''); + $("#commentcount").text(parseInt($("#commentcount").text()) + 1); + setTimeout(function () { + location.reload(); + }, 300); + } else { + tips.addClass("text-danger").html(json.msg).fadeIn().change(); + } + if (json.data && json.data.token) { + $("#postform input[name='__token__']").val(json.data.token); + } + }, + error: function () { + btn.removeAttr("disabled"); + tips.addClass("text-danger").html("评论失败!请刷新页面重试!").fadeIn(); + } + }); + return false; + }); + $("#commentcontent").on("keydown", function (e) { + if ((e.metaKey || e.ctrlKey) && (e.keyCode == 13 || e.keyCode == 10)) { + $("#submit").trigger('click'); + } + }); + $("#actiontips").on("change", function () { + clearTimeout(si); + si = setTimeout(function () { + $("#actiontips").fadeOut(); + }, 8000); + }); + $(document).on("keyup change", "#commentcontent", function () { + var max = 1000; + var c = $(this).val(); + var length = len(c); + var t = $("#actiontips"); + if (max >= length) { + t.removeClass().show().addClass("loading").html("你还可以输入 " + (Math.floor((max - length) / 2)) + " 字"); + $("#submit").removeAttr("disabled"); + } else { + t.removeClass().show().addClass("loading").html("你已经超出 " + (Math.ceil((length - max) / 2)) + " 字"); + $("#submit").attr("disabled", "disabled"); + } + }); + } + // 回到顶部 + $('#back-to-top').on('click', function (e) { + e.preventDefault(); + $('html,body').animate({ + scrollTop: 0 + }, 700); + }); + // 如果是PC则移除navbar的dropdown点击事件 + if (!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobi/i.test(navigator.userAgent)) { + $("#navbar-collapse [data-toggle='dropdown']").removeAttr("data-toggle"); + } else { + $(".navbar-nav ul li:not(.dropdown-submenu):not(.dropdown) a").removeAttr("data-toggle"); + } + $.fn.typeahead.Constructor.prototype.click = function (e) { + + }; + // 搜索自动完成 + $("#searchinput").typeahead({ + onSelect: function (item) { + console.log(item); + location.href = item.value.url; + }, + grepper: function (data) { + return data; + }, + render: function (items) { + var that = this; + items = $(items).map(function (i, item) { + var i = $(that.options.item); + i.data("value", item); + i.find('a').attr('href', item.url); + i.find('a').html('
                                      ' + item.title + '
                                      '); + return i[0]; + }); + items.first().addClass('active'); + that.$menu.css("width", "250px"); + that.$menu.html(items); + return that; + }, + alignWidth: false, + ajax: { + url: $("#searchinput").data("typeahead-url"), + valueField: "url", + method: "post", + dataType: "JSON", + preDispatch: function (query) { + return { + search: query + }; + }, + preProcess: function (data) { + return data; + } + } + }); + // 百度分享 + if ($(".bdsharebuttonbox").size() > 0) { + window._bd_share_config = {"common": {"bdSnsKey": {}, "bdText": "", "bdMini": "2", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "116"}, "share": {}}; + with (document) + 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' + ~(-new Date() / 36e5)]; + } +}); \ No newline at end of file diff --git a/addons/cms/assets/js/jquery.justifiedGallery.min.js b/addons/cms/assets/js/jquery.justifiedGallery.min.js new file mode 100644 index 000000000..2be4903fb --- /dev/null +++ b/addons/cms/assets/js/jquery.justifiedGallery.min.js @@ -0,0 +1,7 @@ +/*! + * Justified Gallery - v3.6.4 + * http://miromannino.github.io/Justified-Gallery/ + * Copyright (c) 2016 Miro Mannino + * Licensed under the MIT license. + */ +!function(a){function b(){return a("body").height()>a(window).height()}var c=function(b,c){this.settings=c,this.checkSettings(),this.imgAnalyzerTimeout=null,this.entries=null,this.buildingRow={entriesBuff:[],width:0,height:0,aspectRatio:0},this.lastFetchedEntry=null,this.lastAnalyzedIndex=-1,this["yield"]={every:2,flushed:0},this.border=c.border>=0?c.border:c.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges(),this.offY=this.border,this.rows=0,this.spinner={phase:0,timeSlot:150,$el:a('
                                      '),intervalId:null},this.checkWidthIntervalId=null,this.galleryWidth=b.width(),this.$gallery=b};c.prototype.getSuffix=function(a,b){var c,d;for(c=a>b?a:b,d=0;d img, > a > img").stop().fadeTo(this.settings.imagesAnimationDuration,1,b))},c.prototype.extractImgSrcFromImage=function(a){var b="undefined"!=typeof a.data("safe-src")?a.data("safe-src"):a.attr("src");return a.data("jg.originalSrc",b),b},c.prototype.imgFromEntry=function(a){var b=a.find("> img");return 0===b.length&&(b=a.find("> a > img")),0===b.length?null:b},c.prototype.captionFromEntry=function(a){var b=a.find("> .caption");return 0===b.length?null:b},c.prototype.displayEntry=function(b,c,d,e,f,g){b.width(e),b.height(g),b.css("top",d),b.css("left",c);var h=this.imgFromEntry(b);if(null!==h){h.css("width",e),h.css("height",f),h.css("margin-left",-e/2),h.css("margin-top",-f/2);var i=h.attr("src"),j=this.newSrc(i,e,f,h[0]);h.one("error",function(){h.attr("src",h.data("jg.originalSrc"))});var k=function(){i!==j&&h.attr("src",j)};"skipped"===b.data("jg.loaded")?this.onImageEvent(i,a.proxy(function(){this.showImg(b,k),b.data("jg.loaded",!0)},this)):this.showImg(b,k)}else this.showImg(b);this.displayEntryCaption(b)},c.prototype.displayEntryCaption=function(b){var c=this.imgFromEntry(b);if(null!==c&&this.settings.captions){var d=this.captionFromEntry(b);if(null===d){var e=c.attr("alt");this.isValidCaption(e)||(e=b.attr("title")),this.isValidCaption(e)&&(d=a('
                                      '+e+"
                                      "),b.append(d),b.data("jg.createdCaption",!0))}null!==d&&(this.settings.cssAnimation||d.stop().fadeTo(0,this.settings.captionSettings.nonVisibleOpacity),this.addCaptionEventsHandlers(b))}else this.removeCaptionEventsHandlers(b)},c.prototype.isValidCaption=function(a){return"undefined"!=typeof a&&a.length>0},c.prototype.onEntryMouseEnterForCaption=function(b){var c=this.captionFromEntry(a(b.currentTarget));this.settings.cssAnimation?c.addClass("caption-visible").removeClass("caption-hidden"):c.stop().fadeTo(this.settings.captionSettings.animationDuration,this.settings.captionSettings.visibleOpacity)},c.prototype.onEntryMouseLeaveForCaption=function(b){var c=this.captionFromEntry(a(b.currentTarget));this.settings.cssAnimation?c.removeClass("caption-visible").removeClass("caption-hidden"):c.stop().fadeTo(this.settings.captionSettings.animationDuration,this.settings.captionSettings.nonVisibleOpacity)},c.prototype.addCaptionEventsHandlers=function(b){var c=b.data("jg.captionMouseEvents");"undefined"==typeof c&&(c={mouseenter:a.proxy(this.onEntryMouseEnterForCaption,this),mouseleave:a.proxy(this.onEntryMouseLeaveForCaption,this)},b.on("mouseenter",void 0,void 0,c.mouseenter),b.on("mouseleave",void 0,void 0,c.mouseleave),b.data("jg.captionMouseEvents",c))},c.prototype.removeCaptionEventsHandlers=function(a){var b=a.data("jg.captionMouseEvents");"undefined"!=typeof b&&(a.off("mouseenter",void 0,b.mouseenter),a.off("mouseleave",void 0,b.mouseleave),a.removeData("jg.captionMouseEvents"))},c.prototype.prepareBuildingRow=function(a){var b,c,d,e,f,g=!0,h=0,i=this.galleryWidth-2*this.border-(this.buildingRow.entriesBuff.length-1)*this.settings.margins,j=i/this.buildingRow.aspectRatio,k=this.settings.rowHeight,l=this.buildingRow.width/i>this.settings.justifyThreshold;if(a&&"hide"===this.settings.lastRow&&!l){for(b=0;b img, > a > img").fadeTo(0,0));return-1}for(a&&!l&&"justify"!==this.settings.lastRow&&"hide"!==this.settings.lastRow&&(g=!1,this.rows>0&&(k=(this.offY-this.border-this.settings.margins*this.rows)/this.rows,g=k*this.buildingRow.aspectRatio/i>this.settings.justifyThreshold)),b=0;bf)&&(h=f);return this.buildingRow.height=h,g},c.prototype.clearBuildingRow=function(){this.buildingRow.entriesBuff=[],this.buildingRow.aspectRatio=0,this.buildingRow.width=0},c.prototype.flushRow=function(a){var b,c,d,e=this.settings,f=this.border;if(c=this.prepareBuildingRow(a),a&&"hide"===e.lastRow&&-1===c)return void this.clearBuildingRow();if(this.maxRowHeight&&(this.maxRowHeight.isPercentage&&this.maxRowHeight.value*e.rowHeight=e.rowHeight&&this.maxRowHeight.valuethis.settings.refreshSensitivity&&(this.galleryWidth=a,this.rewind(),this.startImgAnalyzer(!0)):(d=b(),this.galleryWidth=a)},this),this.settings.refreshTime)},c.prototype.isSpinnerActive=function(){return null!==this.spinner.intervalId},c.prototype.getSpinnerHeight=function(){return this.spinner.$el.innerHeight()},c.prototype.stopLoadingSpinnerAnimation=function(){clearInterval(this.spinner.intervalId),this.spinner.intervalId=null,this.$gallery.height(this.$gallery.height()-this.getSpinnerHeight()),this.spinner.$el.detach()},c.prototype.startLoadingSpinnerAnimation=function(){var a=this.spinner,b=a.$el.find("span");clearInterval(a.intervalId),this.$gallery.append(a.$el),this.$gallery.height(this.offY+this.buildingRow.height+this.getSpinnerHeight()),a.intervalId=setInterval(function(){a.phase0&&(a.isFunction(this.settings.sort)?c=this.sortArray(c):this.settings.randomize&&(c=this.shuffleArray(c)),this.lastFetchedEntry=c[c.length-1],this.settings.filter?c=this.filterArray(c):this.resetFilters(c)),this.entries=this.entries.concat(c),!0},c.prototype.insertToGallery=function(b){var c=this;a.each(b,function(){a(this).appendTo(c.$gallery)})},c.prototype.shuffleArray=function(a){var b,c,d;for(b=a.length-1;b>0;b--)c=Math.floor(Math.random()*(b+1)),d=a[b],a[b]=a[c],a[c]=d;return this.insertToGallery(a),a},c.prototype.sortArray=function(a){return a.sort(this.settings.sort),this.insertToGallery(a),a},c.prototype.resetFilters=function(b){for(var c=0;c=this["yield"].every))return void this.startImgAnalyzer(b);this.buildingRow.entriesBuff.push(d),this.buildingRow.aspectRatio+=f,this.buildingRow.width+=f*this.settings.rowHeight,this.lastAnalyzedIndex=c}else if("error"!==d.data("jg.loaded"))return}this.buildingRow.entriesBuff.length>0&&this.flushRow(!0),this.isSpinnerActive()&&this.stopLoadingSpinnerAnimation(),this.stopImgAnalyzerStarter(),this.$gallery.trigger(b?"jg.resize":"jg.complete"),this.$gallery.height(this.galleryHeightToSet)},c.prototype.stopImgAnalyzerStarter=function(){this["yield"].flushed=0,null!==this.imgAnalyzerTimeout&&clearTimeout(this.imgAnalyzerTimeout)},c.prototype.startImgAnalyzer=function(a){var b=this;this.stopImgAnalyzerStarter(),this.imgAnalyzerTimeout=setTimeout(function(){b.analyzeImages(a)},.001)},c.prototype.onImageEvent=function(b,c,d){if(c||d){var e=new Image,f=a(e);c&&f.one("load",function(){f.off("load error"),c(e)}),d&&f.one("error",function(){f.off("load error"),d(e)}),e.src=b}},c.prototype.init=function(){var b=!1,c=!1,d=this;a.each(this.entries,function(e,f){var g=a(f),h=d.imgFromEntry(g);if(g.addClass("jg-entry"),g.data("jg.loaded")!==!0&&"skipped"!==g.data("jg.loaded"))if(null!==d.settings.rel&&g.attr("rel",d.settings.rel),null!==d.settings.target&&g.attr("target",d.settings.target),null!==h){var i=d.extractImgSrcFromImage(h);if(h.attr("src",i),d.settings.waitThumbnailsLoad===!1){var j=parseFloat(h.attr("width")),k=parseFloat(h.attr("height"));if(!isNaN(j)&&!isNaN(k))return g.data("jg.width",j),g.data("jg.height",k),g.data("jg.loaded","skipped"),c=!0,d.startImgAnalyzer(!1),!0}g.data("jg.loaded",!1),b=!0,d.isSpinnerActive()||d.startLoadingSpinnerAnimation(),d.onImageEvent(i,function(a){g.data("jg.width",a.width),g.data("jg.height",a.height),g.data("jg.loaded",!0),d.startImgAnalyzer(!1)},function(){g.data("jg.loaded","error"),d.startImgAnalyzer(!1)})}else g.data("jg.loaded",!0),g.data("jg.width",g.width()|parseFloat(g.css("width"))|1),g.data("jg.height",g.height()|parseFloat(g.css("height"))|1)}),b||c||this.startImgAnalyzer(!1),this.checkWidth()},c.prototype.checkOrConvertNumber=function(b,c){if("string"===a.type(b[c])&&(b[c]=parseFloat(b[c])),"number"!==a.type(b[c]))throw c+" must be a number";if(isNaN(b[c]))throw"invalid number for "+c},c.prototype.checkSizeRangesSuffixes=function(){if("object"!==a.type(this.settings.sizeRangeSuffixes))throw"sizeRangeSuffixes must be defined and must be an object";var b=[];for(var c in this.settings.sizeRangeSuffixes)this.settings.sizeRangeSuffixes.hasOwnProperty(c)&&b.push(c);for(var d={0:""},e=0;e1)throw"justifyThreshold must be in the interval [0,1]";if("boolean"!==a.type(this.settings.cssAnimation))throw"cssAnimation must be a boolean";if("boolean"!==a.type(this.settings.captions))throw"captions must be a boolean";if(this.checkOrConvertNumber(this.settings.captionSettings,"animationDuration"),this.checkOrConvertNumber(this.settings.captionSettings,"visibleOpacity"),this.settings.captionSettings.visibleOpacity<0||this.settings.captionSettings.visibleOpacity>1)throw"captionSettings.visibleOpacity must be in the interval [0, 1]";if(this.checkOrConvertNumber(this.settings.captionSettings,"nonVisibleOpacity"),this.settings.captionSettings.nonVisibleOpacity<0||this.settings.captionSettings.nonVisibleOpacity>1)throw"captionSettings.nonVisibleOpacity must be in the interval [0, 1]";if(this.checkOrConvertNumber(this.settings,"imagesAnimationDuration"),this.checkOrConvertNumber(this.settings,"refreshTime"),this.checkOrConvertNumber(this.settings,"refreshSensitivity"),"boolean"!==a.type(this.settings.randomize))throw"randomize must be a boolean";if("string"!==a.type(this.settings.selector))throw"selector must be a string";if(this.settings.sort!==!1&&!a.isFunction(this.settings.sort))throw"sort must be false or a comparison function";if(this.settings.filter!==!1&&!a.isFunction(this.settings.filter)&&"string"!==a.type(this.settings.filter))throw"filter must be false, a string or a filter function"},c.prototype.retrieveSuffixRanges=function(){var a=[];for(var b in this.settings.sizeRangeSuffixes)this.settings.sizeRangeSuffixes.hasOwnProperty(b)&&a.push(parseInt(b,10));return a.sort(function(a,b){return a>b?1:b>a?-1:0}),a},c.prototype.updateSettings=function(b){this.settings=a.extend({},this.settings,b),this.checkSettings(),this.border=this.settings.border>=0?this.settings.border:this.settings.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges()},a.fn.justifiedGallery=function(b){return this.each(function(d,e){var f=a(e);f.addClass("justified-gallery");var g=f.data("jg.controller");if("undefined"==typeof g){if("undefined"!=typeof b&&null!==b&&"object"!==a.type(b)){if("destroy"===b)return;throw"The argument must be an object"}g=new c(f,a.extend({},a.fn.justifiedGallery.defaults,b)),f.data("jg.controller",g)}else if("norewind"===b);else{if("destroy"===b)return void g.destroy();g.updateSettings(b),g.rewind()}g.updateEntries("norewind"===b)&&g.init()})},a.fn.justifiedGallery.defaults={sizeRangeSuffixes:{},thumbnailPath:void 0,rowHeight:120,maxRowHeight:!1,margins:1,border:-1,lastRow:"nojustify",justifyThreshold:.9,waitThumbnailsLoad:!0,captions:!0,cssAnimation:!0,imagesAnimationDuration:500,captionSettings:{animationDuration:500,visibleOpacity:.7,nonVisibleOpacity:0},rel:null,target:null,extension:/\.[^.\\/]+$/,refreshTime:200,refreshSensitivity:0,randomize:!1,sort:!1,filter:!1,selector:"a, div:not(.spinner)"}}(jQuery); \ No newline at end of file diff --git a/addons/cms/assets/js/jquery.swipebox.min.js b/addons/cms/assets/js/jquery.swipebox.min.js new file mode 100644 index 000000000..3c851baab --- /dev/null +++ b/addons/cms/assets/js/jquery.swipebox.min.js @@ -0,0 +1,2 @@ +/*! Swipebox v1.4.4 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */ +!function(a,b,c,d){c.swipebox=function(e,f){var g,h,i={useCSS:!0,useSVG:!0,initialIndexOnArray:0,removeBarsOnMobile:!0,hideCloseButtonOnMobile:!1,hideBarsDelay:3e3,videoMaxWidth:1140,vimeoColor:"cccccc",beforeOpen:null,afterOpen:null,afterClose:null,afterMedia:null,nextSlide:null,prevSlide:null,loopAtEnd:!1,autoplayVideos:!1,queryStringData:{},toggleClassOnLoad:""},j=this,k=[],l=e.selector,m=navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i),n=null!==m||b.createTouch!==d||"ontouchstart"in a||"onmsgesturechange"in a||navigator.msMaxTouchPoints,o=!!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,p=a.innerWidth?a.innerWidth:c(a).width(),q=a.innerHeight?a.innerHeight:c(a).height(),r=0,s='
                                      ';j.settings={},c.swipebox.close=function(){g.closeSlide()},c.swipebox.extend=function(){return g},j.init=function(){j.settings=c.extend({},i,f),c.isArray(e)?(k=e,g.target=c(a),g.init(j.settings.initialIndexOnArray)):c(b).on("click",l,function(a){if("slide current"===a.target.parentNode.className)return!1;c.isArray(e)||(g.destroy(),h=c(l),g.actions()),k=[];var b,d,f;f||(d="data-rel",f=c(this).attr(d)),f||(d="rel",f=c(this).attr(d)),h=f&&""!==f&&"nofollow"!==f?c(l).filter("["+d+'="'+f+'"]'):c(l),h.each(function(){var a=null,b=null;c(this).attr("title")&&(a=c(this).attr("title")),c(this).attr("href")&&(b=c(this).attr("href")),k.push({href:b,title:a})}),b=h.index(c(this)),a.preventDefault(),a.stopPropagation(),g.target=c(a.target),g.init(b)})},g={init:function(a){j.settings.beforeOpen&&j.settings.beforeOpen(),this.target.trigger("swipebox-start"),c.swipebox.isOpen=!0,this.build(),this.openSlide(a),this.openMedia(a),this.preloadMedia(a+1),this.preloadMedia(a-1),j.settings.afterOpen&&j.settings.afterOpen(a)},build:function(){var a,b=this;c("body").append(s),o&&j.settings.useSVG===!0&&(a=c("#swipebox-close").css("background-image"),a=a.replace("png","svg"),c("#swipebox-prev, #swipebox-next, #swipebox-close").css({"background-image":a})),m&&j.settings.removeBarsOnMobile&&c("#swipebox-bottom-bar, #swipebox-top-bar").remove(),c.each(k,function(){c("#swipebox-slider").append('
                                      ')}),b.setDim(),b.actions(),n&&b.gesture(),b.keyboard(),b.animBars(),b.resize()},setDim:function(){var b,d,e={};"onorientationchange"in a?a.addEventListener("orientationchange",function(){0===a.orientation?(b=p,d=q):(90===a.orientation||-90===a.orientation)&&(b=q,d=p)},!1):(b=a.innerWidth?a.innerWidth:c(a).width(),d=a.innerHeight?a.innerHeight:c(a).height()),e={width:b,height:d},c("#swipebox-overlay").css(e)},resize:function(){var b=this;c(a).resize(function(){b.setDim()}).resize()},supportTransition:function(){var a,c="transition WebkitTransition MozTransition OTransition msTransition KhtmlTransition".split(" ");for(a=0;a=m||i)){var q=.75-Math.abs(d)/s.height();s.css({top:d+"px"}),s.css({opacity:q}),i=!0}e=b,b=o.pageX-n.pageX,g=100*b/p,!j&&!i&&Math.abs(b)>=l&&(c("#swipebox-slider").css({"-webkit-transition":"",transition:""}),j=!0),j&&(b>0?0===a?c("#swipebox-overlay").addClass("leftSpringTouch"):(c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c("#swipebox-slider").css({"-webkit-transform":"translate3d("+(r+g)+"%, 0, 0)",transform:"translate3d("+(r+g)+"%, 0, 0)"})):0>b&&(k.length===a+1?c("#swipebox-overlay").addClass("rightSpringTouch"):(c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c("#swipebox-slider").css({"-webkit-transform":"translate3d("+(r+g)+"%, 0, 0)",transform:"translate3d("+(r+g)+"%, 0, 0)"}))))}),!1}).bind("touchend",function(a){if(a.preventDefault(),a.stopPropagation(),c("#swipebox-slider").css({"-webkit-transition":"-webkit-transform 0.4s ease",transition:"transform 0.4s ease"}),d=o.pageY-n.pageY,b=o.pageX-n.pageX,g=100*b/p,i)if(i=!1,Math.abs(d)>=2*m&&Math.abs(d)>Math.abs(f)){var k=d>0?s.height():-s.height();s.animate({top:k+"px",opacity:0},300,function(){h.closeSlide()})}else s.animate({top:0,opacity:1},300);else j?(j=!1,b>=l&&b>=e?h.getPrev():-l>=b&&e>=b&&h.getNext()):q.hasClass("visible-bars")?(h.clearTimeout(),h.hideBars()):(h.showBars(),h.setTimeout());c("#swipebox-slider").css({"-webkit-transform":"translate3d("+r+"%, 0, 0)",transform:"translate3d("+r+"%, 0, 0)"}),c("#swipebox-overlay").removeClass("leftSpringTouch").removeClass("rightSpringTouch"),c(".touching").off("touchmove").removeClass("touching")})},setTimeout:function(){if(j.settings.hideBarsDelay>0){var b=this;b.clearTimeout(),b.timeout=a.setTimeout(function(){b.hideBars()},j.settings.hideBarsDelay)}},clearTimeout:function(){a.clearTimeout(this.timeout),this.timeout=null},showBars:function(){var a=c("#swipebox-top-bar, #swipebox-bottom-bar");this.doCssTrans()?a.addClass("visible-bars"):(c("#swipebox-top-bar").animate({top:0},500),c("#swipebox-bottom-bar").animate({bottom:0},500),setTimeout(function(){a.addClass("visible-bars")},1e3))},hideBars:function(){var a=c("#swipebox-top-bar, #swipebox-bottom-bar");this.doCssTrans()?a.removeClass("visible-bars"):(c("#swipebox-top-bar").animate({top:"-50px"},500),c("#swipebox-bottom-bar").animate({bottom:"-50px"},500),setTimeout(function(){a.removeClass("visible-bars")},1e3))},animBars:function(){var a=this,b=c("#swipebox-top-bar, #swipebox-bottom-bar");b.addClass("visible-bars"),a.setTimeout(),c("#swipebox-slider").click(function(){b.hasClass("visible-bars")||(a.showBars(),a.setTimeout())}),c("#swipebox-bottom-bar").hover(function(){a.showBars(),b.addClass("visible-bars"),a.clearTimeout()},function(){j.settings.hideBarsDelay>0&&(b.removeClass("visible-bars"),a.setTimeout())})},keyboard:function(){var b=this;c(a).bind("keyup",function(a){a.preventDefault(),a.stopPropagation(),37===a.keyCode?b.getPrev():39===a.keyCode?b.getNext():27===a.keyCode&&b.closeSlide()})},actions:function(){var a=this,b="touchend click";k.length<2?(c("#swipebox-bottom-bar").hide(),d===k[1]&&c("#swipebox-top-bar").hide()):(c("#swipebox-prev").bind(b,function(b){b.preventDefault(),b.stopPropagation(),a.getPrev(),a.setTimeout()}),c("#swipebox-next").bind(b,function(b){b.preventDefault(),b.stopPropagation(),a.getNext(),a.setTimeout()})),c("#swipebox-close").bind(b,function(){a.closeSlide()})},setSlide:function(a,b){b=b||!1;var d=c("#swipebox-slider");r=100*-a,this.doCssTrans()?d.css({"-webkit-transform":"translate3d("+100*-a+"%, 0, 0)",transform:"translate3d("+100*-a+"%, 0, 0)"}):d.animate({left:100*-a+"%"}),c("#swipebox-slider .slide").removeClass("current"),c("#swipebox-slider .slide").eq(a).addClass("current"),this.setTitle(a),b&&d.fadeIn(),c("#swipebox-prev, #swipebox-next").removeClass("disabled"),0===a?c("#swipebox-prev").addClass("disabled"):a===k.length-1&&j.settings.loopAtEnd!==!0&&c("#swipebox-next").addClass("disabled")},openSlide:function(b){c("html").addClass("swipebox-html"),n?(c("html").addClass("swipebox-touch"),j.settings.hideCloseButtonOnMobile&&c("html").addClass("swipebox-no-close-button")):c("html").addClass("swipebox-no-touch"),c(a).trigger("resize"),this.setSlide(b,!0)},preloadMedia:function(a){var b=this,c=null;k[a]!==d&&(c=k[a].href),b.isVideo(c)?b.openMedia(a):setTimeout(function(){b.openMedia(a)},1e3)},openMedia:function(a){var b,e,f=this;return k[a]!==d&&(b=k[a].href),0>a||a>=k.length?!1:(e=c("#swipebox-slider .slide").eq(a),void(f.isVideo(b)?(e.html(f.getVideo(b)),j.settings.afterMedia&&j.settings.afterMedia(a)):(e.addClass("slide-loading"),f.loadMedia(b,function(){e.removeClass("slide-loading"),e.html(this),j.settings.afterMedia&&j.settings.afterMedia(a)}))))},setTitle:function(a){var b=null;c("#swipebox-title").empty(),k[a]!==d&&(b=k[a].title),b?(c("#swipebox-top-bar").show(),c("#swipebox-title").append(b)):c("#swipebox-top-bar").hide()},isVideo:function(a){if(a){if(a.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||a.match(/vimeo\.com\/([0-9]*)/)||a.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/))return!0;if(a.toLowerCase().indexOf("swipeboxvideo=1")>=0)return!0}},parseUri:function(a,d){var e=b.createElement("a"),f={};return e.href=decodeURIComponent(a),e.search&&(f=JSON.parse('{"'+e.search.toLowerCase().replace("?","").replace(/&/g,'","').replace(/=/g,'":"')+'"}')),c.isPlainObject(d)&&(f=c.extend(f,d,j.settings.queryStringData)),c.map(f,function(a,b){return a&&a>""?encodeURIComponent(b)+"="+encodeURIComponent(a):void 0}).join("&")},getVideo:function(a){var b="",c=a.match(/((?:www\.)?youtube\.com|(?:www\.)?youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/),d=a.match(/(?:www\.)?youtu\.be\/([a-zA-Z0-9\-_]+)/),e=a.match(/(?:www\.)?vimeo\.com\/([0-9]*)/),f="";return c||d?(d&&(c=d),f=g.parseUri(a,{autoplay:j.settings.autoplayVideos?"1":"0",v:""}),b=''):e?(f=g.parseUri(a,{autoplay:j.settings.autoplayVideos?"1":"0",byline:"0",portrait:"0",color:j.settings.vimeoColor}),b=''):b='','
                                      '+b+"
                                      "},loadMedia:function(a,b){if(0===a.trim().indexOf("#"))b.call(c("
                                      ",{"class":"swipebox-inline-container"}).append(c(a).clone().toggleClass(j.settings.toggleClassOnLoad)));else if(!this.isVideo(a)){var d=c("").on("load",function(){b.call(d)});d.attr("src",a)}},getNext:function(){var a,b=this,d=c("#swipebox-slider .slide").index(c("#swipebox-slider .slide.current"));d+10?(a=c("#swipebox-slider .slide").eq(b).contents().find("iframe").attr("src"),c("#swipebox-slider .slide").eq(b).contents().find("iframe").attr("src",a),b--,this.setSlide(b),this.preloadMedia(b-1),j.settings.prevSlide&&j.settings.prevSlide(b)):(c("#swipebox-overlay").addClass("leftSpring"),setTimeout(function(){c("#swipebox-overlay").removeClass("leftSpring")},500))},nextSlide:function(a){},prevSlide:function(a){},closeSlide:function(){c("html").removeClass("swipebox-html"),c("html").removeClass("swipebox-touch"),c(a).trigger("resize"),this.destroy()},destroy:function(){c(a).unbind("keyup"),c("body").unbind("touchstart"),c("body").unbind("touchmove"),c("body").unbind("touchend"),c("#swipebox-slider").unbind(),c("#swipebox-overlay").remove(),c.isArray(e)||e.removeData("_swipebox"),this.target&&this.target.trigger("swipebox-destroy"),c.swipebox.isOpen=!1,j.settings.afterClose&&j.settings.afterClose()}},j.init()},c.fn.swipebox=function(a){if(!c.data(this,"_swipebox")){var b=new c.swipebox(this,a);this.data("_swipebox",b)}return this.data("_swipebox")}}(window,document,jQuery); \ No newline at end of file diff --git a/addons/cms/assets/js/layerloader.min.js b/addons/cms/assets/js/layerloader.min.js new file mode 100644 index 000000000..2a763d04e --- /dev/null +++ b/addons/cms/assets/js/layerloader.min.js @@ -0,0 +1 @@ +var lazyloader=function(e,t){function n(e){e=e.toLowerCase();var t=e.indexOf("js"),n=e.indexOf("css");return-1==t&&-1==n?!1:t>n?"js":"css"}function s(e){var t=document.createElement("link");t.href=e,t.rel="stylesheet",t.type="text/css",t.onload=c,t.onreadystatechange=function(){("loaded"==this.readyState||"complete"==this.readyState)&&c()},document.getElementsByTagName("head")[0].appendChild(t)}function a(e){try{document.styleSheets[e].cssRules?c():document.styleSheets[e].rules&&document.styleSheets[e].rules.length?c():setTimeout(function(){a(e)},250)}catch(t){setTimeout(function(){a(e)},250)}}function o(e){var t=document.createElement("script");t.type="text/javascript",t.src=e,t.onload=c,document.getElementsByTagName("head")[0].appendChild(t)}function c(){d--,0==d&&t()}var r,d=0,i=document.styleSheets.length-1;for(var l in e){d++;var r=e[l];"css"==n(r)&&(s(r),i++,window.opera||-1!=navigator.userAgent.indexOf("MSIE")||a(i)),"js"==n(r)&&o(r)}}; \ No newline at end of file diff --git a/addons/cms/assets/less/common.less b/addons/cms/assets/less/common.less new file mode 100644 index 000000000..00fad24b1 --- /dev/null +++ b/addons/cms/assets/less/common.less @@ -0,0 +1,1301 @@ +@import (reference) "../../../../public/assets/less/bootstrap-less/mixins.less"; +@import (reference) "../../../../public/assets/less/bootstrap-less/variables.less"; +@import (reference) "../../../../public/assets/less/fastadmin/mixins.less"; +@import (reference) "../../../../public/assets/less/fastadmin/variables.less"; +@import "../../../../public/assets/less/lesshat.less"; +@import url("../../../css/bootstrap.min.css"); +@import url("../../../libs/font-awesome/css/font-awesome.min.css"); + +html, +body { + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 400; + overflow-x: hidden; + overflow-y: auto; + padding-top: 40px; + background: #f4f6f8; + font-size: 14px; + color: #616161; +} + +.wow { + visibility: hidden; +} + +.dropdown:hover > .dropdown-menu { + display: block; + margin-top: 0; +} + +.dropdown-submenu { + position: relative; + > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + .border-radius(3px 0 3px 3px); + } + &:hover { + > .dropdown-menu { + display: block; + } + > a:after { + border-left-color: #fff; + } + } + > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #ccc; + margin-top: 5px; + margin-right: -10px; + } + &.pull-left { + float: none; + > .dropdown-menu { + left: -100%; + margin-left: 10px; + .border-radius(3px 0 3px 3px); + } + } + +} + +.navbar { + border: none; +} + +.navbar-nav { + .form-search { + &.focused { + position: relative; + input { + position: absolute; + top: 0; + right: 0; + width: 250px; + } + } + } +} + +.navbar-nav { + li > a { + font-size: 13px; + h5 { + overflow: hidden; + text-overflow: ellipsis; + } + } + > li > a { + font-size: 14px; + } +} + +@media (max-width: 769px) { + ul.dropdown-menu { + position: relative; + width: 100%; + background: #222; + .open > a, .open > a:hover, .open > a:focus { + background: none; + color: #9d9d9d; + } + > .dropdown-menu { + position: relative; + width: 100%; + margin: 0; + } + .open { + > a, > a:hover, > a:focus { + } + + } + } + + .navbar-nav { + .form-search { + padding: 0 10px; + } + .open .dropdown-menu { + position: relative; + width: 100%; + margin: 0; + left: 0; + } + } + + .dropdown-submenu > a:after { + display: none; + } +} + +.navbar-brand { + padding: 5px 5px; +} + +.toast-top-center { + top: 50px; +} + +#toast-container > div { + .box-shadow(none); +} + +/*修复nice-validator和summernote的编辑框冲突*/ +.nice-validator .note-editor .note-editing-area .note-editable { + display: inherit; +} + +/*预览区域*/ +.plupload-preview { + padding: 10px; + margin-bottom: 0; + li { + margin-bottom: 10px; + } + .thumbnail { + margin-bottom: 10px; + } + a { + display: block; + &:first-child { + height: 90px; + } + img { + height: 80px; + object-fit: cover; + } + } +} + +#floatbtn { + width: 50px; + height: auto; + position: fixed; + top: auto; + right: 50%; + bottom: 10px; + left: auto; + z-index: 80; + margin-right: -620px; + &.fixed { + position: absolute; + bottom: 279px; + right: 50%; + } + a { + position: relative; + z-index: 90; + display: block; + margin-top: 4px; + width: 50px; + height: 50px; + line-height: 50px; + text-align: center; + font-size: 20px; + color: #d5d5d5; + background-color: #fff; + border: 1px solid #eee; + .user-select(none); + &.hover:hover { + .transition(background-color 200ms ease-out); + &:before { + content: ""; + position: absolute; + z-index: 100; + display: block; + width: 100%; + height: 100%; + padding: 10px; + font-size: 14px; + line-height: 15px; + color: #fff; + text-align: center; + background-color: #17bb9c; + -webkit-pointer-events: none; + -moz-pointer-events: none; + pointer-events: none; + } + i { + display: none; + } + &#fb-tipoff:before { + content: "\7206\6599\6295\7a3f"; + font-weight: 400 + } + &#feedback:before { + content: "\53d1\8868\8bc4\8bba" + } + &#back-to-top:before { + content: "\56de\5230\9876\90e8" + } + } + &#fb-qrcode:hover #fb-qrcode-wrapper { + display: block; + } + } + .iconfont { + display: inline-block; + font: normal normal normal 14px/1 iconfont; + font-size: inherit; + } +} + +#fb-qrcode-wrapper { + position: absolute; + right: 59px; + top: -55px; + z-index: 120; + display: none; + width: 190px; + height: 212px; + background-color: #fff; + border: 1px solid #eee; + &:after { + content: ""; + position: absolute; + right: -6px; + top: 73px; + display: block; + width: 0; + height: 0; + border-left: 6px solid #d5d5d5; + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; + } + .qrcode { + margin-top: 20px; + line-height: 1; + img { + width: 128px; + height: 128px; + } + } + p { + font-size: 12px; + line-height: 20px; + color: #999; + em { + color: #dd3067; + } + } +} + +.text-primary, +.text-primary:hover { + color: @brand-primary; +} + +.text-success, +.text-success:hover { + color: @brand-success; +} + +.text-danger, +.text-danger:hover { + color: @brand-danger; +} + +.text-warning, +.text-warning:hover { + color: @brand-warning; +} + +.text-info, +.text-info:hover { + color: @brand-info; +} + +.well { + .box-shadow(none); +} + +.clearfix() { + &:before, + &:after { + content: " "; // 1 + display: table; // 2 + } + &:after { + clear: both; + } +} + +.responsive-container { + position: relative; + width: 100%; + border: 1px solid #f8f8f8; +} + +footer { + padding: 30px 0; +} + +@media (min-width: 979px) { + ul.nav li.dropdown:hover > ul.dropdown-menu { + display: block; + } +} + +.main { + background: #fff; + padding: 15px; + min-height: 500px; + h3 { + margin: 0; + margin-bottom: 10px; + height: 35px; + line-height: 35px; + label { + display: inline-block; + font-size: 14px; + font-weight: 400; + vertical-align: middle; + } + } + > row { + margin-top: 15px; + } + label { + font-weight: 400; + } + .fixed-table-container thead th .th-inner { + font-weight: 500; + } + table a:not(.btn), .table a:not(.btn) { + text-decoration: none; + } +} + +.nav-sidebar { + li.active a { + text-decoration: none; + background-color: #ecf0f1; + } +} + +.navbar-toggle .icon-bar { + width: 18px; +} + +.footer-inner { + padding: 2em 0; + .copyright { + margin-bottom: 20px !important; + line-height: 1.5; + } + .footer-logo { + margin-bottom: 20px; + a { + padding: 15px 15px; + background: rgba(0, 0, 0, .07); + font-size: 40px; + font-weight: 700; + &:hover, &:focus { + text-decoration: none; + } + } + } + h3 { + font-weight: 400; + margin-bottom: 20px; + } + p { + font-weight: 40; + &:last-child { + margin-bottom: 0; + } + } + .links { + padding: 0; + margin: 0 0 20px 0; + li { + list-style: none; + padding: 5px 0; + a { + &:hover { + text-decoration: none; + } + } + } + } + .footer-social { + text-align: right; + margin-top: 0; + a { + margin-right: 15px; + margin-bottom: 10px; + font-size: 20px; + &:hover { + text-decoration: none; + } + } + } + +} + +#footer { + border-top: 1px solid #ddd; + margin-top: 50px; + padding-top: 20px; +} + +.article-section { + background: #fff; + padding: 15px; + margin-bottom: 20px; + .border-radius(2px); + .box-shadow(0 1px 2px 0 rgba(0, 0, 0, 0.1)); +} + +.article-list-main { + .article-item .content { + margin-top: 15px; + color: #919191; + } + .media { + color: #919191; + .media-body { + padding-left: 10px; + line-height: 25px; + } + img { + .border-radius(6px); + width: 220px; + } + } + .article-tag { + display: block; + clear: both; + margin-top: 20px; + padding-top: 15px; + border-top: 1px solid #efefef; + .pull-left { + height: 34px; + line-height: 34px; + color: #919191; + a { + color: #919191; + } + } + } + .pager { + margin: 40px 0 20px 0; + } +} + +@media (max-width: 767px) { + .article-list-main { + .media { + img { + width: 140px; + } + } + } +} + +.article-metas { + overflow: hidden; + margin-bottom: 10px; + .date { + height: 45px; + width: 45px; + margin-top: 10px; + text-align: center; + color: #c1c1c1; + border: 1px solid #c1c1c1; + .border-radius(50%); + .day { + margin-top: 2px; + font-size: 16px; + line-height: 1.2; + } + .month { + font-size: 12px; + } + } + .metas-body { + padding-left: 60px; + p { + margin-bottom: 0; + margin-top: 0px; + font-size: 12px; + } + .title { + margin: 5px 0 0 0; + line-height: 36px; + a { + color: #616161; + .transition(all 0.3s ease); + &:hover { + color: #46c37b; + .transition(all 0.3s ease); + } + } + } + .sns { + color: #e1e1e1; + margin: 0px auto; + span { + margin-right: 10px; + i { + margin-right: 5px; + } + } + } + } +} + +@media (max-width: 1199px) { + .article-metas .metas-body .title { + font-size: 20px; + line-height: 30px; + } +} + +@media (max-width: 767px) { + .article-metas .metas-body .title { + font-size: 16px; + line-height: 20px; + } +} + +.article-text p { + line-height: 30px; + margin: 20px auto 30px auto; +} + +@media (max-width: 767px) { + .article-text p { + margin: 10px auto 20px auto; + } +} + +.article-text img { + margin: 10px auto; + display: block; + max-width: 100%; + height: auto; + .border-radius(2px); +} + +.product-action-btn { + color: #999; + + .bdshare-button-style0-16 .bds_more { + float: none; + padding: 0; + height: inherit; + line-height: inherit; + font-size: inherit; + background: none; + } +} + +.product-like-wrapper { + margin: 15px auto; + text-align: center; + a { + display: inline-block; + width: 44px; + height: 44px; + line-height: 44px; + color: #999; + text-align: center; + background-color: #bebebe; + background-position: center center; + background-repeat: no-repeat; + .transition(background-color 300ms linear); + .border-radius(22px); + vertical-align: middle; + &.product-like { + position: relative; + margin-right: 5px; + background-color: #46c37b; + &:hover { + background-color: #08aa73 + } + } + &.product-dislike { + position: relative; + margin-left: 5px; + &:hover { + background-color: #999 + } + + } + i.fa { + font-size: 20px; + color: #fff; + } + } + .like-bar-wrapper { + position: relative; + display: inline-block; + vertical-align: -18% + } + .bar { + width: 110px; + height: 7px; + overflow: hidden; + background-color: #dcdcdc; + .border-radius(4px); + span { + display: block; + height: 100%; + width: 50%; + background-color: #46c37b; + .transition(width 300ms linear); + } + } + .num { + position: absolute; + top: -18px; + display: block; + width: 100%; + font-style: normal; + font-size: 10px; + color: #999; + text-align: center; + i { + position: absolute; + right: 55%; + color: #46c37b; + font-style: normal; + } + span { + position: absolute; + left: 55% + } + } +} + +.product-like-wrapper.like-status-1 .product-like { + position: relative; + background: #86a4d5; + &::before { + content: "\5df2\8d5e"; + position: absolute; + top: 0; + left: 0; + display: block; + height: 100%; + width: 100%; + font-size: 14px; + line-height: 44px; + color: #fff + } +} + +.product-like-wrapper.like-status-3 .product-dislike { + position: relative; + background: #bebebe; + &::before { + content: "\5df2\8e29"; + position: absolute; + top: 0; + left: 0; + display: block; + height: 100%; + width: 100%; + font-size: 14px; + line-height: 44px; + color: #fff + } +} + +.entry-meta ul { + overflow: hidden; + margin: 0 0 10px 0; + padding: 0 0 10px 0; + border-bottom: 1px solid #dedede; + li { + line-height: 26px; + } +} + +.related-article { + margin-top: 10px; + .row { + margin: 0 -5px; + } + .col-sm-4 { + position: relative; + display: block; + padding: 0 5px; + margin: 5px auto; + } + .related-item { + position: relative; + .border-radius(2px); + overflow: hidden; + img { + width: 100%; + } + } + .title { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 10px 20px; + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + color: #fff; + z-index: 999; + } +} + +.panel-default { + border: none; + padding: 0 15px; + .box-shadow(0 1px 2px 0 rgba(0, 0, 0, 0.1)); +} + +.panel-default { + > .panel-heading { + position: relative; + font-size: 16px; + padding: 15px 0; + background: #fff; + border-bottom: 1px solid #f5f5f5; + .panel-title { + /*color: @gray-dark;*/ + > i { + display: none; + } + } + .more { + position: absolute; + top: 13px; + right: 0; + display: block; + color: #919191; + .transition(all 0.3s ease); + &:hover { + color: #616161; + .transition(all 0.3s ease); + } + } + .panel-bar { + position: absolute; + top: 7px; + right: 0; + display: block; + } + } + > .panel-footer { + padding: 15px 0; + background: none; + } + > .panel-body { + position: relative; + padding: 15px 0; + } +} + +.panel-primary { + > .panel-heading { + background-color: #46c37b; + color: #fff; + } + > .panel-body { + background: #fafafa; + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + } +} + +.panel-gray { + .box-shadow(0 2px 4px rgba(0, 0, 0, 0.08)); + > .panel-heading { + background-color: #f5f5f5; + color: #919191; + } + > .panel-body { + color: #919191; + background: #fff; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + } +} + +.panel-page { + padding: 45px 50px 50px; + min-height: 500px; + .panel-heading { + background: transparent; + border-bottom: none; + margin: 0 0 30px 0; + padding: 0; + h2 { + font-size: 25px; + margin-top: 0; + } + } +} + +@media (max-width: 767px) { + .panel-page { + padding: 15px; + min-height: 300px; + } +} + +.tabs-wrapper { + border: 1px solid #e4ecf3; + .border-radius(4px); + margin-bottom: 30px; + background-color: #fff; + .tabs-mark-group { + border-bottom: 1px dashed #e4ecf3; + padding: 10px; + .title { + width: 90px; + margin-top: 3px; + float: left + } + .classify { + margin-top: 3px; + a, i { + color: #919191 + } + a:focus, a:hover { + color: #43bc60 + } + } + .content { + margin-left: 100px + } + + } + .tabs-mark { + margin: 0 4px; + a { + border: 1px solid #e4ecf3; + padding: 2px 5px; + color: #919191 + } + i { + font-size: 10px; + margin-left: 5px + } + &.active a, &:focus a, &:hover a { + color: #43bc60; + border: 1px solid #43bc60 + } + } + .tabs-group { + padding: 0 60px 0 15px; + position: relative; + overflow-y: hidden; + .title { + float: left; + padding: 15px 0; + width: 100px; + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: normal + } + .content { + list-style: none; + padding: 0; + margin: 0 0 0 100px; + > li { + float: left; + padding: 10px 12px; + > a { + display: block; + padding: 5px 10px; + border: none; + .border-radius(4px); + color: #919191; + .transition(all .3s ease); + } + &.active > a, &:focus > a, &:hover > a { + color: #43bc60 + } + } + } + .tabs-toggle { + position: absolute; + right: 20px; + top: 18px; + font-size: 12px; + line-height: 1; + cursor: pointer + } + + .tabs-group { + border-top: 1px dashed #e4ecf3 + } + } +} + +.article-filter { + position: relative; + background-color: #fafafa; + .border-radius(4px); + margin-bottom: 30px; + .nav-sort > li { + float: left; + > a { + height: 40px; + padding: 10px 15px; + color: #616161; + .transition(all .3s ease); + &:hover { + color: #43bc60; + .transition(all .3s ease); + } + &.active { + color: #fff; + background-color: #43bc60; + &:hover { + color: #fff + } + } + } + } + .btn-group.open .dropdown-toggle { + .box-shadow(none); + color: #43bc60 + } + .filter { + position: absolute; + text-align: right; + top: 0; + right: 15px; + width: 300px; + .btn { + background: none; + padding: 10px 0; + .transition(all .3s ease); + &:hover { + color: #43bc60; + .transition(all .3s ease); + } + > i { + font-size: 18px + } + } + label { + margin-left: 15px; + margin-top: 11px; + vertical-align: top; + .transition(all .3s ease); + &:hover { + color: #43bc60; + .transition(all .3s ease); + } + } + } +} + +h1 .breadcrumb { + padding: 0 5px; + margin-bottom: 5px; + li { + font-size: 12px; + font-weight: 400; + } +} + +#carousel-focus-captions { + .item { + .carousel-img { + background-size: cover; + width: 100%; + height: 120px; + background-position: center center; + } + } + .carousel-control { + &.left, &.right { + background-image: none; + span { + display: none; + } + &:hover { + .transition(all 1s ease); + span { + display: block; + } + } + } + } +} + +@media (max-width: @screen-sm-min) { + +} + +/* Extra small devices (phones, less than 768px) */ +/* No media query since this is the default in Bootstrap */ + +/* Small devices (tablets, 768px and up) */ +@media (min-width: @screen-sm-min) { + #carousel-focus-captions .item { + .carousel-img { + height: 340px; + width: 100%; + } + } +} + +/* Medium devices (desktops, 992px and up) */ +@media (min-width: @screen-md-min) { + +} + +.article-sidebar .panel-adimg img { + width: 100%; +} + +.hot-tags { + .panel-body a { + span { + margin-bottom: 10px; + } + } +} + +.product-list { + .product { + position: relative; + margin-bottom: 20px; + .detail { + position: absolute; + z-index: 1; + height: 30px; + right: 15px; + bottom: 12px; + padding: 0 15px; + line-height: 30px; + text-align: center; + text-transform: capitalize; + letter-spacing: 0.02em; + font-size: 14px; + color: #00b22d; + border-radius: 2px; + background: whitesmoke; + + &:hover { + background: #eee; + text-decoration: none; + } + } + } +} + +@media (min-width: 769px) { + .product-list .product:hover .detail { + display: block + } +} + +.card { + border-radius: 4px; + position: relative; + padding: 12px; + margin: 0 auto 50px; + .box-shadow(0 1px 3px rgba(0, 0, 0, .2)); + .transition(all 200ms cubic-bezier(0.55, 0.055, 0.675, 0.19)); + min-height: 325px; + background-color: #FFF; + &:hover { + .box-shadow(0 2px 8px rgba(0, 0, 0, 0.2)); + } + .image { + position: relative; + width: 100%; + height: 1px; + overflow: hidden; + padding-bottom: 75%; + background-repeat: no-repeat; + background-size: cover; + background-position: center center; + } + .title { + padding-top: 10px + } + h2 { + color: #000; + padding: 0; + margin-bottom: 5px; + margin-top: 10px; + font-size: 16px; + font-weight: 700; + line-height: 1.4; + text-transform: uppercase; + text-align: left; + } +} + +#content-container > h1 { + margin-top: 0; +} + +.lasest-update { + .panel-body { + padding: 8px 0; + ul { + margin-bottom: 0; + } + ul li { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + position: relative; + height: 35px; + line-height: 35px; + } + } +} + +.channel-list { + .row { + .col-xs-6 { + min-height: 315px; + h3 { + border-bottom: 2px solid #eee; + padding-bottom: 10px; + position: relative; + > a { + font-size: 16px; + border-bottom: 2px solid #17bb9c; + padding-bottom: 10px; + } + em { + position: absolute; + right: 5px; + top: 5px; + font-style: normal; + font-weight: 400; + a { + font-size: 12px; + } + } + } + } + .media { + margin-bottom: 10px; + .media-body { + font-size: 12px; + } + } + ul li { + border-bottom: 1px solid #eee; + margin-bottom: 5px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + position: relative; + padding-right: 40px; + height: 30px; + line-height: 30px; + a { + color: #616161; + } + span { + position: absolute; + right: 0; + } + } + } +} + +#comment-container { + #commentlist { + dl { + position: relative; + border-bottom: 1px solid #eee; + clear: both; + padding: 10px 0; + margin-bottom: 5px; + dt { + float: left; + margin-right: 10px; + width: 54px; + height: 54px; + display: block; + position: absolute; + img { + width: 50px; + height: 50px; + border-radius: 50%; + } + } + dd { + padding-left: 60px; + float: left; + width: 100%; + small { + display: block; + color: #999; + margin: -2px 0; + height: 20px; + line-height: 20px; + font-size: 10px; + a { + display: none; + } + } + dl { + margin: 0px; + border-top: 1px solid #eee; + border-bottom: none; + padding-top: 15px; + padding-bottom: 0; + + dd { + width: 550px; + } + } + p { + margin-bottom: 10px; + } + } + } + cite { + font-style: normal; + } + } + h3 { + position: relative; + font-size: 16px; + padding: 15px 0; + background: #fff; + border-bottom: 1px solid #f5f5f5; + font-weight: 400; + a { + display: none; + } + } + #postcomment { + .form-group { + margin-bottom: 10px; + } + label { + font-weight: normal; + } + a { + small { + display: inline !important; + } + } + } + +} \ No newline at end of file diff --git a/addons/cms/config.php b/addons/cms/config.php new file mode 100644 index 000000000..52ea2baf4 --- /dev/null +++ b/addons/cms/config.php @@ -0,0 +1,180 @@ + + array( + 'name' => 'sitename', + 'title' => '站点名称', + 'type' => 'string', + 'content' => + array(), + 'value' => '我的CMS网站', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 1 => + array( + 'name' => 'theme', + 'title' => '皮肤', + 'type' => 'string', + 'content' => + array(), + 'value' => 'default', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 2 => + array( + 'name' => 'qrcode', + 'title' => '公众号二维码', + 'type' => 'image', + 'content' => + array(), + 'value' => '/assets/addons/cms/img/qrcode.png', + 'rule' => '', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 3 => + array( + 'name' => 'default_archives_img', + 'title' => '文档默认图片', + 'type' => 'image', + 'content' => + array(), + 'value' => '/assets/addons/cms/img/noimage.jpg', + 'rule' => '', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 4 => + array( + 'name' => 'default_channel_img', + 'title' => '栏目默认图片', + 'type' => 'image', + 'content' => + array(), + 'value' => '/assets/addons/cms/img/noimage.jpg', + 'rule' => '', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 5 => + array( + 'name' => 'default_block_img', + 'title' => '区块默认图片', + 'type' => 'image', + 'content' => + array(), + 'value' => '/assets/addons/cms/img/noimage.jpg', + 'rule' => '', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 6 => + array( + 'name' => 'default_page_img', + 'title' => '单页默认图片', + 'type' => 'image', + 'content' => + array(), + 'value' => '/assets/addons/cms/img/noimage.jpg', + 'rule' => '', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 7 => + array( + 'name' => 'domain', + 'title' => '绑定二级域名前缀', + 'type' => 'string', + 'content' => + array(), + 'value' => '', + 'rule' => '', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 8 => + array( + 'name' => 'rewrite', + 'title' => '伪静态', + 'type' => 'array', + 'content' => + array(), + 'value' => + array( + 'index/index' => '/cms$', + 'channel/index' => '/cms/c/[:diyname]', + 'tags/index' => '/cms/t/[:name]', + 'archives/index' => '/cms/a/[:diyname]', + 'page/index' => '/cms/p/[:diyname]', + 'search/index' => '/cms/s', + ), + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 9 => + array( + 'name' => 'wxappid', + 'title' => '小程序AppID', + 'type' => 'string', + 'content' => + array(), + 'value' => '小程序appid', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 10 => + array( + 'name' => 'wxappsecret', + 'title' => '小程序AppSecret', + 'type' => 'string', + 'content' => + array(), + 'value' => '小程序secret', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 11 => + array( + 'name' => 'apikey', + 'title' => 'ApiKey', + 'type' => 'string', + 'content' => + array(), + 'value' => '', + 'rule' => '', + 'msg' => '', + 'tip' => '用于调用API接口时写入数据权限控制
                                      可以为空', + 'ok' => '', + 'extend' => '', + ), +); diff --git a/addons/cms/controller/Api.php b/addons/cms/controller/Api.php new file mode 100644 index 000000000..3beebbbe6 --- /dev/null +++ b/addons/cms/controller/Api.php @@ -0,0 +1,58 @@ +request->request('apikey'); + $config = get_addon_config('cms'); + if (!$config['apikey']) { + $this->error('请先在后台配置API密钥'); + } + if ($config['apikey'] != $apikey) { + $this->error('密钥不正确'); + } + $channel_id = $this->request->request('channel_id'); + $data = $this->request->request(); + $channel = \addons\cms\model\Channel::get($channel_id); + if (!$channel) { + $this->error('栏目未找到'); + } + $model = Modelx::get($channel['model_id']); + if (!$model) { + $this->error('模型未找到'); + } + $data['model_id'] = $model['id']; + $data['content'] = !isset($data['content']) ? '' : $data['content']; + Db::startTrans(); + try { + (new \app\admin\model\Archives)->allowField(true)->save($data); + Db::commit(); + } catch (PDOException $e) { + Db::rollback(); + $this->error($e->getMessage()); + } catch (Exception $e) { + Db::rollback(); + $this->error($e->getMessage()); + } + $this->success('新增成功'); + return; + } + +} diff --git a/addons/cms/controller/Archives.php b/addons/cms/controller/Archives.php new file mode 100644 index 000000000..6a730d8f3 --- /dev/null +++ b/addons/cms/controller/Archives.php @@ -0,0 +1,84 @@ +request->post("action"); + if ($action && $this->request->isPost()) { + return $this->$action(); + } + $diyname = $this->request->param('diyname'); + if ($diyname && !is_numeric($diyname)) { + $archives = ArchivesModel::getByDiyname($diyname); + } else { + $id = $diyname ? $diyname : $this->request->get('id', ''); + $archives = ArchivesModel::get($id); + } + if (!$archives || $archives['status'] == 'hidden' || $archives['deletetime']) { + $this->error(__('No specified article found')); + } + $channel = Channel::get($archives['channel_id']); + if (!$channel) { + $this->error(__('No specified channel found')); + } + $model = Modelx::get($channel['model_id'], [], true); + if (!$model) { + $this->error(__('No specified model found')); + } + $addon = db($model['table'])->where('id', $archives['id'])->find(); + if ($addon) { + if ($model->fields) { + $fieldsContentList = $model->getFieldsContentList($model->id); + //附加列表字段 + array_walk($fieldsContentList, function ($content, $field) use (&$addon) { + $addon[$field . '_text'] = isset($content[$addon[$field]]) ? $content[$addon[$field]] : $addon[$field]; + }); + } + $archives->setData($addon); + } else { + $this->error('No specified addon article found'); + } + $archives->setInc("views", 1); + $this->view->assign("__ARCHIVES__", $archives); + $this->view->assign("__CHANNEL__", $channel); + Config::set('cms.title', $archives['title']); + Config::set('cms.keywords', $archives['keywords']); + Config::set('cms.description', $archives['description']); + $template = preg_replace('/\.html$/', '', $channel['showtpl']); + return $this->view->fetch('/' . $template); + } + + /** + * 赞与踩 + */ + public function vote() + { + $id = (int)$this->request->post("id"); + $type = trim($this->request->post("type", "")); + if (!$id || !$type) { + $this->error(__('Operation failed')); + } + $archives = ArchivesModel::get($id); + if (!$archives || $archives['status'] == 'hidden') { + $this->error(__('No specified article found')); + } + $archives->where('id', $id)->setInc($type === 'like' ? 'likes' : 'dislikes', 1); + $archives = ArchivesModel::get($id); + $this->success(__('Operation completed'), null, ['likes' => $archives->likes, 'dislikes' => $archives->dislikes, 'likeratio' => $archives->likeratio]); + } + +} diff --git a/addons/cms/controller/Base.php b/addons/cms/controller/Base.php new file mode 100644 index 000000000..5d375aec1 --- /dev/null +++ b/addons/cms/controller/Base.php @@ -0,0 +1,36 @@ +view->engine->config('view_path', $this->view->engine->config('view_path') . $config['theme'] . DS); + // 加载自定义标签库 + $this->view->engine->config('taglib_pre_load', 'addons\cms\taglib\Cms'); + // 默认渲染栏目为空 + $this->view->assign('__CHANNEL__', null); + // 定义CMS首页的URL + $config['indexurl'] = addon_url('cms/index/index', [], false); + \think\Config::set('cms', $config); + } + + public function _initialize() + { + parent::_initialize(); + // 如果请求参数action的值为一个方法名,则直接调用 + $action = $this->request->post("action"); + if ($action && $this->request->isPost()) { + return $this->$action(); + } + } + +} diff --git a/addons/cms/controller/Channel.php b/addons/cms/controller/Channel.php new file mode 100644 index 000000000..0d7e818c1 --- /dev/null +++ b/addons/cms/controller/Channel.php @@ -0,0 +1,116 @@ +request->param('diyname'); + + if ($diyname && !is_numeric($diyname)) { + $channel = ChannelModel::getByDiyname($diyname); + } else { + $id = $diyname ? $diyname : $this->request->get('id', ''); + $channel = ChannelModel::get($id); + } + if (!$channel) { + $this->error(__('No specified channel found')); + } + + $filterlist = []; + $orderlist = []; + + $filter = $this->request->get('filter/a', []); + $orderby = $this->request->get('orderby', ''); + $orderway = $this->request->get('orderway', '', 'strtolower'); + $params = ['filter' => '', 'id' => $channel->id, 'diyname' => $channel->diyname]; + if ($filter) + $params['filter'] = $filter; + if ($orderby) + $params['orderby'] = $orderby; + if ($orderway) + $params['orderway'] = $orderway; + if ($channel['type'] === 'link') { + $this->redirect($channel['outlink']); + } + + $model = Modelx::get($channel['model_id']); + if (!$model) { + $this->error(__('No specified model found')); + } + $fields = []; + foreach ($model->fields_list as $k => $v) { + if (!$v['isfilter'] || !in_array($v['type'], ['select', 'selects', 'checkbox', 'radio', 'array']) || !$v['content_list']) + continue; + $fields[] = [ + 'name' => $v['name'], 'title' => $v['title'], 'content' => $v['content_list'] + ]; + } + $filter = array_intersect_key($filter, array_flip(array_column($fields, 'name'))); + foreach ($fields as $k => $v) { + $content = []; + $all = ['' => __('All')] + $v['content']; + foreach ($all as $m => $n) { + $active = ($m === '' && !isset($filter[$v['name']])) || (isset($filter[$v['name']]) && $filter[$v['name']] == $m) ? TRUE : FALSE; + $prepare = $m === '' ? array_diff_key($filter, [$v['name'] => $m]) : array_merge($filter, [$v['name'] => $m]); + $url = '?' . http_build_query(array_merge(['filter' => $prepare], array_diff_key($params, ['filter' => '']))); + $content[] = ['value' => $m, 'title' => $n, 'active' => $active, 'url' => $url]; + } + $filterlist[] = [ + 'name' => $v['name'], + 'title' => $v['title'], + 'content' => $content, + ]; + } + + $sortrank = [ + ['name' => 'default', 'field' => 'weigh', 'title' => __('Default')], + ['name' => 'views', 'field' => 'views', 'title' => __('Views')], + ['name' => 'id', 'field' => 'id', 'title' => __('Post date')], + ]; + + $orderby = $orderby && in_array($orderby, ['default', 'id', 'views']) ? $orderby : 'default'; + $orderway = $orderway ? $orderway : 'desc'; + foreach ($sortrank as $k => $v) { + $url = '?' . http_build_query(array_merge($params, ['orderby' => $v['name'], 'orderway' => ($orderway == 'desc' ? 'asc' : 'desc')])); + $v['active'] = $orderby == $v['name'] ? true : false; + $v['orderby'] = $orderway; + $v['url'] = $url; + $orderlist[] = $v; + } + $orderby = $orderby == 'default' ? 'weigh' : $orderby; + $pagelist = Archives::alias('a') + ->where('status', 'normal') + ->where('deletetime', 'exp', \think\Db::raw('IS NULL')) + ->where($filter) + ->join($model['table'] . ' n', 'a.id=n.id', 'LEFT') + ->field('a.*') + ->field('id,content', true, config('database.prefix') . $model['table'], 'n') + ->where('channel_id', $channel['id']) + ->order($orderby, $orderway) + ->paginate($channel['pagesize'], false, ['type' => '\\addons\\cms\\library\\Bootstrap']); + $pagelist->appends($params); + $this->view->assign("__FILTERLIST__", $filterlist); + $this->view->assign("__ORDERLIST__", $orderlist); + $this->view->assign("__PAGELIST__", $pagelist); + $this->view->assign("__CHANNEL__", $channel); + Config::set('cms.title', $channel['name']); + Config::set('cms.keywords', $channel['keywords']); + Config::set('cms.description', $channel['description']); + $template = preg_replace('/\.html$/', '', $channel["{$channel['type']}tpl"]); + return $this->view->fetch('/' . $template); + } + +} diff --git a/addons/cms/controller/Comment.php b/addons/cms/controller/Comment.php new file mode 100644 index 000000000..d8e6f2125 --- /dev/null +++ b/addons/cms/controller/Comment.php @@ -0,0 +1,60 @@ +request->post(); + CommentModel::postComment($params); + } catch (Exception $e) { + $this->error($e->getMessage(), null, ['token' => $this->request->token()]); + } + $this->success(__('评论成功'), null, ['token' => $this->request->token()]); + } + + /** + * 取消评论订阅 + */ + public function unsubscribe() + { + $id = (int)$this->request->param('id'); + $key = $this->request->param('key'); + $comment = CommentModel::get($id); + if (!$comment) { + $this->error("评论未找到"); + } + if ($key !== md5($comment['id'] . $comment['email'])) { + $this->error("无法进行该操作"); + } + if (!$comment['subscribe']) { + $this->error("评论已经取消订阅,请勿重复操作"); + } + $comment->subscribe = 0; + $comment->save(); + $this->success('取消评论订阅成功'); + } + +} diff --git a/addons/cms/controller/Index.php b/addons/cms/controller/Index.php new file mode 100644 index 000000000..e41feaa7e --- /dev/null +++ b/addons/cms/controller/Index.php @@ -0,0 +1,24 @@ +view->fetch('/index'); + } + +} diff --git a/addons/cms/controller/Page.php b/addons/cms/controller/Page.php new file mode 100644 index 000000000..12d77bab8 --- /dev/null +++ b/addons/cms/controller/Page.php @@ -0,0 +1,36 @@ +request->param('diyname'); + if ($diyname && !is_numeric($diyname)) { + $page = PageModel::getByDiyname($diyname); + } else { + $id = $diyname ? $diyname : $this->request->get('id', ''); + $page = PageModel::get($id); + } + if (!$page || $page['status'] == 'hidden') { + $this->error(__('No specified page found')); + } + $this->view->assign("__PAGE__", $page); + Config::set('cms.title', $page['title']); + Config::set('cms.keywords', $page['keywords']); + Config::set('cms.description', $page['description']); + $template = preg_replace("/\.html$/i", "", $page['showtpl'] ? $page['showtpl'] : 'page'); + return $this->view->fetch('/' . $template); + } + +} diff --git a/addons/cms/controller/Search.php b/addons/cms/controller/Search.php new file mode 100644 index 000000000..e5639d35e --- /dev/null +++ b/addons/cms/controller/Search.php @@ -0,0 +1,75 @@ +request->request("search"); + + $filterlist = []; + $orderlist = []; + + $orderby = $this->request->get('orderby', ''); + $orderway = $this->request->get('orderway', '', 'strtolower'); + $params = ['search' => $search]; + if ($orderby) + $params['orderby'] = $orderby; + if ($orderway) + $params['orderway'] = $orderway; + + $sortrank = [ + ['name' => 'default', 'field' => 'weigh', 'title' => __('Default')], + ['name' => 'views', 'field' => 'views', 'title' => __('Views')], + ['name' => 'id', 'field' => 'id', 'title' => __('Post date')], + ]; + + $orderby = $orderby && in_array($orderby, ['default', 'id', 'views']) ? $orderby : 'default'; + $orderway = $orderway ? $orderway : 'desc'; + foreach ($sortrank as $k => $v) { + $url = '?' . http_build_query(array_merge($params, ['orderby' => $v['name'], 'orderway' => ($orderway == 'desc' ? 'asc' : 'desc')])); + $v['active'] = $orderby == $v['name'] ? true : false; + $v['orderby'] = $orderway; + $v['url'] = $url; + $orderlist[] = $v; + } + $orderby = $orderby == 'default' ? 'weigh' : $orderby; + + $pagelist = Archives + ::where('status', 'normal') + ->where('title', 'like', "%{$search}%") + ->order($orderby, $orderway) + ->paginate(10, false, ['type' => '\\addons\\cms\\library\\Bootstrap']); + $pagelist->appends($params); + $this->view->assign("__FILTERLIST__", $filterlist); + $this->view->assign("__ORDERLIST__", $orderlist); + $this->view->assign("__PAGELIST__", $pagelist); + \think\Config::set('cms.title', __("Search for %s", $search)); + return $this->view->fetch('/search'); + } + + public function typeahead() + { + $search = $this->request->post("search"); + $list = Archives + ::where('status', 'normal') + ->where('title', 'like', "%{$search}%") + ->order('id', 'desc') + ->field('id,title,diyname,channel_id,likes,dislikes,tags,createtime') + ->limit(10) + ->select(); + $result = collection($list)->toArray(); + $result[] = ['id' => 0, 'title' => __('Search more %s', $search), 'url' => addon_url("cms/search/index", [':search' => $search, 'search' => $search])]; + return json($result); + } + +} diff --git a/addons/cms/controller/Tags.php b/addons/cms/controller/Tags.php new file mode 100644 index 000000000..8f1186a91 --- /dev/null +++ b/addons/cms/controller/Tags.php @@ -0,0 +1,69 @@ +request->param('name'); + + if ($name) { + $tags = TagsModel::getByName($name); + } + if (!$tags) { + $this->error(__('No specified tags found')); + } + + $filterlist = []; + $orderlist = []; + + $orderby = $this->request->get('orderby', ''); + $orderway = $this->request->get('orderway', '', 'strtolower'); + $params = []; + if ($orderby) + $params['orderby'] = $orderby; + if ($orderway) + $params['orderway'] = $orderway; + if ($tags) { + $sortrank = [ + ['name' => 'default', 'field' => 'weigh', 'title' => __('Default')], + ['name' => 'views', 'field' => 'views', 'title' => __('Views')], + ['name' => 'id', 'field' => 'id', 'title' => __('Post date')], + ]; + + $orderby = $orderby && in_array($orderby, ['default', 'id', 'views']) ? $orderby : 'default'; + $orderway = $orderway ? $orderway : 'desc'; + foreach ($sortrank as $k => $v) { + $url = '?' . http_build_query(array_merge($params, ['orderby' => $v['name'], 'orderway' => ($orderway == 'desc' ? 'asc' : 'desc')])); + $v['active'] = $orderby == $v['name'] ? true : false; + $v['orderby'] = $orderway; + $v['url'] = $url; + $orderlist[] = $v; + } + $orderby = $orderby == 'default' ? 'weigh' : $orderby; + } + $pagelist = Archives + ::where('status', 'normal') + ->where('id', 'in', explode(',', $tags['archives'])) + ->order($orderby, $orderway) + ->paginate(10, false, ['type' => '\\addons\\cms\\library\\Bootstrap']); + $pagelist->appends($params); + $this->view->assign("__FILTERLIST__", $filterlist); + $this->view->assign("__ORDERLIST__", $orderlist); + $this->view->assign("__TAGS__", $tags); + $this->view->assign("__PAGELIST__", $pagelist); + \think\Config::set('cms.title', $tags['name']); + return $this->view->fetch('/tags'); + } + +} diff --git a/addons/cms/controller/wxapp/Archives.php b/addons/cms/controller/wxapp/Archives.php new file mode 100644 index 000000000..570fbeb3e --- /dev/null +++ b/addons/cms/controller/wxapp/Archives.php @@ -0,0 +1,110 @@ +request->request('model'); + $channel = (int)$this->request->request('channel'); + $page = (int)$this->request->request('page'); + + if ($model) { + $params['model'] = $model; + } + if ($channel) { + $params['channel'] = $channel; + } + $page = max(1, $page); + $params['limit'] = ($page - 1) * 10 . ',10'; + + $list = ArchivesModel::getArchivesList($params); + $this->success('', ['archivesList' => $list]); + } + + public function detail() + { + $action = $this->request->post("action"); + if ($action && $this->request->isPost()) { + return $this->$action(); + } + $diyname = $this->request->param('diyname'); + if ($diyname && !is_numeric($diyname)) { + $archives = ArchivesModel::getByDiyname($diyname); + } else { + $id = $diyname ? $diyname : $this->request->request('id', ''); + $archives = ArchivesModel::get($id); + } + if (!$archives || $archives['status'] == 'hidden' || $archives['deletetime']) { + $this->error(__('No specified article found')); + } + $channel = Channel::get($archives['channel_id']); + if (!$channel) { + $this->error(__('No specified channel found')); + } + $model = Modelx::get($channel['model_id']); + if (!$model) { + $this->error(__('No specified model found')); + } + $archives->setInc("views", 1); + $addon = db($model['table'])->where('id', $archives['id'])->find(); + if ($addon) { + if ($model->fields) { + $fieldsContentList = $model->getFieldsContentList($model->id); + //附加列表字段 + array_walk($fieldsContentList, function ($content, $field) use (&$addon) { + $addon[$field . '_text'] = isset($content[$addon[$field]]) ? $content[$addon[$field]] : $addon[$field]; + }); + } + $archives->setData($addon); + } else { + $this->error(__('No specified article addon found')); + } + $archives = array_merge($archives->toArray(), $addon); + + $commentList = Comment::getCommentList(['aid' => $archives['id']]); + + $this->success('', ['archivesInfo' => $archives, 'channelInfo' => $channel, 'commentList' => $commentList->getCollection()]); + } + + /** + * 赞与踩 + */ + public function vote() + { + $id = (int)$this->request->post("id"); + $type = trim($this->request->post("type", "")); + if (!$id || !$type) { + $this->error(__('Operation failed')); + } + $archives = ArchivesModel::get($id); + if (!$archives || $archives['status'] == 'hidden') { + $this->error(__('No specified article found')); + } + $archives->where('id', $id)->setInc($type === 'like' ? 'likes' : 'dislikes', 1); + $archives = ArchivesModel::get($id); + $this->success(__('Operation completed'), ['likes' => $archives->likes, 'dislikes' => $archives->dislikes, 'likeratio' => $archives->likeratio]); + } + +} diff --git a/addons/cms/controller/wxapp/Base.php b/addons/cms/controller/wxapp/Base.php new file mode 100644 index 000000000..64ab1bbe3 --- /dev/null +++ b/addons/cms/controller/wxapp/Base.php @@ -0,0 +1,29 @@ +setAllowFields($this->allowFields); + + //这里手动载入语言包 + Lang::load(ROOT_PATH . '/addons/cms/lang/zh-cn.php'); + Lang::load(APP_PATH . '/index/lang/zh-cn/user.php'); + } + + +} diff --git a/addons/cms/controller/wxapp/Comment.php b/addons/cms/controller/wxapp/Comment.php new file mode 100644 index 000000000..ce1e36535 --- /dev/null +++ b/addons/cms/controller/wxapp/Comment.php @@ -0,0 +1,47 @@ +request->request('aid'); + $page = (int)$this->request->request('page'); + Config::set('paginate.page', $page); + $commentList = \addons\cms\model\Comment::getCommentList(['aid' => $aid]); + $this->success('', ['commentList' => $commentList->getCollection()]); + } + + /** + * 发表评论 + */ + public function post() + { + try { + $params = $this->request->post(); + \addons\cms\model\Comment::postComment($params); + } catch (Exception $e) { + $this->error($e->getMessage(), null, ['token' => $this->request->token()]); + } + $this->success(__('评论成功')); + } + +} diff --git a/addons/cms/controller/wxapp/Common.php b/addons/cms/controller/wxapp/Common.php new file mode 100644 index 000000000..24692dab1 --- /dev/null +++ b/addons/cms/controller/wxapp/Common.php @@ -0,0 +1,73 @@ + 'focus', 'row' => 5]); + foreach ($list as $index => $item) { + $bannerList[] = ['image' => cdnurl($item['image'], true), 'url' => '/', 'title' => $item['title']]; + } + + //首页Tab列表 + $indexTabList = $newsTabList = $productTabList = [['id' => 0, 'title' => '全部']]; + $channelList = Channel::where('status', 'normal') + ->where('type', 'in', ['list']) + ->field('id,parent_id,model_id,name,diyname') + ->order('weigh desc,id desc') + ->select(); + foreach ($channelList as $index => $item) { + $data = ['id' => $item['id'], 'title' => $item['name']]; + $indexTabList[] = $data; + if ($item['model_id'] == 1) { + $newsTabList[] = $data; + } + if ($item['model_id'] == 2) { + $productTabList[] = $data; + } + } + + //配置信息 + $upload = Config::get('upload'); + $upload['cdnurl'] = $upload['cdnurl'] ? $upload['cdnurl'] : cdnurl('', true); + $upload['uploadurl'] = $upload['uploadurl'] == 'ajax/upload' ? cdnurl('/ajax/upload', true) : $upload['cdnurl']; + $config = [ + 'upload' => $upload + ]; + + $data = [ + 'bannerList' => $bannerList, + 'indexTabList' => $indexTabList, + 'newsTabList' => $newsTabList, + 'productTabList' => $productTabList, + 'config' => $config + ]; + $this->success('', $data); + + } + + +} diff --git a/addons/cms/controller/wxapp/Index.php b/addons/cms/controller/wxapp/Index.php new file mode 100644 index 000000000..affc5d622 --- /dev/null +++ b/addons/cms/controller/wxapp/Index.php @@ -0,0 +1,57 @@ + 'focus', 'row' => 5]); + foreach ($list as $index => $item) { + $bannerList[] = ['image' => cdnurl($item['image'], true), 'url' => '/', 'title' => $item['title']]; + } + + $tabList = [ + ['id' => 0, 'title' => '全部'], + ]; + $channelList = Channel::where('status', 'normal') + ->where('type', 'in', ['list']) + ->field('id,parent_id,name,diyname') + ->order('weigh desc,id desc') + ->cache(false) + ->select(); + foreach ($channelList as $index => $item) { + $tabList[] = ['id' => $item['id'], 'title' => $item['name']]; + } + $archivesList = Archives::getArchivesList([]); + $data = [ + 'bannerList' => $bannerList, + 'tabList' => $tabList, + 'archivesList' => $archivesList, + ]; + $this->success('', $data); + + } + + +} diff --git a/addons/cms/controller/wxapp/My.php b/addons/cms/controller/wxapp/My.php new file mode 100644 index 000000000..161a5af6d --- /dev/null +++ b/addons/cms/controller/wxapp/My.php @@ -0,0 +1,51 @@ +request->request('page'); + $commentList = Comment:: + with('archives') + ->where(['user_id' => $this->auth->id]) + ->order('id desc') + ->page($page, 10) + ->select(); + foreach ($commentList as $index => $item) { + $item->create_date = human_date($item->createtime); + } + + $this->success('', ['commentList' => $commentList]); + } + + /** + * 关于我们 + */ + public function aboutus() + { + $pageInfo = Page::getByDiyname('aboutus'); + if (!$pageInfo || $pageInfo['status'] == 'hidden') { + $this->error(__('单页未找到')); + } + $this->success('', ['pageInfo' => $pageInfo]); + } +} diff --git a/addons/cms/controller/wxapp/User.php b/addons/cms/controller/wxapp/User.php new file mode 100644 index 000000000..f03640fa0 --- /dev/null +++ b/addons/cms/controller/wxapp/User.php @@ -0,0 +1,203 @@ +token = $this->request->post('token'); + if ($this->request->action() == 'login' && $this->token) { + $this->request->post(['token' => '']); + } + parent::_initialize(); + + if (!Config::get('fastadmin.usercenter')) { + $this->error(__('User center already closed')); + } + + $ucenter = get_addon_info('ucenter'); + if ($ucenter && $ucenter['state']) { + include ADDON_PATH . 'ucenter' . DS . 'uc.php'; + } + + } + + /** + * 登录 + */ + public function login() + { + $config = get_addon_config('cms'); + $code = $this->request->post("code"); + $rawData = $this->request->post("rawData"); + if (!$code || !$rawData) { + $this->error("参数不正确"); + } + $userInfo = (array)json_decode($rawData, true); + + $params = [ + 'appid' => $config['wxappid'], + 'secret' => $config['wxappsecret'], + 'js_code' => $code, + 'grant_type' => 'authorization_code' + ]; + $result = Http::sendRequest("https://api.weixin.qq.com/sns/jscode2session", $params, 'GET'); + if ($result['ret']) { + $json = (array)json_decode($result['msg'], true); + if (isset($json['openid'])) { + //如果有传Token + if ($this->token) { + $this->auth->init($this->token); + //检测是否登录 + if ($this->auth->isLogin()) { + $third = Third::where(['openid' => $json['openid'], 'platform' => 'wxapp'])->find(); + if ($third && $third['user_id'] == $this->auth->id) { + $this->success("登录成功", ['userInfo' => $this->auth->getUserinfo()]); + } + } + } + + $platform = 'wxapp'; + $result = [ + 'openid' => $json['openid'], + 'userinfo' => [ + 'nickname' => $userInfo['nickName'], + ], + 'access_token' => $json['session_key'], + 'refresh_token' => '', + 'expires_in' => isset($json['expires_in']) ? $json['expires_in'] : 0, + ]; + $extend = ['gender' => $userInfo['gender'], 'nickname' => $userInfo['nickName'], 'avatar' => $userInfo['avatarUrl']]; + $ret = Service::connect($platform, $result, $extend); + if ($ret) { + $auth = Auth::instance(); + $this->success("登录成功", ['userInfo' => $auth->getUserinfo()]); + } else { + $this->error("连接失败"); + } + } else { + $this->error("登录失败"); + } + } + + return; + } + + /** + * 绑定账号 + */ + public function bind() + { + $account = $this->request->post("account"); + $password = $this->request->post("password"); + if (!$account || !$password) { + $this->error("参数不正确"); + } + + $account = $this->request->post('account'); + $password = $this->request->post('password'); + $rule = [ + 'account' => 'require|length:3,50', + 'password' => 'require|length:6,30', + ]; + + $msg = [ + 'account.require' => 'Account can not be empty', + 'account.length' => 'Account must be 3 to 50 characters', + 'password.require' => 'Password can not be empty', + 'password.length' => 'Password must be 6 to 30 characters', + ]; + $data = [ + 'account' => $account, + 'password' => $password, + ]; + $validate = new Validate($rule, $msg); + $result = $validate->check($data); + if (!$result) { + $this->error(__($validate->getError())); + return FALSE; + } + $field = Validate::is($account, 'email') ? 'email' : (Validate::regex($account, '/^1\d{10}$/') ? 'mobile' : 'username'); + $user = \app\common\model\User::get([$field => $account]); + if (!$user) { + $this->error('账号未找到'); + } + $third = Third::where(['user_id' => $user->id, 'platform' => 'wxapp'])->find(); + if ($third) { + $this->error('账号已经绑定其他小程序账号'); + } + + $third = Third::where(['user_id' => $this->auth->id, 'platform' => 'wxapp'])->find(); + if (!$third) { + $this->error('未找到登录信息'); + } + + if ($this->auth->login($account, $password)) { + $third->user_id = $this->auth->id; + $third->save(); + $this->success("绑定成功", ['userInfo' => $this->auth->getUserinfo()]); + } else { + $this->error($this->auth->getError()); + } + } + + /** + * 个人资料 + */ + public function profile() + { + $user = $this->auth->getUser(); + $username = $this->request->request('username'); + $nickname = $this->request->request('nickname'); + $bio = $this->request->request('bio'); + $avatar = $this->request->request('avatar'); + if (!$username || !$nickname) { + $this->error("用户名和昵称不能为空"); + } + $exists = \app\common\model\User::where('username', $username)->where('id', '<>', $this->auth->id)->find(); + if ($exists) { + $this->error(__('Username already exists')); + } + $avatar = str_replace(Config::get('upload.cdnurl'), '', $avatar); + $user->username = $username; + $user->nickname = $nickname; + $user->bio = $bio; + $user->avatar = $avatar; + $user->save(); + $this->success('', ['userInfo' => $this->auth->getUserinfo()]); + } + + /** + * 保存头像 + */ + public function avatar() + { + $user = $this->auth->getUser(); + $avatar = $this->request->request('avatar'); + if (!$avatar) { + $this->error("头像不能为空"); + } + $avatar = str_replace(Config::get('upload.cdnurl'), '', $avatar); + $user->avatar = $avatar; + $user->save(); + $this->success('', ['userInfo' => $this->auth->getUserInfo()]); + } + +} diff --git a/addons/cms/info.ini b/addons/cms/info.ini new file mode 100644 index 000000000..b6e769a83 --- /dev/null +++ b/addons/cms/info.ini @@ -0,0 +1,8 @@ +name = cms +title = CMS内容管理插件 +intro = 基于ThinkPHP5的内容管理系统含小程序 +author = Karson +website = http://www.fastadmin.net +version = 1.0.15 +state = 1 +url = /addons/cms.html diff --git a/addons/cms/install.sql b/addons/cms/install.sql new file mode 100644 index 000000000..77b51648f --- /dev/null +++ b/addons/cms/install.sql @@ -0,0 +1,423 @@ + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_addonnews` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_addonnews` ( + `id` int(10) NOT NULL, + `content` longtext NOT NULL, + `author` varchar(255) DEFAULT '' COMMENT '作者', + `area` enum('domestic','overseas','local') DEFAULT 'domestic' COMMENT '地区', + `device` enum('vr','ar') DEFAULT 'vr' COMMENT '设备', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='新闻' ROW_FORMAT=COMPACT; + +-- +-- 转存表中的数据 `__PREFIX__cms_addonnews` +-- + +INSERT INTO `__PREFIX__cms_addonnews` (`id`, `content`, `author`, `area`, `device`) VALUES +(1, '
                                      \r\n
                                      \r\n
                                      \r\n
                                      \r\n

                                      据悉,驰为 HiGame 迷你 PC 配备了英特尔八代酷睿 i5-8305G 处理器,集成了移动版 Radeon Vega M 显卡和 4GB HMB 显存,性能不弱于 Nvidia GTX 1050 。

                                      \r\n

                                      \r\n

                                      存储方面,入门机型从 8GB DDR4 RAM + 128GB M.2 SSD 起跳,消费者可根据实际需要后续升级,此外厂家宣称该机支持 VR 与 AR 系统。

                                      \r\n

                                      \r\n

                                      扩展性方面,该机提供了 1×雷电 3、5×USB 3.0、2×HDMI 2.0、2×DisplayPort 1.3、以及耳机 / 麦克风插孔。

                                      \r\n

                                      驰为将于 5 月中旬发起 Indiegogo 众筹,感兴趣的朋友可以拿出 999 美元支持下,且可享受早鸟特惠。

                                      \r\n

                                      [编译自:SlashGear]

                                      \r\n
                                      \r\n
                                      \r\n
                                      \r\n
                                      \r\n
                                      \r\n
                                      \r\n
                                      \r\n
                                       
                                      \r\n
                                      \r\n
                                      \r\n
                                      ', '', 'overseas', 'vr'), +(2, '

                                      Chromebox CXI3 价钱实惠,很适合在课堂上使用。但在教育市场之外,它也有着一番用武之地。

                                      \r\n

                                      宏碁为该系列机型提供了多种配置,入门款搭载的是英特尔赛扬 3865U 处理器,顶配版则是英特尔八代酷睿 i7-8550U 。

                                      \r\n

                                      存储方面,其提供了 4~16GB RAM + 32~64GB ROM 的组合。扩展方面,则有 2×USB 2.1、3×USB 3.0、1× USB-C 端口,以及 HDMI 输出、以太网、音频复合插孔。

                                      \r\n

                                      \r\n

                                      Chromebox CXI3 支持 VESA 壁挂、垂直摆放、还有一根无线天线。

                                      \r\n

                                      CXI3 最先由 Chrome Unboxed 在 TigerDirect 上发现,网页给出的发货时间为 4 月 19 号起。赛扬版本售价 279 美元,酷睿 i3 / i5 / i7 版本则是 279 / 469 / 511 / 744 美元。

                                      \r\n

                                      [编译自:SlashGear , 来源:Chrome Unboxed]

                                      ', '', 'overseas', 'vr'), +(3, '

                                      您可以跟踪您的步数,睡眠,消耗的卡路里以及全天行走的距离,并将所有数据同步到Misfit的移动应用程序。它的防水深度可达50米,可以使用可更换的纽扣电池,使用寿命长达六个月。

                                      \r\n

                                      混合手表变得越来越流行,因为它们看起来比传统智能手表更时尚。对于那些觉得自己不能持续充电的人来说,它们也特别方便。当然,你必须放弃一些功能,以便照顾它们圆滑的外观,比如阅读和回复邮件或电子邮件的能力。

                                      \r\n

                                      \r\n

                                      \r\n

                                      \"\"

                                      ', '', 'overseas', 'vr'), +(4, '

                                      大多数消费者可能熟悉UE推出的色彩鲜艳的蓝牙音箱,但该公司也有一系列定制入耳式耳机,UE刚刚推出了一款新的顶级旗舰机型:2,200美元的UE Live。UE Live耳机是该公司以前的旗舰UE18 Pro型号的进化版本,将每个耳机的扬声器数量从6个增加到8个,共计6个平衡电枢,一个True Tone Plus驱动器和一个6mm钕制动态扬声器,以提供更好的声音。

                                      \r\n

                                      但是,这些改进需要付出代价:UE Live耳机的起价为2,199美元,自定义选项价格可能会更高。

                                      \r\n

                                      Ultimate Ears的定制入耳式耳机倾向于专业音乐家在工作室或舞台上使用,而UE Live也不例外。 Ultimate Ears表示,新款耳机专为在音乐节,舞台和体育场举办音乐会的音乐家而设计 - 尽管如果您只是在家里听音乐,他们听起来也会非常出色。

                                      \r\n

                                      与UE Live一起,Ultimate Ears还宣布推出Ultimate Ears 6 PRO,这是一款价格为699美元的入耳式监听音箱,该监听音箱专为鼓手,贝斯手,DJ和嘻哈音乐家设计,并配有两个动态驱动程序中音和低音。

                                      \r\n

                                      这两款耳返将于2018年5月开始发货。

                                      \r\n

                                      \"QQ图片20180413011632.png\"

                                      ', '', 'overseas', 'vr'), +(5, '

                                      想必大家都遇到过这样尴尬的事情:家里有很多电池,用的时候也分不清哪个有电、哪个没电,扔了又怕浪费。于是旧的不丢掉,新的买来用,这样家里的电池越积攒越多,造成恶性循环。而现在,南孚带来了一款全新产品——南孚测电器装电池,包含南孚测电器和南孚碱性电池,轻轻松松测一测,电池电量一目了然。

                                      \r\n

                                      而且测电器5号电池和7号电池均可以测量,一器双用。

                                      \r\n

                                      这款南孚测电器体积非常小巧,仅有iPhone 8手机的四分之一大小(长60mm、宽36mm、厚12mm)。测电器通体白色,侧边有纹路处理,方便持握。

                                      \r\n

                                      正面有“南孚聚能环”字样、电池放置正负极标志、电池剩余电量指示灯;背面有测试结果说明——3灯全亮表示电量充足,2灯为还能用,1灯为建议更换,不亮则代表没电,显示结果简单易懂,学习成本几乎为0。

                                      \r\n

                                      对于正在使用的电池,我们也可以用南孚测电器去测试它的剩余电量,以达到心中有数的目的。比如家里孩子玩的玩具车,对于电池电量要求比较高,我们可以在玩具使用一段时间后,测试电池剩余电量,若指示为“2灯亮”及以下时,将该电池换到那些功率小的玩具上继续使用,让电池不至于浪费,物尽其用。

                                      \r\n

                                      最关键的是,这个测电器是南孚免费赠送的。从18年开始,南孚将狂送150万个测电器。只要在线下商超或者线上旗舰店购买南孚大包装,就能免费获得测电器。

                                      \r\n

                                      \r\n

                                      \r\n

                                      \r\n

                                      \r\n

                                      \r\n

                                      \r\n

                                      \r\n

                                      \r\n

                                      ', '', 'domestic', 'vr'), +(6, '

                                      \"acuvue-oasys-tinting-contacts-1.jpeg\"

                                      \r\n

                                      据了解,这款叫做Acuvue Oasys With Ttransitions的隐形镜片由强生和Transitions Potical合作研发。除了像普通隐形眼镜一样能够帮助佩戴者看清东西而且还能在光线条件发生变化时做出快速、无缝的调整,它能过滤掉蓝光并阻断紫外线的进入。

                                      \r\n

                                      不过强生强调,这款隐形眼镜并不是为取代太阳镜而开发,毕竟它们不能覆盖住整个眼睛。

                                      \r\n

                                      据悉,Acuvue Oasys With Transitions隐形眼镜已经获得美国食品与药物管理局批准,其佩戴周期为2周,预计会在今年上半年进入市场。

                                      ', '', 'domestic', 'vr'), +(7, '

                                      据 Variety 报道,FCC 辐射实验室刚刚证实了一副来自 Snap 的新眼镜。今日曝光的这款穿戴设备的文档称,这是一款由 Snap Inc. 制作的穿戴式视频拍摄装置。从印刷标签来看,其品牌名称为 Spectacles,型号为 Model 002 。尽管文件中所附的大部分内容都以保密为由被遮掩,但还是可以知道它支持低功耗蓝牙 4.2 和 802.11ac Wi-Fi 。

                                      \r\n

                                      \"DSC_2124_2040b.0.jpg\"

                                      \r\n

                                      2016 年发布的初代 Spectacles 眼镜

                                      \r\n

                                      上个月的时候,Cheddar 爆料了两款即将到来的 Spectacles 眼镜。其中一款是计划在 2018 年发布的二代产品,改进了性能并修复了 bug 。

                                      \r\n

                                      另外还有一款计划在 2019 年发布的第三代产品,据说它配备了 2 个摄像头、支持 GPS、售价 300 美元。

                                      \r\n

                                      \"screenshot_2018_04_11_08.31.06_1024.png.jpg\"

                                      \r\n

                                      2016 年发布的初代 Spectacles 在营销上一度相当成功,很多人排着长队、甚至愿意出高价购买一副。即便炒作的热度很快就消散,但至少为该公司赚到了 4000 万美元。

                                      \r\n

                                      从 FCC 文件来看,Spectacles 二代产品的发布应该无需等待太久。当然,通过 FCC 认证也不见得产品会真的上市。

                                      \r\n

                                      [编译自:TheVerge]

                                      ', '', 'overseas', 'vr'), +(8, '

                                      云存储服务商Dropbox今日宣布,由于投资者需求强劲,现将IPO(数次公开招股)发行价区间调高2美元。上周一,Dropbox宣布将IPO发行价区间定为每股16美元至18美元,最高融资6.48亿美元,公司市值将达到约71亿美元。

                                      \r\n

                                      \r\n

                                      但Dropbox今日宣布,由于投资者需求强劲,现将发行价区间调高2美元,至每股18美元至20美元。这意味着Dropbox此次IPO最多将融资7.2亿美元,公司市值将达到约78.5亿美元。

                                      \r\n

                                      业内专家杰伊·瑞特(Jay Ritter)称,与Box等竞争对手相比,Dropbox最初给出的IPO发行价区间确实有些保守。

                                      \r\n

                                      虽然调高了发行价区间,但Dropbox当前估值仍低于2014年100亿美元的估值。

                                      \r\n

                                      昨日就有报道称,Dropbox IPO股票已被超额认购,表明今年市场对第一大科技股的需求十分旺盛。

                                      \r\n

                                      Dropbox成立于2007年,上个月提交了IPO招股书。Dropbox计划在纳斯达克上市,证券代码为“DBX”。

                                      ', '', 'overseas', 'ar'), +(9, '

                                      著名云存储服务提供商Dropbox在上市交易首日股价大涨36%,开盘定价为21美元每股,在当日最高时达到31.6美元每股,最终以28.48美元每股的价格收盘,现在市值超过120亿美元。可以明显看出公开市场投资者十分看好Dropbox这家主营业务为云存储服务和内容协作平台的公司。Dropbox最先对自己股价的预期是16到18美元每股,后来提升到18到20美元每股。而由于上市交易首日表现出色,超过了2014年私募时100亿美元的估值。

                                      \r\n

                                      \r\n

                                      在2017年,Dropbox实现营收11亿美元。较2016年的8.45亿美元和2015年的6.04亿美元的年度总营收增长不少。不过,Dropbox至今尚未实现盈利,去年净亏损为1.12亿美元。该数字在2016年和2015年分别是2.1亿美元和3.26亿美元,可以看出其净亏损在逐年减少。其从每个付费用户获得的平均收入为111.91美元。

                                      \r\n
                                       
                                      \r\n

                                      由于Dropbox采用的是免费+付费模式,既有面向消费者的业务也有面向企业的业务。Dropbox曾表示其所有5亿注册用户中只有1100万为其产品付费。

                                      \r\n

                                      著名风投公司红杉资本合伙人、Dropbox董事会成员布莱恩·施莱尔(Bryan Schreier)称:“Dropbox结合了一家消费者公司该有的规模和影响力和一家软件公司该有的长期收益的优势。”他表示现在正是Dropbox上市的最佳时机,因为“其业务规模和现金流都已经达到一定程度,足以支撑其上市计划”。

                                      \r\n

                                      作为Dropbox的早期投资机构,红杉资本如今持有Dropbox 23.2%的股份。另一家风投公司Accel是第二大机构股东,持有5%的股份。Dropbox创始人兼首席执行官德鲁·休斯敦(Drew Houston)持有公司25.3%的股份。

                                      \r\n

                                      投资机构Greylock Partners也拥有少量Dropbox股份,其合伙人约翰·里利(John Lilly)说:“之所以投资Dropbox,是因为德鲁和他的团队对未来的工作模式有着清晰的认识,并打造了一个满足现代生产力需求的产品。”

                                      \r\n

                                      不过,目前市场上有大量与Dropbox相似的产品。Dropbox称:“内容协作平台市场竞争激烈且变化很快。在云存储业务方面,我们面临来自亚马逊、苹果、谷歌、和微软公司同类产品的竞争。而在内容协作市场则有来自Atlassian、谷歌、和微软公司的竞争。我们与Box的竞争则主要局限在面向大型企业用户的云存储服务领域。”

                                      \r\n

                                      Box是一家从事与Dropbox类似业务的公司,经常与Dropbox一起被提到。不过Box商业模式与Dropbox不同,其更专注于企业用户。在Dropbox上市首日,Box股价下跌了8.2%。

                                      ', '', 'overseas', 'ar'), +(10, '

                                      云存储公司Dropbox周五向美国证券交易委员会(SEC)提交了IPO(首次公开招股)申请文件,寻求筹集5亿美元资金。Dropbox的IPO交易长期以来备受市场期待,该公司四年前在私募投资市场上的估值就已高达100亿美元。

                                      \r\n

                                      \r\n

                                      这家硅谷创业公司成立于2007年。在IPO申请文件中,该公司披露信息称其过去三年的营收分别为6.038亿美元、8.448亿美元和11.1亿美元,而亏损则从3.259亿美元渐次收窄到了2.102亿美元和1.117亿美元。

                                      \r\n

                                      据《华尔街日报》报道,Dropbox此前通过私募融资回合已经筹集到6亿美元资金。在2014年1月进行的最后一个融资回合中,该公司估值达100亿美元。

                                      \r\n
                                       
                                      \r\n

                                      Dropbox计划在纳斯达克挂牌上市,股票代码为“DBX”。共有12家银行将担任该公司IPO交易的承销商,其中主承销商是高盛集团和摩根大通。

                                      \r\n

                                      文件还披露信息称,Dropbox去年每付费用户平均收入为11.91美元,高于2016年,但低于2015年;注册用户总数达5亿人,自2017年初以来的新注册用户人数为1亿人;付费用户总数达1100万人以上;毛利率为67%。

                                      \r\n

                                      Dropbox此前就已秘密向美国证券交易委员会提交了IPO申请文件,后者在周五对外公布了该文件。文件显示,Dropbox联合创始人及CEO德鲁·休斯顿(Drew Houston)持有24.4%具备投票权的股票,风投公司红杉资本(Sequoia Capital)持有24.8%股权。

                                      \r\n

                                      受研发预算扩大的影响,Dropbox的支出有所增长,但该公司已在2016年实现了正向的自由现金流。很多云公司都依靠企业销售团队来获取收入,但Dropbox则与众不同,该公司90%以上营收都来自购买自己的订阅服务的用户。不过,这家仍未摆脱亏损的公司仍面临约17亿美元的合同义务,如租约和未偿还债务等。

                                      \r\n

                                      另外,Dropbox还面临着严峻的竞争压力,其各方面业务与亚马逊、苹果公司、谷歌和微软等科技巨头之间存在竞争关系。

                                      \r\n

                                      来自于IPO交易的收入将被用于融资一项扩张计划,内容包括将更多用户升级至订阅用户,以及扩大与第三方软件之间的整合等。

                                      \r\n

                                      在Dropbox的IPO申请文件公布以后,其竞争对手Box的股价上涨2.8%。Dropbox曾五次入选“CNBC Disruptor 50”榜单,该榜单每年公布一次,评选出50家最有影响力、最具有开拓精神的创业公司。

                                      ', '', 'overseas', 'ar'), +(11, '

                                      通用电气(GE)为推广Predix云平台的应用开发,在国内推出首期\"Predix星火计划\",以奖励基于该平台的工业互联网开发者。首期有4家企业获奖,将进驻GE孵化器并获得技术支持和潜在投资机会。

                                      \r\n

                                      \r\n

                                      参与该计划的团队需基于GE Predix平台,开发适合工业领域的资产绩效管理(APM)应用,用于工业企业实时、安全地收集和分析数据,增加正常运行时间、降低成本、减少运营风险。

                                      \r\n

                                      GE Predix是一个基于Cloud Foundry(CF)的云平台,专攻制造业。跟Azure,AWS的PaaS服务相比,Predix的优势在于对于工业数据的导入做了专门优化。

                                      \r\n

                                      2017年\"Predix星火计划\"采用提名邀请,共有16家GE合作伙伴及创业公司提交了内容涵盖包括能源、医疗、设备制造等领域的工业应用项目方案。

                                      \r\n

                                      获奖企业中,广采科技由思科参与投资,提供货物与集装箱的全球跟踪服务。实视科技面向汽车、装备制造等客户开发用于智能眼镜的AR应用。华瑞特信息主要开发企业业务管理流程整合应用。华中思能主要针对电力企业开发节能减排、运营优化、故障诊断应用。

                                      \r\n

                                      四家获奖企业将获得的资源支持包括,进驻位于上海的GE数字创新坊孵化1个月、期间将有GE技术团队支持和GE创投部门考察进一步投资机会。

                                      ', '', 'local', 'ar'), +(12, '

                                      据外媒报道,Cloudflare 公司正将其业务拓展到网站和云应用之外的互联网安全领域。此前,Cloudflare 帮助过企业屏蔽恶意流量,并且让它们的线上内容加载得更加迅速。而根据今日披露的内容,这项新服务旨在保护那些在公共网络背景下运行的联网基础设施,涵盖了从企业内部电子邮件服务器、到领域内部署的联网设备等各个方面。

                                      \r\n

                                      \"cloudflare.png\"

                                      \r\n

                                      尽管其中有一些是在孤立的网络中运行,但又许多这样的系统是通过开放的 Web 进行通讯的。如此一来,它们就和网站一样,很容易受到分布式拒绝服务攻击的影响。

                                      \r\n

                                      Cloudflare 表示,Spectrum 允许企业通过相同的 DDoS 缓解功能(其一直为在线服务提供的那种),来应付这些威胁。

                                      \r\n

                                      对于这些攻击的抵御,Cloudflare 的解决方案其实很简单:

                                      \r\n
                                      \r\n

                                      当流量突然激增的时候,系统会猜测事件可能由 DDoS 引发,然后将请求转发到自家的 150 个数据中心网络。

                                      \r\n

                                      Cloudflare 的基础设施相当强大,能够承受住巨量的攻击而不被斩断。

                                      \r\n
                                      \r\n

                                      当然,这么做还有另一个好处 —— 即便企业没有一个内置的连接保护机制,Spectrum 服务也允许企业对系统传输的数据进行加密。

                                      \r\n
                                      \r\n

                                      对企业来说,Cloudflare 提供的这项服务极具吸引力。作为附加措施,Spectrum 还提供了 Cloudflare 防火墙工具的集成。

                                      \r\n
                                      \r\n

                                      后者可以自动阻止某些 IP 地址的流量,比如那些被网络安全机构标记的恶意来源。

                                      \r\n

                                      Cloudflare 早就声称担负了 10% 的全 Web 流量,此前该公司还推出了一项免费的系统服务,承诺让人们浏览的互联网更具隐私。

                                      \r\n

                                      [编译自:SiliconAngle]

                                      ', '', 'overseas', 'ar'), +(13, '

                                      当英特尔上周推出更多更多 Coffee Lake CPU 和配套主板时,传说中的 Z390 芯片组却意外缺席了。不过有眼尖的人们发现,主板厂商映泰(Biostar)在自家 B360 Racing GT5 手册中,竟然清楚地列明了另一款名叫“Z390GT5”主板的存在。作为一个二线品牌,映泰的产品主打平价而不是古怪的设计。不过它与现有的 Z370 系列没有太大差别,而且最高支持的 CPU TDP 也仅为 95W,刚好够酷睿 i7-8700K 使用而已。

                                      \r\n

                                      \"Biostar-Z390-Racing-GT3-1000x658.jpg\"

                                      \r\n

                                      此前有传闻称,某款八核 Coffee Lake 芯片的 TDP 可能超过这个数值。若真如此,Z390 芯片组存在的意义,可能就是比 H370 系列多一些 PCIe 通道、内建 USB 3.1 Gen 2、以及 CNVi Wi-Fi 支持。

                                      \r\n

                                      \"z390gt5.png\"

                                      \r\n

                                      映泰的公告中并未详细给出这些特性,所以仍有待证实。去年的泄露似乎表明,该公司的 Z390 芯片组会包含自家的音频硬件,但这块板子仍然采用了老旧的瑞昱(Realtek)编解码器。

                                      \r\n

                                      \"Biostar-Z390-GT5-layout.png\"

                                      \r\n

                                      [编译自:TechReport , 来源:VideoCardz]

                                      ', '', 'overseas', 'ar'), +(14, '

                                      4 月 11 日,Valve 宣布旗下著名的 PC 游戏发行平台 Steam 会推出新的用户数据隐私安全措施。今后玩家们可以选择隐藏你的游戏库内容,也可以隐藏你的活动细节,具体到最近收藏什么游戏,买了什么游戏,玩了什么游戏以及在某游戏上花了多少小时等等。

                                      \r\n

                                      此前,这些信息全部是公开的,不仅你的好友可以看到,发表评论的时候社区用户可以看到,而且第三方可以采用 Steam API 轻而易举的获得,那些 PC 游戏数据提供商(Steam Spy 之类)就是依靠这些用户数据提供服务的。

                                      \r\n

                                      新的隐私措施实行后,不管是其他用户还是第三方,将无法轻易获取这些数据。也就是说,如果你想要隐藏,那就永远不会有第三者知道你在某成人视觉小说游戏上面花了多少时间。

                                      \r\n
                                       
                                      \r\n

                                      这对 Steam 用户当然是个不错的消息,而受影响最大的是 Steam Spy 这种收集并分析数据的第三方。Steam Spy 说起来大家都不会太陌生,很多相关新闻也会引用 Steam Spy 的数据报告。他们根据过滤器筛选数据,然后将 Steam 上的游戏统计呈现给更多人浏览,但随着 Valve 关闭 Steam 可用库数据,包括 Steam Spy 在内的第三方可能都要面临倒闭。

                                      \r\n

                                      目前还未清楚 Valve 有没有其他替代方案,用以让第三方继续提供数据服务,或者单独推出面向开发者的数据统计工具。

                                      \r\n

                                      Steam Spy 的创始人 Sergey Galyonkin 在接受外媒采访时说,“如果他们真的想遵守法律,应该隐藏所有的个人资料信息。目前他们有默认情况下暴露的敏感信息,只有游戏库被隐藏。这并不合理。”默认情况下,你的 Steam 个人资料仍会向所有人显示识别信息,例如你的社交媒体帐户。

                                      \r\n

                                      Steam Spy 创始人提到的“法律”,其实是 5 月 25 日生效的欧盟“GPDR”,全称“通用数据保护条例”,欧盟的新规定要求公司加密所有“非公开信息”。

                                      \r\n

                                      \r\n

                                      所以我们可以认为 Valve 做出这一决定并不绝对与近期爆发的 Facebook 数据泄露事件有关,但是这一事件肯定推动了 G 胖尽快落实自己的隐私安全措施。在这个时期,恰到好处地透露给用户“我们是一家坚定保护用户信息安全的公司”这样的信息,就是一颗很好的定心丸了。

                                      \r\n

                                      可以想见 Facebook 数据泄露以及后来的 Cambridge Analytica 丑闻给各大科技公司带来了怎样的压力。尽管 Steam 光是卖游戏就能保证自己足够赚钱,看起来完全没有出卖数据的必要,Steam Spy 上收集的游戏数据和用户游戏行为,于操弄政治的 Cambridge Analytica(剑桥分析公司)之流也产生不了什么价值,但谁敢说有朝一日不会因金钱诱惑发生与 Facebook 丑闻类似的事情呢?

                                      \r\n

                                      Valve 宁愿让一家第三方数据服务商去死,也不会冒着 G 胖走进国会接受听证的风险,无数玩家还在苦苦等待《半条命3》呢。放整个业界来讲,不管是哪家公司,都不敢再承担一次这样的“风暴潮”。

                                      \r\n

                                      Facebook的教训

                                      \r\n

                                      Facebook 身处争议漩涡,人们的抗议达到了顶峰。有人怀疑它的用处,有人直接否认它的用处,在当前的信任危机下,一切情绪都持续放大,公司和公司的使命被极端质疑。Facebook的市值自从指控以来已经减少超过500亿美元,情况简直糟糕。

                                      \r\n

                                      上个月,根据纽约时报、卫报曝光 Facebook 发生了严重的数据泄露,波及用户有 5000 万人之多,外泄信息被商业公司利用建立成性格模型,用来操纵了 2016 年的美国大选。

                                      \r\n

                                      Facebook 日前承诺 ,对于受 Cambridge Analytica 数据丑闻影响的用户,该公司会专门进行通知。毫无疑问,自 Facebook 泄密丑闻曝光以来,许多人都在等待这样的消息。随着马克·扎克伯格(Mark Zuckerberg)在美国参议院听证会上作证,更多关于数据丑闻的细节浮出水面。

                                      \r\n

                                      在过去一年的动荡中,Facebook 广告的基本理念,即基于用户隐藏性格特征来投放广告,已被证明是一种恶意利用用户信息,且容易遭到滥用的做法。Facebook 对此的回应与其他科技行业巨头的态度类似:感到震惊,向用户保证这绝对不是有意的行为,以及承诺采取行动。

                                      \r\n

                                      扎克伯格面对数不清的镜头提出的观点也颇有意思,他说经过此事希望美国数据处理和隐私规则能发生演化,其中包括直接呼吁放松监管来避免美国公司落后于中国竞争对手——在西方人的脑子里,中国好像是毫无个人信息隐私而言的地方。

                                      \r\n

                                      他谈到了“让人们完全控制”自己所分享内容的概念,声称这是“Facebook 最重要的原则”。

                                      \r\n

                                      “你在 Facebook 上分享的所有内容都归你自己所有,而且你完全控制着谁能看到它以及如何进行分享。此外,你还可以随时删除它。”扎克伯格说道,并未提及该公司在其发展早期阶段距离这样的原则有多遥远。

                                      \r\n

                                      国外媒体纷纷认为扎克伯格的辩解不太含蓄,因为其他平台泄漏数据的规模都比不上 Facebook,而用户是否会买扎克伯格这个账还有待观察。

                                      \r\n

                                      怼怼苹果 更开心

                                      \r\n

                                      一般大公司的 CEO 都充当了企业发言人的角色,经常在各种访谈、社交媒体上发表自己的言论,甚至是向竞争对手开炮。

                                      \r\n

                                      Facebook 因为用户隐私泄露被网友围攻的时候,苹果 CEO 库克自然也被媒体围着追问对这件事情的看法,库克的回答十分尖锐:

                                      \r\n

                                      “对我们来说用户隐私等同于用户的权利和公民自由,但是 Facebook 是一个免费服务,所以用户在这个服务中反而成了卖给广告商的商品,如果苹果这么做,我们将能赚到很多钱,但苹果最好不、也永远不会这么做。”

                                      \r\n

                                      在隐私方面,苹果一直奉行着严格的标准,而且它自己也一直以这种严格为傲,苹果的隐私方案多次承诺“我们不会根据你的电子邮件内容或网页浏览习惯来建立档案,然后出售给广告商。我们不会用你存放在 iPhone 或 iCloud 上的信息来赚钱。”

                                      \r\n

                                      他们有时甚至把美国政府搞得灰头土脸。在对发生在加利福尼亚州圣贝纳迪诺的大规模枪击案调查期间,苹果拒绝帮助美国联邦调查局解锁一名嫌犯的 iPhone,甚至不惜为此与政府对簿公堂。解锁嫌犯的 iPhone 要求开发专门软件,苹果认为影响所有用户手机的安全功能。美国司法部随后在没有苹果帮助的情况下自己找到解锁嫌犯手机的方法。

                                      \r\n

                                      直到现在,FBI 还在想方设法的要破解 iPhone。库克的态度肯定是——抗争到底。

                                      \r\n

                                      当然,苹果对用户隐私的严格保护也是经过惨痛教训的,2014 年好莱坞女星照片泄露事件波及众多大腕,在全球引起了极大的注意,让苹果和 iCloud 都摊上了大事。虽然那一次隐私泄露是由于黑客行为,和今天说的用户数据泄露、滥用态度有所区别,但那一次事件让所有人开始思考应该如何给个人信息添加更严实的门锁,更谨慎细致地保护云端安全。

                                      \r\n

                                      所以,记住这些教训,可以让苹果和 Facebook 们以后不再那么惨痛。这次也一样。

                                      ', '', 'local', 'vr'), +(15, '

                                      今天,W3C和FIDO联盟标准机构宣布,Web浏览器正在构建一种新的登录方式。这款名为WebAuthn所呈现的新开放标准将在最新版本的Firefox中得到支持,并将在未来几个月发布的Chrome和Edge的版本中得到支持。这是多年来的最新举措,目的是让用户远离密码,转向更安全的登录方式,如生物识别和USB令牌。

                                      \r\n

                                      该系统已经在谷歌和Facebook等主要服务上就位,在那里你可以使用符合FIDO标准的Yubikey设备登录。

                                      \r\n

                                      \"Security-Key-by-Yubico.png\"

                                      \r\n

                                      WebAuthn将无疑将加速安全登录的实现,无论是将这些技术作为备用登陆方式,还是完全取代密码。随着更多的开源代码为新标准而编写出来,开发者将更容易实现新的登录方式。

                                      \r\n

                                      “以前,USB令牌登陆的模式只运用于谷歌、微软和Facebook等大公司,”参与Firefox工作的Selena Deckelmann说。“现在,通过WebAuthn,更多的用户将能够体验安全登录。”

                                      \r\n

                                      因为FIDO标准是建立在零知识的基础上的,所以没有一串字符可以保证对一个账户的访问,这使得传统的钓鱼攻击变得更加困难。它为有安全意识的用户和企业提供了保护自己的重要途径。随着越来越多的服务转向支持更安全的登录方式,FIDO-ready用户的数量会越来越多。

                                      \r\n

                                      Deckelmann说:“它能真正的规避安全隐患,但现在我们还没到那一步,这将是我们的美好未来。”

                                      ', '', 'overseas', 'vr'), +(16, '

                                      Github 去年推出的安全警告,极大减少了开发人员消除 Ruby 和 JavaScript 项目漏洞的时间。GitHub 安全警告服务,可以搜索依赖寻找已知漏洞然后通过开发者,以便帮助开发者尽可能快的打上补丁修复漏洞,消除有漏洞的依赖或者转到安全版本。

                                      \r\n

                                      \"36836206-97565a64-1ced-11e8-990f-d12cb4b003e5.png\"

                                      \r\n

                                      根据 Github 的说法,目前安全警告已经报告了 50 多万个库中的 400 多万个漏洞。在所有显示的警告中,有将近一半的在一周之内得到了响应,前7天的漏洞解决率大约为30%。实际上,情况可能更好,因为当把统计限制在最近有贡献的库时,也就是说过去90天中有贡献的库,98%的库在7天之内打上了补丁。

                                      \r\n

                                      这个安全警报服务会扫描所有公共库,对于私有库,只扫描依赖图。每当发现有漏洞,库管理员都可以收到消息提示,其中还有漏洞级别及解决步骤提供。

                                      \r\n

                                      安全警告服务现在只支持 Ruby 和 JavaScript,不过 Github 表示 2018 年计划支持 Python。

                                      ', '', 'domestic', 'ar'), +(17, '

                                      AV-TEST公布了2018年1~2月杀毒软件的最新测试情况,稍稍有点不接地气的是,基于Windows 10企业版平台。排名第一的依然是铁打的卡巴斯基,3个满分总计18分无悬念。不过,这次Symantec和Trend Micro也是18满分,令人刮目相看。

                                      \r\n

                                      \r\n

                                      \r\n

                                      Bitdefender稍稍遗憾,以0.5分的差距(易用性非满分)排名第二,第三名17分也有3名,分别是你Avast、McAfee和微软

                                      \r\n

                                      是的,你没有看错,微软自带的Defender居然防护力满分和性能/易用性两个5.5分并列第三名。

                                      \r\n

                                      这次排名最后的是F-Seecure,仅拿到14.5分。

                                      ', '', 'domestic', 'ar'), +(19, '

                                      今日,谷歌分享了 Semantic Experiences,在博客中展示了两大关于自然语言理解的互动工具。Talk to Books 是一个可以从书中的句子层面搜索书籍的全新检索模式;另一个互动内容则是 Semantris,一个由机器学习驱动的单词联想游戏。

                                      \r\n

                                      地址:

                                      \r\n
                                       
                                      \r\n

                                      https://research.google.com/semanticexperiences/

                                      \r\n

                                      谷歌还发布了「通用语句编码器」(Universal Sentence Encoder),更加详细地呈现了上述示例所使用的模型;当然,谷歌还为开源社区提供了一个预训练的 TensorFlow 模型,开发者可以测试自己的句子及短语编码。

                                      \r\n

                                      地址:

                                      \r\n

                                      https://tfhub.dev/google/universal-sentence-encoder/

                                      \r\n

                                      自然语言理解在近年已经有了极大进步,这得益于词向量(word vectors)的发展,这一技术使算法能根据实际语言使用的例子来学习单词之间的关系。这些向量模型根据概念和语言的等价性、相似性或关联性,将语义相似的词或短语投影到临近点。

                                      \r\n

                                      建模方法

                                      \r\n

                                      谷歌拓展了在向量空间中表征语言(language)的构想,这一想法通过为像完整句子或段落为代表的较大语言块创建向量来实现。语言是由具有概念的层次结构组成的,因此团队采用模块的层次结构来构建向量,每一模块都要考虑与不同时间尺度序列所对应的特征。各种类型的关系,如关联、同/反义、部分/整体等都可以用向量空间语言表示。团队在论文《Efficient Natural Language Response for Smart Reply》有更多介绍。

                                      \r\n

                                      论文地址:

                                      \r\n

                                      https://arxiv.org/abs/1803.11175

                                      \r\n

                                      Talk to Books

                                      \r\n

                                      \r\n

                                      以往我们在检索书籍时,通常会从书名、作者、主题等表面标签入手。而谷歌发布的「Talk to Books」可以为用户提供一种检索书籍的全新方法。用户只需要做一段相关描述,或是提一个相关的问题,那么 Talk to Books 可以在不依赖关键词匹配的情况下,从超过 10 万本书籍中检索所有句子,并根据句子层面的语义,找到能匹配用户陈述或问题的句子。从某种意义上来说,Talk to Books 是一种用户与书「交谈」的新模式,系统给出的回答也能帮助用户确定自己是否对相关主题感兴趣。

                                      \r\n

                                      模型在正式发布前经历了超十亿次的对话训练,以打磨更好的用户体验——对用户的提问或陈述给出更加合适的回答。这一方式相比起普通的谷歌检索,可能会帮助用户找到一些更有趣的书籍,特别是在关键字搜索中并不会显示的一些结果。

                                      \r\n

                                      不过,这一模型还有更多的改进空间,比如搜索范围局限在句子层面上,而不是段落,因此可能会产生「断章取义」的情况。另外,因为只看某一句子的匹配程度,这也可能导致某些众所周知的、「符合口味」的书并不会出现在检索结果的前列。谷歌团队此举,更多的是希望帮助人们以一种新的探索方式,发现不曾料想过的作者和书名,竟然会有读者感兴趣的内容。

                                      \r\n

                                      地址:https://books.google.com/talktobooks

                                      \r\n

                                      Semantris

                                      \r\n

                                      \r\n

                                      Semantris 是一个由相同技术驱动的单词联想游戏。屏幕上会呈现所有单词,用户可以输入某个单词,随即系统会根据屏幕上单词与用户输入单词的关联程度进行重新排序。不论是近义词、反义词还是相近概念,系统都能找到对应的排序模式。

                                      \r\n

                                      如图所示,用户输入「Photo」时,最顶部的「Camara」因为与输入单词的关联最为紧密,因此会更替排序调整到第一位「消掉」。这确实是一个锻炼联想能力的好机会,此外还有限时模式和不限时模式供用户体验。

                                      \r\n

                                      地址:https://research.google.com/semantris

                                      \r\n

                                      相信在这两个工具的驱动下,人工智能能够与用户更好地进行交互学习,并且帮助人类在现实生活中更好地理解科技,使用科技,并受惠于科技。

                                      ', '', 'domestic', 'ar'), +(20, '

                                      针对新兴市场,Google希望通过Google Go轻量级应用帮助身处网络速度慢、流量资费高昂地区的用户获得更流畅的网络搜索体验。现在谷歌正向在26个撒哈拉以南非洲国家/地区推广,Google Go轻量级应用可以让搜索数据用流量减少40%,并且支持对以往搜索记录的脱机访问。

                                      \r\n

                                      \"TIM截图20180413142756.png\"

                                      \r\n

                                      Google Go 应用本身只有 5MB 大小,对于低存储空间设备很友好,这款应用也是不意外地有离线模式,主要针对的是网络条件不好地区的用户。除了应用本身的性能优化以外,Google Go 还能显示搜索结果的主题摘要信息,同时也会向用户推荐更多可能会感兴趣的内容,也拥有当前流行趋势主题推荐和语音搜索功能。

                                      \r\n

                                      Google Go 还可配合 YouTube Go 和文件管理应用 Files Go 使用,该应用将在 Android Oreo( Go Edition )设备中预装进行分发,让非洲等新兴市场的消费者得到更流畅、更便捷的 Android 系统体验。

                                      ', '', 'domestic', 'ar'), +(21, '

                                      尽管已经研发两年多时间,但对于Fuchsia系统Google始终缄口不言。不过今天,公司发表了名为“The Book”的深度解析文档,详细介绍了这款计划取代Android和Chrome OS的操作系统。 目前Android和Chrome OS都是使用Linux内核,不过在最新发布的文档中谷歌明确Fuchsia并非基于Linux内核。

                                      \r\n

                                      \"google-says-its-upcoming-fuchsia-os-is-not-linux-uses-zircon-kernel-520641-2.jpg\"

                                      \r\n

                                      根据公布的文档,Fuchsia是基于功能的模块化系统,使用名为“Zircon”(锆石)的内核,该微内核为Fuchsia系统提供核心驱动以及C Library(libc)实例。

                                      \r\n

                                      虽然文档仍未完成,但是我们也注意到Google正在打造的Fuchsia OS非常独特,极具创新且前途无限。这款系统从头构建自己的库和组件,通过POSIX向后兼容性和使用基于Vulkan的驱动打造出类UNIX系统。

                                      \r\n

                                      Fuchsia系统使用名为“Escher”的物理渲染器,提供物体的Soft Shadows,镜头特效、光影扩散和色彩外溢等功能。此外Fuchsia的文件系统完全在用户空间之间进行操作,并没有链接或者加载到内核中。

                                      \r\n

                                      在文档中写道:“Fuchsia的文件系统本身可以很容易的进行更改--修改不需要重新编译内核。事实上,对Fuchsia的文件系统更新可以不需要重启。”

                                      ', '', 'domestic', 'vr'), +(22, '

                                      谷歌手机应用程序在2月份收到了主要更新,为快速通话控件添加了便捷的聊天功能。在接下来的几周里,Pixel,Nexus和Android One设备的默认拨号程序正在添加垃圾邮件过滤功能,并附带一个新的测试版程序,现在就可以试用该功能。

                                      \r\n

                                      2016年,该应用程序开始通过将来电屏幕以鲜红色闪烁,并通过电话号码下方的另一个“怀疑垃圾邮件来电者”警报来提醒用户潜在的垃圾邮件来电者。现在,测试中新的垃圾邮件过滤功能更进一步增强,不再打扰用户。当检测到潜在的垃圾邮件呼叫时,将直接把它发送到语音邮件。因此,手机不会响铃,用户也不会被打搅。

                                      \r\n

                                      同时,用户不会收到未接电话或语音邮件通知,但已过滤的电话将出现在通话记录中,并且任何留下的语音邮件仍将显示在相应的选项卡中。此功能将在未来几周内在全球范围内推出,但加入新版测试户可以率先使用该功能。和其他程序一样,Google指出允许用户在发布之前使用这种实验性功能。

                                      \r\n

                                      谷歌警告说,功能仍然在开发中,可能不稳定,并且存在“一些问题”。同时,用户将需要有能力在整个过程中提交应用内反馈。想要参与测试的用户可以前往电话应用的Google Play列表,然后向下滚动到“成为测试人员”以加入。

                                      \r\n

                                      \r\n

                                      ', '', 'domestic', 'ar'), +(24, '

                                      谷歌正在与美国医学协会(美国的一个医师游说团体)进行合作,双方达成一项挑战计划,其内容是让初创企业能够想出“促进健康监测设备数据共享的最佳新思路”。美国医学协会于周一表示,最终的挑战成果将会是一款手机应用或可穿戴设备。

                                      \r\n

                                      \r\n

                                      这两者可以让慢性病患者更轻松地与医生分享数据。

                                      \r\n
                                       
                                      \r\n

                                      该声明称:“获奖作品将展示申请人是如何通过病人的健康数据,借助有效的方式,改善医生工作流程临床效果、降低医疗保健系统成本的。”

                                      \r\n

                                      为了在3万亿美元的医疗保健市场中分得一杯羹,一些科技巨头对于医疗保健该行业的公司展开跨界合作显示出越来越强烈的意向,以促进创新。

                                      \r\n

                                       

                                      \r\n

                                      去年,亚马逊公司与默克公司共同发起了一项创新挑战计划,以鼓励Alexa的开发人员们提出新的“技能”,以帮助在家中接受治疗以及医院中接受治疗的糖尿病患者。

                                      \r\n

                                      亚马逊并没有过多透露其意图,但CNBC在3月份报道了该公司下一步的宏伟目标:针对老龄人口发展其技术。与年轻人相比,老年人在不同程度上更容易罹患糖尿病等慢性病。

                                      \r\n

                                      Alphabet选择将本次挑战计划集中在医疗数据的互操作性问题上。这样做的目的,是让患者和提供者能够更容易以计算机可读的格式(而不是PDF格式)共享实验室结果或医学成像这样的数据。从历史角度看,许多医院和他们的技术供应商都倾向于选择将病人“锁定”到他们独家的设备上,而不是为病人提供便捷的数据访问服务。

                                      \r\n

                                      值得一提的是,苹果公司也正在通过其医疗记录产品来解决这个问题。

                                      \r\n

                                      本次“谷歌——美国医疗协会”挑战赛最终将会产生出3个最佳创意,来共同分享5万美元的谷歌云奖金。

                                      ', '', 'domestic', 'ar'), +(25, '

                                      最近 Google 在帮助开发者提升 App 可用性上可谓是动作频频,不只发布了无障碍技术指导方案,成立无障碍支援团队,近日还在博客上宣布开源 iOS 专用的自动化测试框架 GTXiLib ,以帮助开发者打造无障碍 App 。

                                      \r\n

                                      \"logo_accessibility_checker_color_3x_ios_133in167dp.png\"

                                      \r\n

                                      GTXiLib 采用 Objective-C 编写,能与现存的 XCTest 测试框架整合,并在 XCTest 结束调用 tearDown 前,执行所有注册的可用性检查。当 GTXiLib 检测失败时,XCTest 的测试也会失败,两者相辅相成,能够更好地修补和发现问题。

                                      \r\n

                                      GTXiLib 可用于:

                                      \r\n
                                        \r\n
                                      • \r\n

                                        重用测试: GTXiLib 集成整合到现有的功能测试流程中,能大幅提升现有测试价值。

                                        \r\n
                                      • \r\n
                                      • \r\n

                                        增量可访问性测试: GTXiLib 可安装在单一测试用例、测试类或测试的特定子集上,以允许灵活地增加可访问性测试。

                                        \r\n
                                      • \r\n
                                      • \r\n

                                        编写属于自己的检查: GTXiLib 有一个简单的 API 来根据你的应用的特定需求创建自定义检查。比如,可以检测应用中的每一个按钮是否都具备 accessibilityHint 属性。

                                        \r\n
                                      • \r\n
                                      \r\n

                                      Google 还表示,为了改进 GTXiLib ,该框架会收集一些使用数据上传至 Google Analytics ,像是测试应用通过或失败的状态,以及应用绑定 ID的 MD5 哈希值,这些信息会让 Google 知道 GTXiLib 的使用情况。若是用户不愿意,则可以选择添加代码片段来停用 Google Analytics 。

                                      \r\n

                                      相关链接

                                      \r\n', '', 'domestic', 'vr'), +(26, '

                                      Let\'s Encrypt 宣布 ACME v2 正式支持通配符证书。Let\'s Encrypt 宣称将继续清除 Web 上采用 HTTPS 的障碍,让每个网站轻松获取管理证书。ACMEv21.6k 是 ACME 协议的更新版本,考虑到行业专家和其他组织可能希望在某天使用 ACME 协议进行证书颁发和管理,它已经通过 IETF 标准流程。

                                      \r\n

                                      \"Wildcard_certificate.jpg\"

                                      \r\n

                                      (配图来自:维基百科)

                                      \r\n

                                      Wildcard certificates 1.9k 允许使用单个证书来保护域的所有子域。在某些情况下,通配符证书可以使证书更容易管理,以帮助使 Web 达到100% 的 HTTPS 协议。但是对于大多数用例,Let\'s Encrypt 仍然推荐使用非通配符证书。

                                      \r\n

                                      通配符证书只能通过 ACMEv2 获得。为了将 ACMEv2 用于通配符或非通配符证书,你需要一个已更新且支持 ACMEv23.5k 的客户端。Let\'s Encrypt 希望所有客户和订户转换为 ACMEv2,尽管 ACMEv1 API 还没有“报废”。

                                      \r\n

                                      另外,通配符域必须使用 DNS-01 质询类型进行验证。这表明你需要修改 DNS TXT 记录才能演示对域的控制以获得通配符证书。

                                      \r\n

                                      [via ArsTechnica]

                                      ', '', 'domestic', 'vr'), +(27, '

                                      欧洲电力传输系统运营商网络(ENTSOE)是建立内部能源市场并确保其最佳运作的机构,为解释欧洲的电子钟表运行缓慢超过一个月的原因发表了一份声明。在一篇引人入胜的题为“欧洲大陆的频率偏差对频率控制的电子钟表影响”新闻稿中,该组织解释说,频率偏差导致一些数字时钟滞后。

                                      \r\n

                                      许多数字时钟,主要是那些数字闹钟,烤箱和微波炉,使用电网的频率来保持时间。欧洲的电网运行稳定在50Hz,所有时钟都在计算电源周期。如果频率持续下降一段时间,这就造成电子钟表运行缓慢,这种问题在欧洲似乎已经发生。

                                      \r\n

                                      根据维基百科,频率随着电网负载而变化,但每24小时的周期数保持严格恒定,以使这些电子时钟保持长时间准确。ENTSOE表示,供应短缺是由东南欧的一个未指定的电力分销商造成的。由于欧洲电网相互连接,自1月中旬以来,这导致整个大陆出现频率问题,这些问题导致钟表回落至五分钟。

                                      \r\n

                                      在问题解决之前,重置你的时钟几乎是不值得的,因为它们只会滞后。 ENTSOE声明确实承诺欧洲的传输系统运营商为了让时钟恢复正常运行,将实施补偿计划,以纠正未来的时间,,需要多长时间仍然不得而知。与此同时,用户仍然可以依赖任何不联网的石英钟,或者通常通过互联网保持正确时间的电脑,智能手机时钟来查看时间。

                                      \r\n

                                      \"1024px-Digital-clock-alarm-796x562.jpg\"

                                      ', '', 'domestic', 'vr'), +(30, '

                                      北京时间4月11日早间消息,谷歌母公司Alphabet有望在2018进行新的投资,目前,该公司仍在研究如何优化电池的存储价值。作为世界上风能和太阳能的最大企业买家,谷歌可能很快要进行一项新的清洁能源投资,这次他们锁定的目标是电池。

                                      \r\n

                                      \"Solarpanel.jpg\"

                                      \r\n

                                      资料图

                                      \r\n

                                      本周二,Alphabet公司能源策略主管奈哈·帕尔默(Neha Palmer)在纽约彭博新能源财经机构举办的未来能源峰会上接受采访时说,“2018年我们想有所作为,我们正在对几个项目展开调研。”

                                      \r\n

                                      帕尔默指出,谷歌根据几个选项来决定合理的投资方向。其中一些项目包括:独立的可供给电网的电池场;用于家庭或企业的电表后端设备;一套与太阳能或风力发电场相连的系统。

                                      \r\n

                                      这一项目需要依靠一项长达数年的供应合同来保证营收,该公司仍在审查这种投资的市场需求。帕尔默说:“决策团队尚未搞清楚如何优化电力储存的价值。”

                                      ', NULL, 'domestic', 'ar'), +(32, '

                                      北京时间4月11日早间消息,谷歌母公司Alphabet有望在2018进行新的投资,目前,该公司仍在研究如何优化电池的存储价值。作为世界上风能和太阳能的最大企业买家,谷歌可能很快要进行一项新的清洁能源投资,这次他们锁定的目标是电池。

                                      \r\n

                                      \"Solarpanel.jpg\"

                                      \r\n

                                      资料图

                                      \r\n

                                      本周二,Alphabet公司能源策略主管奈哈·帕尔默(Neha Palmer)在纽约彭博新能源财经机构举办的未来能源峰会上接受采访时说,“2018年我们想有所作为,我们正在对几个项目展开调研。”

                                      \r\n

                                      帕尔默指出,谷歌根据几个选项来决定合理的投资方向。其中一些项目包括:独立的可供给电网的电池场;用于家庭或企业的电表后端设备;一套与太阳能或风力发电场相连的系统。

                                      \r\n

                                      这一项目需要依靠一项长达数年的供应合同来保证营收,该公司仍在审查这种投资的市场需求。帕尔默说:“决策团队尚未搞清楚如何优化电力储存的价值。”

                                      ', '', 'overseas', 'vr'), +(33, '

                                      据外媒报道,去年,GitHub 向安全研究人员支付了总计 166495 美元的奖励,针对 GitHub 这个为期四年的“漏洞赏金”项目,安全研究人员会上报自己发现的系统问题和漏洞。2016 年,GitHub 一共支付了81.7万美元,而去年的支出总额显然已经翻了一倍多,几乎相当于前三年的总支出(17.7万美元)。在 2014 和 2015 两年时间里,他们一共支付了95.3万美元的奖金。

                                      \r\n

                                      \r\n

                                      2017 年,GitHub 一共收到了 840 份漏洞报告意见书,但是最终解决问题并获得奖金的比例只有15%(约121份)。2016年,GitHub 共收到了 795 份漏洞报告意见书,最终获得奖励的只有 73 份,而其中只有 48 份有效报告最终被罗列在了漏洞赏金项目的主页上。

                                      \r\n

                                      有效报告的数量上升推动了总支出的增加,也导致了 GitHub 在去年十月重新评估其支付结构。结果就是,奖金增加了一倍,其中最低奖金为 555 美元,最高奖金高达 20000 美元。

                                      \r\n

                                      GitHub 的 Greg Ose 指出,随着参与的项目、计划和研究人员规模不断增加,去年是迄今为止支付赏金最多的一年。不仅如此,他们还把 GitHub Enterprise 引入到漏洞赏金项目之中,让研究人员能够在 GitHub.com 平台上一些未公开的、或是特定于某个企业部署的领域里找到漏洞。Ose说道:

                                      \r\n
                                      \r\n

                                      “去年年初,很多漏洞报告涉及到了我们的企业认证方法,这也促使我们不得不在内部关注这个问题,而且我们也在研究如何让研究人员也关注这个功能。”

                                      \r\n
                                      \r\n

                                      此外,Ose还表示,GitHub 已经发布了首个研究人员捐赠,也是他们长期以来关注的一项举措。这项工作会为挖掘应用程序特定功能或领域的研究人员支付固定金额。当然,其他任何发现漏洞的人也能够通过漏洞赏金项目获得奖励。

                                      \r\n

                                      去年,GitHub 还推出了私人漏洞补丁服务,让用户能够限制生产漏洞的影响范围。不仅如此,他们还进行了内部改进,以更有效进行漏洞分类和修复提交,并计划在今年进一步完善流程。

                                      \r\n

                                      现在,GitHub 希望进一步扩大 2017 年所取得成绩,推出更多私人奖励和研究补助金,以便在代码公开发布之前及之后引起大家的关注。该公司还计划在今年晚些时候,推出额外的奖励计划。Ose总结道:

                                      \r\n
                                      \r\n

                                      “鉴于漏洞赏金项目取得了成功,我们现在正考虑如何扩大其范围,为我们的生产服务提供更多帮助,同时保护整个GitHub生态系统。我们很期待下一步工作,并且会在今年对提交的漏洞内容进行分类和修正。”

                                      \r\n
                                      ', 'cnbeta1', 'overseas', 'ar'), +(34, '

                                      本周我们正在研究Leap Motion为增强现实带来的新东西。我们已经看到他们之前创造了一些令人难以置信的技术,尤其是当涉及到运动跟踪和控制时。现在看起来他们认为他们是以面向优先的方式进入AR增强现实世界。

                                      \r\n

                                      Leap Motion有一款在性能和外形之间达到平衡的头显,这款头显达到了Leap Motion所说最高技术规格所在的平衡点。换句话说,他们创造了一款人们可以使用的产品,与当今世界上大多数其他消费类产品不同。

                                      \r\n

                                      为了制造这款头显,Leap Motion的团队使用了几款5.5英寸的智能手机。他们将这些智能手机放在佩戴者脸部的两侧,并将其内部的图像反映出来。通过这种设置,最终他们发现他们需要创建自己的LED显示系统。他们决定采用Analogix显示驱动器和两个“快速切换”BOE 3.5英寸显示屏的架构。

                                      \r\n

                                      他们已经创造了一款头显,正如他们所描述的那样,它会让所有其他头显(VR,AR等)感到羞耻。两个120 fps,1600x1440显示屏,100+视角范围和150 fps手动追踪180 x 180度FOV,打开这个头显,当今系统的分辨率,等待时间和视野限制就会消失。

                                      \r\n

                                      那么你可以在哪里购买这种现代技术的奇迹?你不能。目前,Leap Motion将此项目称为“北极星计划”,并将其作为一个跳板点。他们正在使用这个项目来表明我们所有人都关注于AR硬件是错误的,他们的产品可以带来最佳体验。

                                      \r\n

                                      \r\n

                                      ', 'ks', 'domestic', 'ar'), +(35, '

                                      据外媒报道,研究人员正在利用VR技术帮助教师们了解自闭症学s生进而能够真正地去帮助他们。近日,来自马耳他大学的一个研究小组决定通过VR技术帮助教师理解自闭症儿童的生活体验。通过利用自闭症儿童的音频和视觉技巧,研究团队开发出一个VR应用,它能模拟出自闭症儿童在教室里的体验情况。

                                      \r\n

                                      \"austim.png\"

                                      \r\n

                                      参与了软件开发工作的马耳他大学人工智能系讲师Vanessa Camilleri博士表示,他们希望让教师走进自闭症儿童的世界里了解他们的真实情况同时也希望VR能够成为一台同理心机器。与此同时,他们还希望能从中学到更多的东西进而能设计出能帮助改善自闭症儿童生活质量的工具。

                                      \r\n

                                      实际上将VR作为一种共情工具的想法已经存在一段时间了。电影制作人Chris Milk就曾和联合国联合制作过一部展示叙利亚难民营生活的VR影片《Clouds Over Sidra》。

                                      \r\n

                                      目前,研究小组的这款软件还不能使用,但他们希望未来能通过Samsung Gear头套让教师们用上它。

                                      \r\n

                                      Camilleri还强调,该项目并不能做到模拟出自闭症儿童的各个方面,如嗅觉、触觉。另外他还表示,他们开发的应用更多的是让老师们去了解他们的学生而不是教授他们如何去帮助自闭症学生。

                                      \r\n

                                      获悉,该团队希望最终还能为父母或家庭成员开发出另一个不同版本的同类型软件。

                                      ', 'cnbeta', 'domestic', 'ar'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_addonproduct` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_addonproduct` ( + `id` int(10) NOT NULL, + `content` longtext NOT NULL, + `productdata` varchar(1500) DEFAULT '' COMMENT '产品列表', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='产品表' ROW_FORMAT=COMPACT; + +-- +-- 转存表中的数据 `__PREFIX__cms_addonproduct` +-- + +INSERT INTO `__PREFIX__cms_addonproduct` (`id`, `content`, `productdata`) VALUES +(18, '

                                      据外媒报道,去年,GitHub 向安全研究人员支付了总计 166495 美元的奖励,针对 GitHub 这个为期四年的“漏洞赏金”项目,安全研究人员会上报自己发现的系统问题和漏洞。2016 年,GitHub 一共支付了81.7万美元,而去年的支出总额显然已经翻了一倍多,几乎相当于前三年的总支出(17.7万美元)。在 2014 和 2015 两年时间里,他们一共支付了95.3万美元的奖金。

                                      \r\n

                                      \r\n

                                      2017 年,GitHub 一共收到了 840 份漏洞报告意见书,但是最终解决问题并获得奖金的比例只有15%(约121份)。2016年,GitHub 共收到了 795 份漏洞报告意见书,最终获得奖励的只有 73 份,而其中只有 48 份有效报告最终被罗列在了漏洞赏金项目的主页上。

                                      \r\n

                                      有效报告的数量上升推动了总支出的增加,也导致了 GitHub 在去年十月重新评估其支付结构。结果就是,奖金增加了一倍,其中最低奖金为 555 美元,最高奖金高达 20000 美元。

                                      \r\n

                                      GitHub 的 Greg Ose 指出,随着参与的项目、计划和研究人员规模不断增加,去年是迄今为止支付赏金最多的一年。不仅如此,他们还把 GitHub Enterprise 引入到漏洞赏金项目之中,让研究人员能够在 GitHub.com 平台上一些未公开的、或是特定于某个企业部署的领域里找到漏洞。Ose说道:

                                      \r\n
                                      \r\n

                                      “去年年初,很多漏洞报告涉及到了我们的企业认证方法,这也促使我们不得不在内部关注这个问题,而且我们也在研究如何让研究人员也关注这个功能。”

                                      \r\n
                                      \r\n

                                      此外,Ose还表示,GitHub 已经发布了首个研究人员捐赠,也是他们长期以来关注的一项举措。这项工作会为挖掘应用程序特定功能或领域的研究人员支付固定金额。当然,其他任何发现漏洞的人也能够通过漏洞赏金项目获得奖励。

                                      \r\n

                                      去年,GitHub 还推出了私人漏洞补丁服务,让用户能够限制生产漏洞的影响范围。不仅如此,他们还进行了内部改进,以更有效进行漏洞分类和修复提交,并计划在今年进一步完善流程。

                                      \r\n

                                      现在,GitHub 希望进一步扩大 2017 年所取得成绩,推出更多私人奖励和研究补助金,以便在代码公开发布之前及之后引起大家的关注。该公司还计划在今年晚些时候,推出额外的奖励计划。Ose总结道:

                                      \r\n
                                      \r\n

                                      “鉴于漏洞赏金项目取得了成功,我们现在正考虑如何扩大其范围,为我们的生产服务提供更多帮助,同时保护整个GitHub生态系统。我们很期待下一步工作,并且会在今年对提交的漏洞内容进行分类和修正。”

                                      \r\n
                                      ', 'https://cdn.fastadmin.net/uploads/20180401/1f059faa0ba3bb502d7dd012565321e2.jpg,https://cdn.fastadmin.net/uploads/20180401/05e374fd1f784f9c4f634889bd7028ac.jpg,https://cdn.fastadmin.net/uploads/20180401/fdaca158bf96ed0fd59879f2c7f673d3.jpg,https://cdn.fastadmin.net/uploads/20180401/33b63f123cdee4c251590b73c2464fa9.jpg'), +(23, '

                                      北京时间4月11日早间消息,谷歌母公司Alphabet有望在2018进行新的投资,目前,该公司仍在研究如何优化电池的存储价值。作为世界上风能和太阳能的最大企业买家,谷歌可能很快要进行一项新的清洁能源投资,这次他们锁定的目标是电池。

                                      \r\n

                                      \"Solarpanel.jpg\"

                                      \r\n

                                      资料图

                                      \r\n

                                      本周二,Alphabet公司能源策略主管奈哈·帕尔默(Neha Palmer)在纽约彭博新能源财经机构举办的未来能源峰会上接受采访时说,“2018年我们想有所作为,我们正在对几个项目展开调研。”

                                      \r\n

                                      帕尔默指出,谷歌根据几个选项来决定合理的投资方向。其中一些项目包括:独立的可供给电网的电池场;用于家庭或企业的电表后端设备;一套与太阳能或风力发电场相连的系统。

                                      \r\n

                                      这一项目需要依靠一项长达数年的供应合同来保证营收,该公司仍在审查这种投资的市场需求。帕尔默说:“决策团队尚未搞清楚如何优化电力储存的价值。”

                                      ', 'https://cdn.fastadmin.net/uploads/20180416/5ad4412a357f60.jpg,https://cdn.fastadmin.net/uploads/20180404/9dcbcd9ca1fce9f184ee12aea36351de.jpg,https://cdn.fastadmin.net/uploads/20180401/e5f3f6312c360f4c851daf99b1208515.jpg,https://cdn.fastadmin.net/uploads/20180401/26558a3bffe6960768350f2202885955.jpg,https://cdn.fastadmin.net/uploads/20180401/2d184becba222eb8406aadd72b004c5e.jpg,https://cdn.fastadmin.net/uploads/20180401/8cb318ead26ae66086953f1c0bcf0275.jpg'), +(28, '

                                      本周我们正在研究Leap Motion为增强现实带来的新东西。我们已经看到他们之前创造了一些令人难以置信的技术,尤其是当涉及到运动跟踪和控制时。现在看起来他们认为他们是以面向优先的方式进入AR增强现实世界。

                                      \r\n

                                      Leap Motion有一款在性能和外形之间达到平衡的头显,这款头显达到了Leap Motion所说最高技术规格所在的平衡点。换句话说,他们创造了一款人们可以使用的产品,与当今世界上大多数其他消费类产品不同。

                                      \r\n

                                      为了制造这款头显,Leap Motion的团队使用了几款5.5英寸的智能手机。他们将这些智能手机放在佩戴者脸部的两侧,并将其内部的图像反映出来。通过这种设置,最终他们发现他们需要创建自己的LED显示系统。他们决定采用Analogix显示驱动器和两个“快速切换”BOE 3.5英寸显示屏的架构。

                                      \r\n

                                      他们已经创造了一款头显,正如他们所描述的那样,它会让所有其他头显(VR,AR等)感到羞耻。两个120 fps,1600x1440显示屏,100+视角范围和150 fps手动追踪180 x 180度FOV,打开这个头显,当今系统的分辨率,等待时间和视野限制就会消失。

                                      \r\n

                                      那么你可以在哪里购买这种现代技术的奇迹?你不能。目前,Leap Motion将此项目称为“北极星计划”,并将其作为一个跳板点。他们正在使用这个项目来表明我们所有人都关注于AR硬件是错误的,他们的产品可以带来最佳体验。

                                      \r\n

                                      \r\n

                                      ', 'https://cdn.fastadmin.net/uploads/20180416/5ad44129495250.jpg'), +(29, '

                                      据外媒报道,研究人员正在利用VR技术帮助教师们了解自闭症学生进而能够真正地去帮助他们。近日,来自马耳他大学的一个研究小组决定通过VR技术帮助教师理解自闭症儿童的生活体验。通过利用自闭症儿童的音频和视觉技巧,研究团队开发出一个VR应用,它能模拟出自闭症儿童在教室里的体验情况。

                                      \r\n

                                      \"austim.png\"

                                      \r\n

                                      参与了软件开发工作的马耳他大学人工智能系讲师Vanessa Camilleri博士表示,他们希望让教师走进自闭症儿童的世界里了解他们的真实情况同时也希望VR能够成为一台同理心机器。与此同时,他们还希望能从中学到更多的东西进而能设计出能帮助改善自闭症儿童生活质量的工具。

                                      \r\n

                                      实际上将VR作为一种共情工具的想法已经存在一段时间了。电影制作人Chris Milk就曾和联合国联合制作过一部展示叙利亚难民营生活的VR影片《Clouds Over Sidra》。

                                      \r\n

                                      目前,研究小组的这款软件还不能使用,但他们希望未来能通过Samsung Gear头套让教师们用上它。

                                      \r\n

                                      Camilleri还强调,该项目并不能做到模拟出自闭症儿童的各个方面,如嗅觉、触觉。另外他还表示,他们开发的应用更多的是让老师们去了解他们的学生而不是教授他们如何去帮助自闭症学生。

                                      \r\n

                                      获悉,该团队希望最终还能为父母或家庭成员开发出另一个不同版本的同类型软件。

                                      ', 'https://cdn.fastadmin.net/uploads/20180416/5ad44128db3ed0.png'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_archives` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_archives` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `channel_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '栏目ID', + `model_id` int(10) NOT NULL DEFAULT '0' COMMENT '模型ID', + `title` varchar(80) NOT NULL DEFAULT '' COMMENT '文章标题', + `flag` set('hot','new','recommend') NOT NULL DEFAULT '' COMMENT '标志', + `image` varchar(255) NOT NULL DEFAULT '' COMMENT '缩略图', + `keywords` varchar(255) NOT NULL DEFAULT '' COMMENT '关键字', + `description` varchar(255) NOT NULL DEFAULT '' COMMENT '描述', + `tags` varchar(255) NOT NULL DEFAULT '' COMMENT 'TAG', + `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '权重', + `views` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '浏览次数', + `comments` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '评论次数', + `likes` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '点赞数', + `dislikes` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '点踩数', + `diyname` varchar(50) NOT NULL DEFAULT '' COMMENT '自定义URL', + `createtime` int(10) DEFAULT NULL COMMENT '创建时间', + `updatetime` int(10) DEFAULT NULL COMMENT '更新时间', + `publishtime` int(10) DEFAULT NULL COMMENT '发布时间', + `deletetime` int(10) DEFAULT NULL COMMENT '删除时间', + `status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态', + PRIMARY KEY (`id`), + KEY `status` (`channel_id`,`status`), + KEY `channel` (`channel_id`,`weigh`,`id`) +) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8 COMMENT='内容表' ROW_FORMAT=COMPACT; + +-- +-- 转存表中的数据 `__PREFIX__cms_archives` +-- + +INSERT INTO `__PREFIX__cms_archives` (`id`, `channel_id`, `model_id`, `title`, `flag`, `image`, `keywords`, `description`, `tags`, `weigh`, `views`, `comments`, `likes`, `dislikes`, `diyname`, `createtime`, `updatetime`, `publishtime`, `deletetime`, `status`) VALUES +(1, 7, 1, '驰为发布HiGame迷你PC新品 小身材大能量', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4412814b010.jpg', '驰为,笔记本,HiGame', '说到驰为(Chuwi),很多人第一时间想到的就是该公司的 Windows 笔记本或 Android 平板电脑。但是最近,该厂家又凭借 HiGame 子品牌进军了迷你游戏 PC 市场。作为一款迷你 PC,它的三围只有 17.3×15.8×7.3 CM(约 7×6×3 英寸)。即便如此,它的硬件配置也让我们眼前一亮。', 'HiGame,PC,驰为', 1, 9, 1, 0, 0, '', 1523718809, 1523879174, 1523635200, NULL, 'normal'), +(2, 7, 1, '宏碁Chromebox CXI3迷你台式机现已开放预定', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44127cc3810.jpg', '宏基,台式机', '今年 1 月的时候,宏碁(Acer)发布了多款新产品,其中就包括 Chromebox CXI3 。与 Chromebook 笔记本不同,Chromebox CXI3 是一款运行 Chrome OS 的小型台式机。不占地方,显然是它的最大卖点,用户甚至可以将它背挂到显示器后面。如果你想要拥有一台,那么现在宏碁也已经开放预定了。', 'Chromebox,台式机,宏基', 2, 20, 0, 0, 0, '', 1523718936, 1523879158, 1523635200, NULL, 'normal'), +(3, 7, 1, 'Misfit最新的混合动力手表Path现已上市', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44125f364e0.png', '手表,混合动力', 'Misfit的混合动力手表今天通过公司网站发售。它的售价为149.99美元,将有四种颜色可供选择:不锈钢,玫瑰金,黄金和带金色调的不锈钢。该公司首先在CES首次推出手表,在那里我们看到了这款小巧的新设备。这是该公司最小的手表 - 38毫米 - 并没有触摸屏,但它通过蓝牙与智能手机配对。', '智能手表,混合动力', 3, 2, 0, 0, 0, '', 1523719020, 1523879142, 1523635200, NULL, 'normal'), +(4, 7, 1, 'UE为现场演出者推出了价值2200美元的舞台耳返设备', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad441258ab510.png', '耳返,智能设备', '大多数消费者可能熟悉UE推出的色彩鲜艳的蓝牙音箱,但该公司也有一系列定制入耳式耳机,UE刚刚推出了一款新的顶级旗舰机型:2,200美元的UE Live。UE Live耳机是该公司以前的旗舰UE18 Pro型号的进化版本,将每个耳机的扬声器数量从6个增加到8个,共计6个平衡电枢,一个True Tone Plus驱动器和一个6mm钕制动态扬声器,以提供更好的声音。', '智能设备,耳返', 4, 3, 0, 1, 0, '', 1523719106, 1523879126, 1523635200, NULL, 'normal'), +(5, 7, 1, '南孚推出全球首款测电器装电池:可秒分电池新旧', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4412530fd08.jpg', '电池,南孚', '想必大家都遇到过这样尴尬的事情:家里有很多电池,用的时候也分不清哪个有电、哪个没电,扔了又怕浪费。于是旧的不丢掉,新的买来用,这样家里的电池越积攒越多,造成恶性循环。而现在,南孚带来了一款全新产品——南孚测电器装电池,包含南孚测电器和南孚碱性电池,轻轻松松测一测,电池电量一目了然。', '南孚,电池', 5, 2, 0, 0, 0, '', 1523719198, 1523879107, 1523635200, NULL, 'normal'), +(6, 7, 1, '强生将推能根据光线条件自动变色的隐形镜片', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44121af36d0.jpeg', '智能设备,强生', '据外媒报道,多年来,人们已经习惯于使用变色镜片的眼镜,然而这在隐形眼镜中却不存在。不过就在日前,强生终于打破了这个技术壁垒,这家公司宣布即将向市场推出具备变色功能的隐形镜片。', '智能设备', 6, 0, 0, 0, 0, '', 1523719286, 1523879078, 1523635200, NULL, 'normal'), +(7, 7, 1, 'Snap新一代Spectacles眼镜文档已被FCC曝光', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44121495860.jpg', '', '据 Variety 报道,FCC 辐射实验室刚刚证实了一副来自 Snap 的新眼镜。今日曝光的这款穿戴设备的文档称,这是一款由 Snap Inc. 制作的穿戴式视频拍摄装置。从印刷标签来看,其品牌名称为 Spectacles,型号为 Model 002 。尽管文件中所附的大部分内容都以保密为由被遮掩,但还是可以知道它支持低功耗蓝牙 4.2 和 802.11ac Wi-Fi 。', '智能设备,眼镜', 7, 2, 0, 1, 0, '', 1523719403, 1523879062, 1523635200, NULL, 'normal'), +(8, 5, 1, '投资者需求旺盛 Dropbox将IPO发行价区间调高2美元', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44120f16870.jpg', '', '云存储服务商Dropbox今日宣布,由于投资者需求强劲,现将IPO(数次公开招股)发行价区间调高2美元。上周一,Dropbox宣布将IPO发行价区间定为每股16美元至18美元,最高融资6.48亿美元,公司市值将达到约71亿美元。', 'dropbox,投资', 8, 1, 0, 0, 0, '', 1523719527, 1523879042, 1523635200, NULL, 'normal'), +(9, 5, 1, 'Dropbox股价上市首日大涨36% 市值超120亿美元', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44120cd28e0.jpg', '', '著名云存储服务提供商Dropbox在上市交易首日股价大涨36%,开盘定价为21美元每股,在当日最高时达到31.6美元每股,最终以28.48美元每股的价格收盘,现在市值超过120亿美元。可以明显看出公开市场投资者十分看好Dropbox这家主营业务为云存储服务和内容协作平台的公司。Dropbox最先对自己股价的预期是16到18美元每股,后来提升到18到20美元每股。而由于上市交易首日表现出色,超过了2014年私募时100亿美元的估值。', 'dropbox,投资', 9, 0, 0, 0, 0, '', 1523719610, 1523879028, 1523635200, NULL, 'normal'), +(10, 5, 1, '云存储公司Dropbox在美提交IPO申请:拟筹资5亿美元', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44120825a50.jpg', '', '云存储公司Dropbox周五向美国证券交易委员会(SEC)提交了IPO(首次公开招股)申请文件,寻求筹集5亿美元资金。Dropbox的IPO交易长期以来备受市场期待,该公司四年前在私募投资市场上的估值就已高达100亿美元。', 'dropbox', 10, 0, 0, 0, 0, '', 1523719716, 1523879000, 1523635200, NULL, 'normal'), +(11, 5, 1, '通用电气针对Predix云平台的创业者推出奖励计划', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad441204c1c20.png', '', '通用电气(GE)为推广Predix云平台的应用开发,在国内推出首期\"Predix星火计划\",以奖励基于该平台的工业互联网开发者。首期有4家企业获奖,将进驻GE孵化器并获得技术支持和潜在投资机会。', '云计算,互联网', 11, 0, 0, 0, 0, '', 1523719810, 1523878981, 1523635200, NULL, 'normal'), +(12, 5, 1, '超越Web服务 Cloudflare推出全新的Spectrum安全服务', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411fb836c0.png', '', '据外媒报道,Cloudflare 公司正将其业务拓展到网站和云应用之外的互联网安全领域。此前,Cloudflare 帮助过企业屏蔽恶意流量,并且让它们的线上内容加载得更加迅速。而根据今日披露的内容,这项新服务旨在保护那些在公共网络背景下运行的联网基础设施,涵盖了从企业内部电子邮件服务器、到领域内部署的联网设备等各个方面。', '云计算,安全', 12, 1, 0, 0, 0, '', 1523719980, 1523878966, 1523635200, NULL, 'normal'), +(13, 5, 1, '映泰Z390GT5主板手册曝光 英特尔Z390芯片组或即将到来 当', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411ecab1c0.jpg', '', '当英特尔上周推出更多更多 Coffee Lake CPU 和配套主板时,传说中的 Z390 芯片组却意外缺席了。不过有眼尖的人们发现,主板厂商映泰(Biostar)在自家 B360 Racing GT5 手册中,竟然清楚地列明了另一款名叫“Z390GT5”主板的存在。作为一个二线品牌,映泰的产品主打平价而不是古怪的设计。不过它与现有的 Z370 系列没有太大差别,而且最高支持的 CPU TDP 也仅为 95W,刚好够酷睿 i7-8700K 使用而已。', '智能设备', 13, 1, 0, 0, 0, '', 1523720694, 1523878951, 1523635200, NULL, 'normal'), +(14, 4, 1, '在数据黑箱和信赖危机面前 谁更应该战战兢兢?', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411e749b30.jpg', '', '4 月 11 日,Valve 宣布旗下著名的 PC 游戏发行平台 Steam 会推出新的用户数据隐私安全措施。今后玩家们可以选择隐藏你的游戏库内容,也可以隐藏你的活动细节,具体到最近收藏什么游戏,买了什么游戏,玩了什么游戏以及在某游戏上花了多少小时等等。', '安全', 14, 0, 0, 0, 0, '', 1523720913, 1523878935, 1523635200, NULL, 'normal'), +(15, 4, 1, 'Google Chrome和Mozilla Firefox将支持全新无密码登录规范', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411e3a7db0.png', '', '今天,W3C和FIDO联盟标准机构宣布,Web浏览器正在构建一种新的登录方式。这款名为WebAuthn所呈现的新开放标准将在最新版本的Firefox中得到支持,并将在未来几个月发布的Chrome和Edge的版本中得到支持。这是多年来的最新举措,目的是让用户远离密码,转向更安全的登录方式,如生物识别和USB令牌。', '互联网,安全', 15, 0, 0, 0, 0, '', 1523720991, 1523878915, 1523635200, NULL, 'normal'), +(16, 4, 1, 'GitHub 安全警告计划已检测出 400 多万个漏洞', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411db71750.png', '', 'Github 去年推出的安全警告,极大减少了开发人员消除 Ruby 和 JavaScript 项目漏洞的时间。GitHub 安全警告服务,可以搜索依赖寻找已知漏洞然后通过开发者,以便帮助开发者尽可能快的打上补丁修复漏洞,消除有漏洞的依赖或者转到安全版本。', '互联网,安全', 16, 0, 0, 0, 0, '', 1523721095, 1523878887, 1523635200, NULL, 'normal'), +(17, 4, 1, 'Windows 10杀毒软件大PK:Defender首入前三', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411cec01d0.jpg', '', 'AV-TEST公布了2018年1~2月杀毒软件的最新测试情况,稍稍有点不接地气的是,基于Windows 10企业版平台。排名第一的依然是铁打的卡巴斯基,3个满分总计18分无悬念。不过,这次Symantec和Trend Micro也是18满分,令人刮目相看。', '云计算,安全', 17, 1, 0, 0, 0, '', 1523721137, 1523878857, 1523635200, NULL, 'normal'), +(18, 10, 2, 'GitHub 去年为漏洞支付了 16.6 万美元赏金', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4412a798700.jpg', '', '据外媒报道,去年,GitHub 向安全研究人员支付了总计 166495 美元的奖励,针对 GitHub 这个为期四年的“漏洞赏金”项目,安全研究人员会上报自己发现的系统问题和漏洞。2016 年,GitHub 一共支付了81.7万美元,而去年的支出总额显然已经翻了一倍多,几乎相当于前三年的总支出(17.7万美元)。在 2014 和 2015 两年时间里,他们一共支付了95.3万美元的奖金。', '互联网,安全', 18, 21, 0, 1, 0, '', 1523721203, 1523895458, 1523635200, NULL, 'normal'), +(19, 3, 1, '谷歌发布“与书对话”检索引擎 从字里行间邂逅心仪书籍', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411b4c3960.jpg', '', '今日,谷歌分享了 Semantic Experiences,在博客中展示了两大关于自然语言理解的互动工具。Talk to Books 是一个可以从书中的句子层面搜索书籍的全新检索模式;另一个互动内容则是 Semantris,一个由机器学习驱动的单词联想游戏。', 'Google,互联网', 19, 3, 0, 0, 0, '', 1523721303, 1523878822, 1523635200, NULL, 'normal'), +(20, 3, 1, '节省40%搜索流量:Google Go轻量级应用将于非洲市场推出', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411b10d540.png', '', '针对新兴市场,Google希望通过Google Go轻量级应用帮助身处网络速度慢、流量资费高昂地区的用户获得更流畅的网络搜索体验。现在谷歌正向在26个撒哈拉以南非洲国家/地区推广,Google Go轻量级应用可以让搜索数据用流量减少40%,并且支持对以往搜索记录的脱机访问。', 'Google,互联网', 20, 0, 0, 0, 0, '', 1523721344, 1523878791, 1523635200, NULL, 'normal'), +(21, 3, 1, '谷歌公布Fuchsia文档:并非Linux内核 从头构建自己的库和组件', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411ab103e0.jpg', '', '尽管已经研发两年多时间,但对于Fuchsia系统Google始终缄口不言。不过今天,公司发表了名为“The Book”的深度解析文档,详细介绍了这款计划取代Android和Chrome OS的操作系统。 目前Android和Chrome OS都是使用Linux内核,不过在最新发布的文档中谷歌明确Fuchsia并非基于Linux内核。', 'Google,互联网', 21, 2, 0, 0, 0, '', 1523721408, 1523878779, 1523635200, NULL, 'normal'), +(22, 3, 1, '谷歌手机应用可直接过滤语音垃圾邮件', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4411a368920.jpg', '', '谷歌手机应用程序在2月份收到了主要更新,为快速通话控件添加了便捷的聊天功能。在接下来的几周里,Pixel,Nexus和Android One设备的默认拨号程序正在添加垃圾邮件过滤功能,并附带一个新的测试版程序,现在就可以试用该功能。', 'Google,互联网', 22, 2, 0, 0, 0, '', 1523721460, 1523878762, 1523635200, NULL, 'normal'), +(23, 10, 2, '谷歌母公司继续投资清洁能源领域:或押注于电池', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4412a357f60.jpg', '', '北京时间4月11日早间消息,谷歌母公司Alphabet有望在2018进行新的投资,目前,该公司仍在研究如何优化电池的存储价值。作为世界上风能和太阳能的最大企业买家,谷歌可能很快要进行一项新的清洁能源投资,这次他们锁定的目标是电池。', 'Google,互联网', 23, 28, 0, 0, 0, '', 1523721500, 1523895423, 1523635200, NULL, 'normal'), +(24, 3, 1, '谷歌携手美国医学协会 促进健康监测设备数据共享', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44119d944a0.png', '', '谷歌正在与美国医学协会(美国的一个医师游说团体)进行合作,双方达成一项挑战计划,其内容是让初创企业能够想出“促进健康监测设备数据共享的最佳新思路”。美国医学协会于周一表示,最终的挑战成果将会是一款手机应用或可穿戴设备。', 'Google,互联网', 24, 5, 0, 0, 0, '', 1523721555, 1523878724, 1523635200, NULL, 'normal'), +(25, 3, 1, '谷歌开源 iOS 自动测试框架 GTXiLib,主打无障碍使用', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad441196ddc60.png', '', '最近 Google 在帮助开发者提升 App 可用性上可谓是动作频频,不只发布了无障碍技术指导方案,成立无障碍支援团队,近日还在博客上宣布开源 iOS 专用的自动化测试框架 GTXiLib ,以帮助开发者打造无障碍 App 。', 'Google,互联网', 25, 7, 0, 0, 0, '', 1523754040, 1523878710, 1523721600, NULL, 'normal'), +(26, 4, 1, 'Let\'s Encrypt发布ACME v2 正式支持通配符证书', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44119326fd0.jpg', '', 'Let\'s Encrypt 宣布 ACME v2 正式支持通配符证书。Let\'s Encrypt 宣称将继续清除 Web 上采用 HTTPS 的障碍,让每个网站轻松获取管理证书。ACMEv21.6k 是 ACME 协议的更新版本,考虑到行业专家和其他组织可能希望在某天使用 ACME 协议进行证书颁发和管理,它已经通过 IETF 标准流程。', '互联网,安全', 26, 36, 0, 1, 0, '', 1523754142, 1523878676, 1523721600, NULL, 'normal'), +(27, 4, 1, '因为电网问题 欧洲的电子钟表运行缓慢超过一个月时间', 'recommend', 'https://cdn.fastadmin.net/uploads/20180416/5ad44118ca9c40.jpg', '', '欧洲电力传输系统运营商网络(ENTSOE)是建立内部能源市场并确保其最佳运作的机构,为解释欧洲的电子钟表运行缓慢超过一个月的原因发表了一份声明。在一篇引人入胜的题为“欧洲大陆的频率偏差对频率控制的电子钟表影响”新闻稿中,该组织解释说,频率偏差导致一些数字时钟滞后。', '互联网,安全', 27, 140, 7, 1, 0, '', 1523754196, 1523878659, 1523721600, NULL, 'normal'), +(28, 9, 2, 'Leap Motion AR头显看起来很疯狂但可能是奇迹', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44129495250.jpg', '', '本周我们正在研究Leap Motion为增强现实带来的新东西。我们已经看到他们之前创造了一些令人难以置信的技术,尤其是当涉及到运动跟踪和控制时。现在看起来他们认为他们是以面向优先的方式进入AR增强现实世界。', 'AR,VR,互联网', 28, 16, 0, 1, 0, '', 1523755374, 1523878629, 1523721600, NULL, 'normal'), +(29, 9, 2, '研究人员利用VR技术帮助教师更好了解自闭症学生', 'hot,new', 'https://cdn.fastadmin.net/uploads/20180416/5ad44128db3ed0.png', '', '据外媒报道,研究人员正在利用VR技术帮助教师们了解自闭症学生进而能够真正地去帮助他们。近日,来自马耳他大学的一个研究小组决定通过VR技术帮助教师理解自闭症儿童的生活体验。通过利用自闭症儿童的音频和视觉技巧,研究团队开发出一个VR应用,它能模拟出自闭症儿童在教室里的体验情况。', 'AR,互联网', 29, 33, 0, 0, 0, '', 1523755471, 1523878608, 1523721600, NULL, 'normal'), +(30, 3, 1, '谷歌母公司继续投资清洁能源领域:或押注于电池', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4412a357f60.jpg', '', '', '互联网,Google', 30, 6, 0, 0, 0, '', 1523895691, 1523895691, 1523894400, NULL, 'normal'), +(33, 3, 1, 'GitHub 去年为漏洞支付了 16.6 万美元赏金', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad4412a798700.jpg', '', '据外媒报道,去年,GitHub 向安全研究人员支付了总计 166495 美元的奖励,针对 GitHub 这个为期四年的“漏洞赏金”项目,安全研究人员会上报自己发现的系统问题和漏洞。2016 年,GitHub 一共支付了81.7万美元,而去年的支出总额显然已经翻了一倍多,几乎相当于前三年的总支出(17.7万美元)。在 2014 和 2015 两年时间里,他们一共支付了95.3万美元的奖金。', '互联网,安全', 33, 16, 0, 1, 1, '', 1523895893, 1523895893, 1523894400, NULL, 'normal'), +(34, 7, 1, 'Leap Motion AR头显看起来很疯狂但可能是奇迹', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44129495250.jpg', '', '本周我们正在研究Leap Motion为增强现实带来的新东西。我们已经看到他们之前创造了一些令人难以置信的技术,尤其是当涉及到运动跟踪和控制时。现在看起来他们认为他们是以面向优先的方式进入AR增强现实世界。', '互联网,AR', 34, 27, 0, 2, 0, '', 1523895990, 1523895990, 1523894400, NULL, 'normal'), +(35, 7, 1, '研究人员利用VR技术帮助教师更好了解自闭症学生', '', 'https://cdn.fastadmin.net/uploads/20180416/5ad44128db3ed0.png', '', '据外媒报道,研究人员正在利用VR技术帮助教师们了解自闭症学生进而能够真正地去帮助他们。近日,来自马耳他大学的一个研究小组决定通过VR技术帮助教师理解自闭症儿童的生活体验。通过利用自闭症儿童的音频和视觉技巧,研究团队开发出一个VR应用,它能模拟出自闭症儿童在教室里的体验情况。', '智能设备,AR', 35, 148, 0, 20, 14, '', 1523896040, 1523896040, 1523894400, NULL, 'normal'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_block` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_block` ( + `id` smallint(8) UNSIGNED NOT NULL AUTO_INCREMENT, + `type` varchar(30) NOT NULL DEFAULT '' COMMENT '类型', + `name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称', + `title` varchar(100) NOT NULL DEFAULT '' COMMENT '标题', + `image` varchar(100) NOT NULL DEFAULT '' COMMENT '图片', + `url` varchar(100) NOT NULL DEFAULT '' COMMENT '链接', + `content` mediumtext COMMENT '内容', + `createtime` int(10) DEFAULT NULL COMMENT '添加时间', + `updatetime` int(10) DEFAULT NULL COMMENT '更新时间', + `status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='区块表' ROW_FORMAT=COMPACT; + +-- +-- 转存表中的数据 `__PREFIX__cms_block` +-- + +INSERT INTO `__PREFIX__cms_block` (`id`, `type`, `name`, `title`, `image`, `url`, `content`, `createtime`, `updatetime`, `status`) VALUES +(1, 'focus', 'focus', '幻灯图片1', '/assets/addons/cms/img/focus/1.jpg', 'http://www.fastadmin.net', '111', 0, 0, 'normal'), +(2, 'focus', 'focus', '幻灯图片2', '/assets/addons/cms/img/focus/2.jpg', 'http://www.fastadmin.net', '222', 0, 0, 'normal'), +(3, 'focus', 'focus', '幻灯图片3', '/assets/addons/cms/img/focus/3.jpg', 'http://www.fastadmin.net', '333', 0, 0, 'normal'), +(4, 'other', 'contactus', '联系我们', '', '', '', 0, 0, 'normal'), +(6, 'other', 'footer', '底部链接', '', '', '
                                      \n
                                      \n \n
                                      \n

                                      © 2017. All Rights Reserved.
                                      \n FastAdmin\n
                                      \n

                                      \n
                                      \n
                                      \n
                                      \n \n
                                      \n \n
                                      \n
                                      \n \n
                                      \n
                                      \n
                                      \n
                                      \n
                                      \n \n \n \n
                                      \n
                                      ', 0, 0, 'normal'), +(7, 'other', 'bannerad', '通栏广告', '/assets/addons/cms/img/banner/1.jpg', 'http://www.fastadmin.net', '', 0, 0, 'normal'), +(8, 'other', 'sidebarad1', '边栏广告1', '/assets/addons/cms/img/sidebar/1.jpg', 'http://www.fastadmin.net', '', 0, 0, 'normal'), +(9, 'other', 'sidebarad2', '边栏广告2', '/assets/addons/cms/img/sidebar/2.jpg', 'http://www.fastadmin.net', '', 0, 0, 'normal'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_channel` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_channel` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `type` enum('channel','page','link','list') NOT NULL COMMENT '类型', + `model_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '模型ID', + `parent_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '父ID', + `name` varchar(30) NOT NULL DEFAULT '' COMMENT '名称', + `image` varchar(100) NOT NULL DEFAULT '' COMMENT '图片', + `flag` set('hot','new','recommend') DEFAULT '' COMMENT '标志', + `keywords` varchar(255) NOT NULL DEFAULT '' COMMENT '关键字', + `description` varchar(255) NOT NULL DEFAULT '' COMMENT '描述', + `diyname` varchar(30) NOT NULL DEFAULT '' COMMENT '自定义名称', + `outlink` varchar(255) NOT NULL DEFAULT '' COMMENT '外部链接', + `items` mediumint(8) UNSIGNED NOT NULL DEFAULT '0' COMMENT '文章数量', + `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '权重', + `channeltpl` varchar(100) NOT NULL DEFAULT '' COMMENT '栏目页模板', + `listtpl` varchar(100) NOT NULL DEFAULT '' COMMENT '列表页模板', + `showtpl` varchar(100) NOT NULL DEFAULT '' COMMENT '详情页模板', + `pagesize` smallint(5) NOT NULL DEFAULT '0' COMMENT '分页大小', + `createtime` int(10) DEFAULT NULL COMMENT '创建时间', + `updatetime` int(10) DEFAULT NULL COMMENT '更新时间', + `status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态', + PRIMARY KEY (`id`), + UNIQUE KEY `diyname` (`diyname`), + KEY `weigh` (`weigh`,`id`), + KEY `parent_id` (`parent_id`) +) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=utf8 COMMENT='栏目表' ROW_FORMAT=COMPACT; + +-- +-- 转存表中的数据 `__PREFIX__cms_channel` +-- + +INSERT INTO `__PREFIX__cms_channel` (`id`, `type`, `model_id`, `parent_id`, `name`, `image`, `flag`, `keywords`, `description`, `diyname`, `outlink`, `items`, `weigh`, `channeltpl`, `listtpl`, `showtpl`, `pagesize`, `createtime`, `updatetime`, `status`) VALUES +(1, 'channel', 1, 0, '新闻中心', '', '', '', '', 'news', '', 0, 9, 'channel.html', '', '', 10, 1508990697, 1508992553, 'normal'), +(2, 'channel', 1, 0, '产品中心', '', '', '', '', 'product', '', 0, 10, 'channel.html', '', '', 10, 1508992541, 1508992541, 'normal'), +(3, 'list', 1, 1, '互联网', '', 'recommend', '', '', 'internet', '', 8, 47, 'channel.html', 'list_news.html', 'show_news.html', 10, 1523718032, 1523718032, 'normal'), +(4, 'list', 1, 1, ' 安全', '', 'recommend', '', '', 'security', '', 8, 5, 'channel.html', 'list_news.html', 'show_news.html', 10, 1508990707, 1523720840, 'normal'), +(5, 'list', 1, 1, '投资', '', 'recommend', '', '', 'investment', '', 8, 8, 'channel.html', 'list_news.html', 'show_news.html', 10, 1508990716, 1523717837, 'normal'), +(7, 'list', 1, 1, '硬件', '', 'recommend', '', '', 'hardware', '', 9, 46, 'channel.html', 'list_news.html', 'show_news.html', 10, 1523717893, 1523717893, 'normal'), +(8, 'list', 2, 2, '可穿戴设备', '', '', '', '', 'wearable', '', 2, 4, 'channel.html', 'list_product.html', 'show_product.html', 10, 1508992598, 1523718084, 'normal'), +(9, 'list', 2, 2, 'VR/AR', '', '', '', '', 'vrar', '', 2, 7, 'channel.html', 'list_product.html', 'show_product.html', 10, 1508992623, 1523718179, 'normal'), +(10, 'list', 2, 2, '智能家居', '', 'recommend', '', '', 'smarthome', '', 2, 44, 'channel.html', 'list_product.html', 'show_product.html', 10, 1522157583, 1523718113, 'normal'), +(40, 'link', 1, 0, '关于我们', '', '', '', '', 'aboutus', '/cms/p/aboutus.html', 0, 1, 'channel.html', '', '', 10, 1508994681, 1508994681, 'normal'), +(41, 'link', 1, 0, '官网首页', '', '', '', '', 'official', 'http://www.fastadmin.net', 0, 6, 'channel.html', '', '', 10, 1508994753, 1508994753, 'normal'), +(42, 'link', 1, 0, '交流社区', '', '', '', '', 'forum', 'http://forum.fastadmin.net', 0, 3, 'channel.html', '', '', 10, 1508994772, 1508994772, 'normal'), +(43, 'link', 1, 0, '文档', '', '', '', '', 'docs', 'http://doc.fastadmin.net', 0, 2, 'channel.html', '', '', 10, 1508994788, 1508994788, 'normal'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_comment` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_comment` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '会员ID', + `type` enum('archives','page') NOT NULL DEFAULT 'archives' COMMENT '类型', + `aid` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '关联ID', + `pid` int(10) NOT NULL DEFAULT '0' COMMENT '父ID', + `content` text COMMENT '内容', + `comments` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '评论数', + `ip` varchar(50) NOT NULL DEFAULT '' COMMENT 'IP', + `useragent` varchar(255) NOT NULL DEFAULT '' COMMENT 'User Agent', + `subscribe` tinyint(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '订阅', + `createtime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间', + `updatetime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间', + `status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态', + PRIMARY KEY (`id`), + KEY `post_id` (`aid`,`pid`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='评论表' ROW_FORMAT=COMPACT; + +-- +-- 转存表中的数据 `__PREFIX__cms_comment` +-- + +INSERT INTO `__PREFIX__cms_comment` (`id`, `user_id`, `type`, `aid`, `pid`, `content`, `comments`, `ip`, `useragent`, `subscribe`, `createtime`, `updatetime`, `status`) VALUES +(1, 1, 'archives', 27, 0, '这是测试内容。', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 0, 1523758108, 1523758108, 'normal'), +(2, 1, 'archives', 27, 0, '我是测试评论内容。', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 0, 1523796231, 1523796231, 'normal'), +(3, 1, 'archives', 27, 2, '测试回复他人内容!', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 0, 1523796706, 1523796706, 'normal'), +(4, 1, 'archives', 27, 0, '测试评论内容', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 0, 1523805202, 1523805202, 'normal'), +(5, 1, 'archives', 27, 0, '测试评论内容', 0, '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 wechatdevtools/1.02.1804120 MicroMessenger/6.5.7 Language/zh_CN webview/', 0, 1523806163, 1523806163, 'normal'), +(6, 1, 'archives', 27, 0, '测试评论内容2', 0, '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 wechatdevtools/1.02.1804120 MicroMessenger/6.5.7 Language/zh_CN webview/', 0, 1523806277, 1523806277, 'normal'), +(7, 1, 'archives', 27, 0, '测试评论内容22', 0, '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 wechatdevtools/1.02.1804120 MicroMessenger/6.5.7 Language/zh_CN webview/', 0, 1523806323, 1523806323, 'normal'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_fields` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_fields` ( + `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT, + `model_id` int(10) NOT NULL DEFAULT '0' COMMENT '模型ID', + `name` char(30) NOT NULL DEFAULT '' COMMENT '名称', + `type` varchar(30) NOT NULL DEFAULT '' COMMENT '类型', + `title` varchar(30) NOT NULL DEFAULT '' COMMENT '标题', + `content` text COMMENT '内容', + `defaultvalue` varchar(100) NOT NULL DEFAULT '' COMMENT '默认值', + `rule` varchar(100) DEFAULT '' COMMENT '验证规则', + `msg` varchar(30) DEFAULT '0' COMMENT '错误消息', + `ok` varchar(30) DEFAULT '0' COMMENT '成功消息', + `tip` varchar(30) DEFAULT '' COMMENT '提示消息', + `decimals` tinyint(1) DEFAULT NULL COMMENT '小数点', + `length` mediumint(8) DEFAULT NULL COMMENT '长度', + `minimum` smallint(6) DEFAULT NULL COMMENT '最小数量', + `maximum` smallint(6) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大数量', + `extend` varchar(255) NOT NULL DEFAULT '' COMMENT '扩展信息', + `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '排序', + `createtime` int(10) DEFAULT NULL COMMENT '添加时间', + `updatetime` int(10) DEFAULT NULL COMMENT '更新时间', + `isfilter` tinyint(1) NOT NULL DEFAULT '0' COMMENT '筛选', + `status` enum('normal','hidden') NOT NULL COMMENT '状态', + PRIMARY KEY (`id`), + KEY `model_id` (`model_id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=140 DEFAULT CHARSET=utf8 COMMENT='模型字段表' ROW_FORMAT=COMPACT; + +-- +-- 转存表中的数据 `__PREFIX__cms_fields` +-- + +INSERT INTO `__PREFIX__cms_fields` (`id`, `model_id`, `name`, `type`, `title`, `content`, `defaultvalue`, `rule`, `msg`, `ok`, `tip`, `decimals`, `length`, `minimum`, `maximum`, `extend`, `weigh`, `createtime`, `updatetime`, `isfilter`, `status`) VALUES +(136, 1, 'author', 'string', '作者', 'value1|title1\r\nvalue2|title2', '', '', '', '', '', 0, 255, 0, 0, '', 136, 1508990735, 1508991985, 1, 'normal'), +(137, 1, 'area', 'select', '地区', 'domestic|国内\r\noverseas|国外\r\nlocal|本地', '', '', '', '', '', 0, 255, 0, 0, '', 137, 1508990746, 1523723221, 1, 'normal'), +(138, 1, 'device', 'radio', '设备', 'vr|智能设备\r\nar|虚拟设备', '', 'required', '', '', '', 0, 255, 0, 0, '', 138, 1508992093, 1508992093, 1, 'normal'), +(139, 2, 'productdata', 'images', '产品列表', 'value1|title1\r\nvalue2|title2', '', 'required', '', '', '', 0, 1500, 0, 20, '', 139, 1508992518, 1508992518, 1, 'normal'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_model` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_model` ( + `id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` char(30) NOT NULL DEFAULT '' COMMENT '模型名称', + `table` char(20) NOT NULL DEFAULT '' COMMENT '表名', + `fields` text COMMENT '字段列表', + `channeltpl` varchar(30) NOT NULL DEFAULT '' COMMENT '栏目页模板', + `listtpl` varchar(30) NOT NULL DEFAULT '' COMMENT '列表页模板', + `showtpl` varchar(30) NOT NULL DEFAULT '' COMMENT '详情页模板', + `createtime` int(10) DEFAULT NULL COMMENT '创建时间', + `updatetime` int(10) DEFAULT NULL COMMENT '更新时间', + `setting` text COMMENT '模型配置', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='内容模型表' ROW_FORMAT=COMPACT; + +-- +-- 转存表中的数据 `__PREFIX__cms_model` +-- + +INSERT INTO `__PREFIX__cms_model` (`id`, `name`, `table`, `fields`, `channeltpl`, `listtpl`, `showtpl`, `createtime`, `updatetime`, `setting`) VALUES +(1, '新闻', 'cms_addonnews', 'author,area,device', 'channel.html', 'list_news.html', 'show_news.html', 1508990659, 1523723221, ''), +(2, '产品', 'cms_addonproduct', 'productdata', 'channel.html', 'list_product.html', 'show_product.html', 1508992445, 1508992445, ''); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_page` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_page` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', + `category_id` int(10) NOT NULL DEFAULT '0' COMMENT '分类ID', + `type` varchar(50) NOT NULL DEFAULT '' COMMENT '类型', + `title` varchar(50) NOT NULL DEFAULT '' COMMENT '标题', + `keywords` varchar(255) NOT NULL DEFAULT '' COMMENT '关键字', + `description` varchar(255) NOT NULL DEFAULT '' COMMENT '描述', + `flag` set('hot','index','recommend') NOT NULL DEFAULT '' COMMENT '标志', + `image` varchar(255) NOT NULL DEFAULT '' COMMENT '头像', + `content` text COMMENT '内容', + `icon` varchar(50) NOT NULL DEFAULT '' COMMENT '图标', + `views` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '点击', + `comments` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '评论', + `diyname` varchar(50) NOT NULL DEFAULT '' COMMENT '自定义', + `showtpl` varchar(50) NOT NULL DEFAULT '' COMMENT '视图模板', + `createtime` int(10) DEFAULT NULL COMMENT '创建时间', + `updatetime` int(10) DEFAULT NULL COMMENT '更新时间', + `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '权重', + `status` varchar(30) NOT NULL DEFAULT '' COMMENT '状态', + PRIMARY KEY (`id`), + KEY `type` (`type`) +) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COMMENT='单页表' ROW_FORMAT=COMPACT; + +-- +-- 转存表中的数据 `__PREFIX__cms_page` +-- + +INSERT INTO `__PREFIX__cms_page` (`id`, `category_id`, `type`, `title`, `keywords`, `description`, `flag`, `image`, `content`, `icon`, `views`, `comments`, `diyname`, `showtpl`, `createtime`, `updatetime`, `weigh`, `status`) VALUES +(28, 0, 'page', '基于ThinkPHP5和Bootstrap的极速后台开发框架', '', '', '', 'fds', '

                                      基于ThinkPHP5和Bootstrap进行二次开发,手机、平板、PC均自动适配,无需要担心兼容性问题

                                      ', '', 0, 0, 'aboutus', 'page', 1508933935, 1508934150, 28, 'normal'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `__PREFIX__cms_tags` +-- + +CREATE TABLE IF NOT EXISTS `__PREFIX__cms_tags` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL DEFAULT '' COMMENT '标签名称', + `archives` text COMMENT '文档ID集合', + `nums` int(10) UNSIGNED NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) USING BTREE, + KEY `nums` (`nums`) +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COMMENT='标签表'; + +-- +-- 转存表中的数据 `__PREFIX__cms_tags` +-- + +INSERT INTO `__PREFIX__cms_tags` (`id`, `name`, `archives`, `nums`) VALUES +(1, '驰为', '1', 1), +(2, 'HiGame', '1', 1), +(3, 'PC', '1', 1), +(4, '宏基', '2', 1), +(5, '台式机', '2', 1), +(6, 'Chromebox', '2', 1), +(7, '智能手表', '3', 1), +(8, '混合动力', '3', 1), +(9, '耳返', '4', 1), +(10, '智能设备', '4,6,7,13,35', 5), +(11, '电池', '5', 1), +(12, '南孚', '5', 1), +(13, '眼镜', '7', 1), +(14, 'dropbox', '8,9,10', 3), +(15, '投资', '8,9', 2), +(16, '互联网', '11,15,16,18,19,20,21,22,23,24,25,26,27,28,29,32,31,33,34', 19), +(17, '云计算', '11,12,17', 3), +(18, '安全', '12,14,15,16,17,18,26,27,33', 9), +(19, 'Google', '19,20,21,22,23,24,25,32,31', 9), +(20, 'AR', '28,29,34,35', 4), +(21, 'VR', '28', 1); +COMMIT; \ No newline at end of file diff --git a/addons/cms/lang/zh-cn.php b/addons/cms/lang/zh-cn.php new file mode 100644 index 000000000..44bc7d208 --- /dev/null +++ b/addons/cms/lang/zh-cn.php @@ -0,0 +1,49 @@ + '首页', + 'Default' => '默认', + 'Views' => '浏览次数', + 'Post date' => '发布日期', + 'All' => '全部', + 'Hot news' => '热门资讯', + 'Hot tags' => '热门标签', + 'Recommend news' => '推荐资讯', + 'Comments' => '评论', + 'Tags' => '标签', + 'View more' => '查看更多', + 'View detail' => '查看详情', + 'Month' => '月', + 'Prev' => '上一篇', + 'Next' => '下一篇', + 'Comment list' => '评论列表', + 'Favourite' => '收藏', + 'Share' => '分享', + 'Report' => '举报', + 'Error report' => '错误反馈', + 'Recently update' => '最新更新', + 'All categories' => '所有分类', + 'Article category' => '本文分类', + 'Article tags' => '本文标签', + 'Article views' => '浏览次数', + 'Article url' => '本文链接', + 'Search for %s' => '查找 “%s”', + 'Search more %s' => '查找更多 “%s”', + 'Empty' => '暂无内容', + 'No specified article found' => '未找到指定的文章', + 'No specified channel found' => '未找到指定的栏目', + 'No specified model found' => '未找到指定的模型', + 'No specified tags found' => '未找到指定的标签', + 'No specified addon article found' => '未找到指定副表数据', + 'Operation completed' => '操作成功!', + 'Operation failed' => '操作失败!', + 'Unknown data format' => '未知的数据格式!', + 'Network error' => '网络错误!', + '%d second%s ago' => '%d秒前', + '%d minute%s ago' => '%d分钟前', + '%d hour%s ago' => '%d小时前', + '%d day%s ago' => '%d天前', + '%d week%s ago' => '%d周前', + '%d month%s ago' => '%d月前', + '%d year%s ago' => '%d年前' +]; diff --git a/addons/cms/library/Alter.php b/addons/cms/library/Alter.php new file mode 100644 index 000000000..27837f78b --- /dev/null +++ b/addons/cms/library/Alter.php @@ -0,0 +1,176 @@ + '', + 'oldname' => '', + 'name' => '', + 'type' => 'VARCHAR', + 'length' => '255', + 'content' => '', + 'comment' => '', + 'after' => '', + ]; + + public function __construct($options = []) + { + $this->options = array_merge($this->config, $options); + } + + public static function instance($options = []) + { + if (is_null(self::$instance)) { + self::$instance = new static($options); + } + + return self::$instance; + } + + public function setTable($table) + { + $this->data['table'] = db()->name($table)->getTable(); + return $this; + } + + public function setType($type) + { + switch ($type) { + case 'checkbox': + case 'selects': + $this->data['type'] = 'SET'; + break; + case 'radio': + case 'select': + $this->data['type'] = 'ENUM'; + break; + case 'number': + $this->data['type'] = 'INT'; + break; + case 'date': + case 'datetime': + case 'time': + $this->data['type'] = strtoupper($type); + break; + case 'editor': + $this->data['type'] = 'TEXT'; + break; + default: + $this->data['type'] = 'VARCHAR'; + break; + } + return $this; + } + + public function setOldname($oldname) + { + $this->data['oldname'] = $oldname; + return $this; + } + + public function setName($name) + { + $this->data['name'] = $name; + return $this; + } + + public function setLength($length) + { + $this->data['length'] = $length; + return $this; + } + + public function setContent($content) + { + $this->data['content'] = $content; + return $this; + } + + public function setComment($comment) + { + $this->data['comment'] = $comment; + return $this; + } + + public function setDefaultvalue($defaultvalue) + { + $this->data['defaultvalue'] = $defaultvalue; + return $this; + } + + public function setDecimals($decimals) + { + $this->data['decimals'] = $decimals; + return $this; + } + + protected function process() + { + if ($this->data['type'] == 'INT') { + if ($this->data['decimals'] > 0) { + $this->data['type'] = 'DECIMAL'; + $this->data['length'] = "({$this->data['length']},{$this->data['decimals']})"; + } else { + $this->data['length'] = "({$this->data['length']})"; + } + } else if (in_array($this->data['type'], ['SET', 'ENUM'])) { + $content = \app\common\model\Config::decode($this->data['content']); + $this->data['length'] = "('" . implode("','", array_keys($content)) . "')"; + $this->data['defaultvalue'] = in_array($this->data['defaultvalue'], array_keys($content)) ? $this->data['defaultvalue'] : ($this->data['type'] == 'ENUM' ? key($content) : ''); + } else if (in_array($this->data['type'], ['DATE', 'TIME', 'DATETIME'])) { + $this->data['length'] = ''; + $this->data['defaultvalue'] = "NULL"; + } else if (in_array($this->data['type'], ['TEXT'])) { + $this->data['length'] = "(0)"; + $this->data['defaultvalue'] = 'NULL'; + } else { + $this->data['length'] = "({$this->data['length']})"; + } + $this->data['defaultvalue'] = strtoupper($this->data['defaultvalue']) === 'NULL' ? "NULL" : "'{$this->data['defaultvalue']}'"; + } + + /** + * 获取添加字段的SQL + * @return string + */ + public function getAddSql() + { + $this->process(); + + $sql = "ALTER TABLE `{$this->data['table']}` " + . "ADD `{$this->data['name']}` {$this->data['type']} {$this->data['length']} " + . "DEFAULT {$this->data['defaultvalue']} " + . "COMMENT '{$this->data['comment']}' " + . ($this->data['after'] ? "AFTER `{$this->data['after']}`" : ''); + return $sql; + } + + public function getModifySql() + { + $this->process(); + + $sql = "ALTER TABLE `{$this->data['table']}` " + . ($this->data['oldname'] ? 'CHANGE' : 'MODIFY') . " COLUMN " . ($this->data['oldname'] ? "`{$this->data['oldname']}`" : '') . " `{$this->data['name']}` {$this->data['type']} {$this->data['length']} " + . "DEFAULT {$this->data['defaultvalue']} " + . "COMMENT '{$this->data['comment']}' " + . ($this->data['after'] ? "AFTER `{$this->data['after']}`" : ''); + return $sql; + } + + /** + * 获取删除字段的SQL + * @return string + */ + public function getDropSql() + { + $sql = "ALTER TABLE `{$this->data['table']}` " + . "DROP `{$this->data['name']}`"; + return $sql; + } + +} diff --git a/addons/cms/library/Bootstrap.php b/addons/cms/library/Bootstrap.php new file mode 100644 index 000000000..968503adf --- /dev/null +++ b/addons/cms/library/Bootstrap.php @@ -0,0 +1,210 @@ + +// +---------------------------------------------------------------------- + +namespace addons\cms\library; + +use think\Paginator; + +class Bootstrap extends Paginator +{ + + /** + * 上一页按钮 + * @param string $text + * @return string + */ + protected function getPreviousButton($text = "«") + { + + if ($this->currentPage() <= 1) { + return $this->getDisabledTextWrapper($text); + } + + $url = $this->url( + $this->currentPage() - 1 + ); + + return $this->getPageLinkWrapper($url, $text); + } + + /** + * 下一页按钮 + * @param string $text + * @return string + */ + protected function getNextButton($text = '»') + { + if (!$this->hasMore) { + return $this->getDisabledTextWrapper($text); + } + + $url = $this->url($this->currentPage() + 1); + + return $this->getPageLinkWrapper($url, $text); + } + + /** + * 页码按钮 + * @return string + */ + protected function getLinks() + { + if ($this->simple) + return ''; + + $block = [ + 'first' => null, + 'slider' => null, + 'last' => null + ]; + + $side = 3; + $window = $side * 2; + + if ($this->lastPage < $window + 6) { + $block['first'] = $this->getUrlRange(1, $this->lastPage); + } elseif ($this->currentPage <= $window) { + $block['first'] = $this->getUrlRange(1, $window + 2); + $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage); + } elseif ($this->currentPage > ($this->lastPage - $window)) { + $block['first'] = $this->getUrlRange(1, 2); + $block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage); + } else { + $block['first'] = $this->getUrlRange(1, 2); + $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side); + $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage); + } + + $html = ''; + + if (is_array($block['first'])) { + $html .= $this->getUrlLinks($block['first']); + } + + if (is_array($block['slider'])) { + $html .= $this->getDots(); + $html .= $this->getUrlLinks($block['slider']); + } + + if (is_array($block['last'])) { + $html .= $this->getDots(); + $html .= $this->getUrlLinks($block['last']); + } + + return $html; + } + + /** + * 渲染分页html + * @return mixed + */ + public function render($params = null) + { + if(is_array($params)){ + if(isset($params['type'])){ + $this->simple = $params['type'] === 'simple'; + } + } + if ($this->hasPages()) { + if ($this->simple) { + return sprintf( + '
                                        %s %s
                                      ', + $this->getPreviousButton(), + $this->getNextButton() + ); + } else { + return sprintf( + '
                                        %s %s %s
                                      ', + $this->getPreviousButton(), + $this->getLinks(), + $this->getNextButton() + ); + } + } + } + + /** + * 生成一个可点击的按钮 + * + * @param string $url + * @param int $page + * @return string + */ + protected function getAvailablePageWrapper($url, $page) + { + return '
                                    • ' . $page . '
                                    • '; + } + + /** + * 生成一个禁用的按钮 + * + * @param string $text + * @return string + */ + protected function getDisabledTextWrapper($text) + { + return '
                                    • ' . $text . '
                                    • '; + } + + /** + * 生成一个激活的按钮 + * + * @param string $text + * @return string + */ + protected function getActivePageWrapper($text) + { + return '
                                    • ' . $text . '
                                    • '; + } + + /** + * 生成省略号按钮 + * + * @return string + */ + protected function getDots() + { + return $this->getDisabledTextWrapper('...'); + } + + /** + * 批量生成页码按钮. + * + * @param array $urls + * @return string + */ + protected function getUrlLinks(array $urls) + { + $html = ''; + + foreach ($urls as $page => $url) { + $html .= $this->getPageLinkWrapper($url, $page); + } + + return $html; + } + + /** + * 生成普通页码按钮 + * + * @param string $url + * @param int $page + * @return string + */ + protected function getPageLinkWrapper($url, $page) + { + if ($page == $this->currentPage()) { + return $this->getActivePageWrapper($page); + } + + return $this->getAvailablePageWrapper($url, $page); + } +} diff --git a/addons/cms/model/Archives.php b/addons/cms/model/Archives.php new file mode 100644 index 000000000..1225228b7 --- /dev/null +++ b/addons/cms/model/Archives.php @@ -0,0 +1,318 @@ +data = array_merge($this->data, $data); + return $this; + } + + protected static function init() + { + $config = get_addon_config('cms'); + self::$config = $config; + } + + public function getCreateDateAttr($value, $data) + { + return human_date($data['createtime']); + } + + public function getImageAttr($value, $data) + { + $value = $value ? $value : self::$config['default_archives_img']; + return cdnurl($value, true); + } + + public function getTagslistAttr($value, $data) + { + $list = []; + foreach (array_filter(explode(",", $data['tags'])) as $k => $v) { + $list[] = ['name' => $v, 'url' => addon_url('cms/tags/index', [':name' => $v])]; + } + return $list; + } + + public function getUrlAttr($value, $data) + { + $diyname = $data['diyname'] ? $data['diyname'] : $data['id']; + return addon_url('cms/archives/index', [':id' => $data['id'], ':diyname' => $diyname, ':channel' => $data['channel_id']]); + } + + public function getFullUrlAttr($value, $data) + { + $diyname = $data['diyname'] ? $data['diyname'] : $data['id']; + return addon_url('cms/archives/index', [':id' => $data['id'], ':diyname' => $diyname, ':channel' => $data['channel_id']], true, true); + } + + public function getLikeratioAttr($value, $data) + { + return ($data['dislikes'] > 0 ? min(1, $data['likes'] / ($data['dislikes'] + $data['likes'])) : ($data['likes'] ? 1 : 0.5)) * 100; + } + + /** + * 获取文档列表 + * @param $tag + * @return array|false|\PDOStatement|string|\think\Collection + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function getArchivesList($tag) + { + $type = empty($tag['type']) ? '' : $tag['type']; + $model = !isset($tag['model']) ? '' : $tag['model']; + $channel = !isset($tag['channel']) ? '' : $tag['channel']; + $tags = empty($tag['tags']) ? '' : $tag['tags']; + $condition = empty($tag['condition']) ? '' : $tag['condition']; + $field = empty($params['field']) ? '*' : $params['field']; + $flag = empty($tag['flag']) ? '' : $tag['flag']; + $row = empty($tag['row']) ? 10 : (int)$tag['row']; + $orderby = empty($tag['orderby']) ? 'createtime' : $tag['orderby']; + $orderway = empty($tag['orderway']) ? 'desc' : strtolower($tag['orderway']); + $limit = empty($tag['limit']) ? $row : $tag['limit']; + $cache = !isset($tag['cache']) ? true : (int)$tag['cache']; + $imgwidth = empty($tag['imgwidth']) ? '' : $tag['imgwidth']; + $imgheight = empty($tag['imgheight']) ? '' : $tag['imgheight']; + $addon = empty($tag['addon']) ? false : $tag['addon']; + $orderway = in_array($orderway, ['asc', 'desc']) ? $orderway : 'desc'; + $where = ['status' => 'normal']; + + $where['deletetime'] = ['exp', Db::raw('IS NULL')]; //by erastudio + if ($model !== '') { + $where['model_id'] = ['in', $model]; + } + if ($channel !== '') { + $where['channel_id'] = ['in', $channel]; + } + //如果有设置标志,则拆分标志信息并构造condition条件 + if ($flag !== '') { + if (stripos($flag, '&') !== false) { + $arr = []; + foreach (explode('&', $flag) as $k => $v) { + $arr[] = "FIND_IN_SET('{$v}', flag)"; + } + if ($arr) + $condition .= "(" . implode(' AND ', $arr) . ")"; + } else { + $condition .= ($condition ? ' AND ' : ''); + $arr = []; + foreach (array_merge(explode(',', $flag), explode('|', $flag)) as $k => $v) { + $arr[] = "FIND_IN_SET('{$v}', flag)"; + } + if ($arr) + $condition .= "(" . implode(' OR ', $arr) . ")"; + } + } + $order = $orderby == 'rand' ? 'rand()' : (in_array($orderby, ['createtime', 'updatetime', 'views', 'weigh', 'id']) ? "{$orderby} {$orderway}" : "createtime {$orderway}"); + + $archivesModel = self::with('channel'); + // 如果有筛选标签,则采用子查询 + if ($tags) { + $tagsList = Tags::where('name', 'in', explode(',', $tags))->cache($cache)->limit($limit)->select(); + $archives = []; + foreach ($tagsList as $k => $v) { + $archives = array_merge($archives, explode(',', $v['archives'])); + } + if ($archives) { + $archivesModel->where('id', 'in', $archives); + } + } + $list = $archivesModel + ->where($where) + ->where($condition) + ->field($field) + ->cache($cache) + ->order($order) + ->limit($limit) + ->select(); + //$list = collection($list)->toArray(); + //如果有设置附表和模型(或栏目),则查询副表的数据 + if ($addon && (is_numeric($model) || $channel)) { + if ($channel) { + //如果channel设置了多个值则只取第一个作为判断 + $channelArr = explode(',', $channel); + $channelinfo = Channel::get($channelArr[0]); + $model = $channelinfo ? $channelinfo['model_id'] : $model; + } + // 查询相关联的模型信息 + $modelInfo = Modelx::get($model, [], true); + if ($modelInfo) { + $query = Db::name($modelInfo['table']); + if ($addon == 'true') { + $query->field('content', true); + } else { + $query->field($addon); + } + $addonList = $query + ->where('id', 'in', array_map(function ($value) { + return $value['id']; + }, $list)) + ->cache($cache) + ->select(); + $fieldsContentList = []; + if ($modelInfo->fields) { + $fieldsContentList = $modelInfo->getFieldsContentList($modelInfo->id); + } + + //循环主表 + foreach ($list as $index => &$item) { + //循环副表 + foreach ($addonList as $subindex => $subitem) { + if ($subitem['id'] == $item['id']) { + array_walk($fieldsContentList, function ($content, $field) use (&$subitem) { + $subitem[$field . '_text'] = isset($content[$subitem[$field]]) ? $content[$subitem[$field]] : $subitem[$field]; + }); + //$item = array_merge($item, $subitem); + $item->setData($subitem); + unset($addonList[$subindex]); + continue 2; + } + } + //副表错误的数据将会被忽略 + unset($list[$index]); + } + unset($item); + } + } + + self::render($list, $imgwidth, $imgheight); + return $list; + } + + /** + * 渲染数据 + * @param array $list + * @param int $imgwidth + * @param int $imgheight + * @return array + */ + public static function render(&$list, $imgwidth, $imgheight) + { + $width = $imgwidth ? 'width="' . $imgwidth . '"' : ''; + $height = $imgheight ? 'height="' . $imgheight . '"' : ''; + foreach ($list as $k => &$v) { + $v['hasimage'] = $v['image'] ? true : false; + $v['textlink'] = '' . $v['title'] . ''; + $v['channellink'] = '' . $v['channel']['name'] . ''; + $v['imglink'] = ''; + $v['img'] = ''; + } + return $list; + } + + /** + * 获取分页列表 + * @param array $list + * @param array $tag + * @return array + */ + public static function getPageList($list, $tag) + { + $imgwidth = empty($tag['imgwidth']) ? '' : $tag['imgwidth']; + $imgheight = empty($tag['imgheight']) ? '' : $tag['imgheight']; + return self::render($list, $imgwidth, $imgheight); + } + + /** + * 获取分页信息 + * @param array $list + * @param array $tag + * @return string + */ + public static function getPageInfo($list, $tag) + { + return ''; + } + + /** + * 获取分页过滤 + * @param array $list + * @param array $tag + * @return array + */ + public static function getPageFilter($list, $tag) + { + $exclude = empty($tag['exclude']) ? '' : $tag['exclude']; + return $list; + } + + /** + * 获取分页排序 + * @param array $list + * @param array $tag + * @return array + */ + public static function getPageOrder($list, $tag) + { + $exclude = empty($tag['exclude']) ? '' : $tag['exclude']; + return $list; + } + + /** + * 获取上一页下一页 + * @param string $type + * @param string $archives + * @param string $channel + * @return array + */ + public static function getPrevNext($type, $archives, $channel) + { + $model = self::where('id', $type === 'prev' ? '<' : '>', $archives)->where('status', 'normal'); + if ($channel !== '') { + $model->where('channel_id', 'in', $channel); + } + $model->order($type === 'prev' ? 'id desc' : 'id asc'); + $row = $model->find(); + return $row; + } + + /** + * 关联栏目模型 + */ + public function channel() + { + return $this->belongsTo("Channel")->field('id,name,image,diyname,items')->setEagerlyType(1); + } + +} diff --git a/addons/cms/model/Block.php b/addons/cms/model/Block.php new file mode 100644 index 000000000..c5f2b13eb --- /dev/null +++ b/addons/cms/model/Block.php @@ -0,0 +1,109 @@ +where($condition) + ->field($field) + ->order($order) + ->limit($limit) + ->cache($cache) + ->select(); + self::render($list, $imgwidth, $imgheight); + return $list; + } + + public static function render(&$list, $imgwidth, $imgheight) + { + $width = $imgwidth ? 'width="' . $imgwidth . '"' : ''; + $height = $imgheight ? 'height="' . $imgheight . '"' : ''; + foreach ($list as $k => &$v) { + $v['hasimage'] = $v->getData('image') ? true : false; + $v['textlink'] = '' . $v['title'] . ''; + $v['imglink'] = ''; + $v['img'] = ''; + } + return $list; + } + + public static function getBlockContent($params) + { + $field = isset($params['id']) ? 'id' : 'name'; + $value = isset($params[$field]) ? $params[$field] : ''; + $cache = !isset($params['cache']) ? true : (int)$params['cache']; + $row = self::where($field, $value) + ->cache($cache) + ->find(); + $result = ''; + if ($row) { + if ($row['content']) { + $result = $row['content']; + } else if ($row['image']) { + $result = ''; + } else { + $result = $row['title']; + } + if ($row['url'] && !$row['content']) { + $result = $row['url'] ? '' . $result . '' : $result; + } + } + return $result; + } + +} diff --git a/addons/cms/model/Channel.php b/addons/cms/model/Channel.php new file mode 100644 index 000000000..f2d434637 --- /dev/null +++ b/addons/cms/model/Channel.php @@ -0,0 +1,253 @@ +belongsTo("Modelx"); + } + + public function getUrlAttr($value, $data) + { + $diyname = $data['diyname'] ? $data['diyname'] : $data['id']; + return isset($data['type']) && isset($data['outlink']) && $data['type'] == 'link' ? $data['outlink'] : addon_url('cms/channel/index', [':id' => $data['id'], ':diyname' => $diyname]); + } + + public function getFullurlAttr($value, $data) + { + $diyname = $data['diyname'] ? $data['diyname'] : $data['id']; + return isset($data['type']) && isset($data['outlink']) && $data['type'] == 'link' ? $data['outlink'] : addon_url('cms/channel/index', [':id' => $data['id'], ':diyname' => $diyname], true, true); + } + + public function getImageAttr($value, $data) + { + $value = $value ? $value : self::$config['default_channel_img']; + return cdnurl($value); + } + + public function getHasChildAttr($value, $data) + { + static $checked = []; + if (isset($checked[$data['id']])) { + return $checked[$data['id']]; + } + $list = self::where('parent_id', '>', 0)->field('parent_id')->cache(true)->select(); + foreach ($list as $k => $v) { + $checked[$v['parent_id']] = true; + } + if (isset($checked[$data['id']])) { + return $checked[$data['id']]; + } + return false; + } + + /** + * 获取栏目列表 + * @param $tag + * @return false|\PDOStatement|string|\think\Collection + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function getChannelList($tag) + { + $type = empty($tag['type']) ? '' : $tag['type']; + $typeid = !isset($tag['typeid']) ? '' : $tag['typeid']; + $model = !isset($tag['model']) ? '' : $tag['model']; + $condition = empty($tag['condition']) ? '' : $tag['condition']; + $field = empty($params['field']) ? '*' : $params['field']; + $row = empty($tag['row']) ? 10 : (int)$tag['row']; + $orderby = empty($tag['orderby']) ? 'weigh' : $tag['orderby']; + $orderway = empty($tag['orderway']) ? 'desc' : strtolower($tag['orderway']); + $limit = empty($tag['limit']) ? $row : $tag['limit']; + $cache = !isset($tag['cache']) ? true : (int)$tag['cache']; + $imgwidth = empty($tag['imgwidth']) ? '' : $tag['imgwidth']; + $imgheight = empty($tag['imgheight']) ? '' : $tag['imgheight']; + $orderway = in_array($orderway, ['asc', 'desc']) ? $orderway : 'desc'; + $where = ['status' => 'normal']; + + if ($type === 'top') { + //顶级分类 + $where['parent_id'] = 0; + } else if ($type === 'brother') { + $subQuery = self::where('id', 'in', $typeid)->field('parent_id')->buildSql(); + //同级 + $where['parent_id'] = ['exp', Db::raw(' IN ' . $subQuery)]; + } else if ($type === 'son') { + $subQuery = self::where('parent_id', 'in', $typeid)->field('id')->buildSql(); + //子级 + $where['id'] = ['exp', Db::raw(' IN ' . $subQuery)]; + } else if ($type === 'sons') { + //所有子级 + } else { + if ($typeid !== '') { + $where['id'] = ['in', $typeid]; + } + } + if ($model !== '') { + $where['model_id'] = ['in', $model]; + } + $order = $orderby == 'rand' ? 'rand()' : (in_array($orderby, ['createtime', 'updatetime', 'views', 'weigh', 'id']) ? "{$orderby} {$orderway}" : "createtime {$orderway}"); + $list = self::where($where) + ->where($condition) + ->field($field) + ->order($order) + ->limit($limit) + ->cache($cache) + ->select(); + self::render($list, $imgwidth, $imgheight); + return $list; + } + + /** + * 渲染数据 + * @param array $list + * @param int $imgwidth + * @param int $imgheight + * @return array + */ + public static function render(&$list, $imgwidth, $imgheight) + { + $width = $imgwidth ? 'width="' . $imgwidth . '"' : ''; + $height = $imgheight ? 'height="' . $imgheight . '"' : ''; + foreach ($list as $k => &$v) { + $v['hasimage'] = $v->getData('image') ? true : false; + $v['textlink'] = '' . $v['name'] . ''; + $v['channellink'] = '' . $v['name'] . ''; + $v['imglink'] = ''; + $v['img'] = ''; + } + return $list; + } + + /** + * 获取面包屑导航 + * @param array $channel + * @param array $archives + * @param array $tags + * @param array $page + * @return array + */ + public static function getBreadcrumb($channel, $archives = [], $tags = [], $page = []) + { + $list = []; + $list[] = ['name' => __('Home'), 'url' => addon_url('cms/index/index', [], false)]; + if ($channel) { + if ($channel['parent_id']) { + $channelList = self::where('status', 'normal') + ->order('weigh desc,id desc') + ->field('id,name,type,parent_id,diyname,outlink') + ->cache(true) + ->select(); + //获取栏目的所有上级栏目 + $parents = \fast\Tree::instance()->init(collection($channelList)->toArray(), 'parent_id')->getParents($channel['id']); + foreach ($parents as $k => $v) { + $list[] = ['name' => $v['name'], 'url' => $v['url']]; + } + } + $list[] = ['name' => $channel['name'], 'url' => $channel['url']]; + } + if ($archives) { + $list[] = ['name' => $archives['title'], 'url' => $archives['url']]; + } + if ($tags) { + $list[] = ['name' => $tags['name'], 'url' => $tags['url']]; + } + if ($page) { + $list[] = ['name' => $page['title'], 'url' => $page['url']]; + } + return $list; + } + + /** + * 获取导航栏目列表HTML + * @param $channel + * @param array $tag + * @return mixed|string + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function getNav($channel, $tag = []) + { + $condition = empty($tag['condition']) ? '' : $tag['condition']; + $cache = !isset($tag['cache']) ? true : (int)$tag['cache']; + $maxLevel = !isset($tag['maxlevel']) ? 0 : $tag['maxlevel']; + $cacheName = 'nav-' . md5(serialize($tag)); + $result = Cache::get($cacheName); + if (!$result) { + $channelList = Channel::where($condition) + ->where('status', 'normal') + ->order('weigh desc,id desc') + ->cache($cache) + ->select(); + $tree = \fast\Tree::instance(); + $tree->init(collection($channelList)->toArray(), 'parent_id'); + $result = self::getTreeUl($tree, 0, $channel ? $channel['id'] : '', '', 1, $maxLevel); + Cache::set($cacheName, $result); + } + return $result; + } + + public static function getTreeUl($tree, $myid, $selectedids = '', $disabledids = '', $level = 1, $maxlevel = 0) + { + $str = ''; + $childs = $tree->getChild($myid); + if ($childs) { + foreach ($childs as $value) { + $id = $value['id']; + unset($value['child']); + $selected = $selectedids && in_array($id, (is_array($selectedids) ? $selectedids : explode(',', $selectedids))) ? 'selected' : ''; + $disabled = $disabledids && in_array($id, (is_array($disabledids) ? $disabledids : explode(',', $disabledids))) ? 'disabled' : ''; + $value = array_merge($value, array('selected' => $selected, 'disabled' => $disabled)); + $value = array_combine(array_map(function ($k) { + return '@' . $k; + }, array_keys($value)), $value); + $itemtpl = '
                                    • @name @caret @childlist
                                    • '; + $nstr = strtr($itemtpl, $value); + $childlist = ''; + if (!$maxlevel || $level < $maxlevel) { + $childdata = self::getTreeUl($tree, $id, $selectedids, $disabledids, $level + 1, $maxlevel); + $childlist = $childdata ? '' : ""; + } + $str .= strtr($nstr, [ + '@childlist' => $childlist, + '@caret' => $childlist ? ($level == 1 ? '' : '') : '', + '@dropdown' => $childlist ? ($level == 1 ? 'dropdown' : 'dropdown-submenu') : '', + '@toggle' => $childlist ? 'dropdown' : '' + ]); + } + } + return $str; + } + +} diff --git a/addons/cms/model/Comment.php b/addons/cms/model/Comment.php new file mode 100644 index 000000000..814c75126 --- /dev/null +++ b/addons/cms/model/Comment.php @@ -0,0 +1,193 @@ +filter('strip_tags'); + $useragent = $request->server('HTTP_USER_AGENT', ''); + $ip = $request->ip(); + $auth = Auth::instance(); + + if (!$auth->id) { + throw new Exception("请登录后发表评论"); + } + if (!isset($params['aid']) || !isset($params['content'])) { + throw new Exception("内容不能为空"); + } + + $params['user_id'] = $auth->id; + $params['type'] = isset($params['type']) ? $params['type'] : 'archives'; + $params['content'] = nl2br($params['content']); + + $archives = $params['type'] == 'archives' ? Archives::get($params['aid']) : Page::get($params['aid']); + if (!$archives || $archives['status'] == 'hidden') { + throw new Exception("文档未找到"); + } + + $rule = [ + 'type' => 'require|in:archives,page', + 'pid' => 'require|number', + 'user_id' => 'require|number', + 'content' => 'require|length:3,250', + '__token__' => 'token', + ]; + $validate = new Validate($rule); + $result = $validate->check($params); + if (!$result) { + throw new Exception($validate->getError()); + } + + //查找最后评论 + $lastComment = self::where(['type' => $params['type'], 'aid' => $params['aid'], 'ip' => $ip])->order('id', 'desc')->find(); + if ($lastComment && time() - $lastComment['createtime'] < 30) { + throw new Exception("对不起!您发表评论的速度过快!请稍微休息一下,喝杯咖啡"); + } + if ($lastComment && $lastComment['content'] == $params['content']) { + throw new Exception("您可能连续了相同的评论,请不要重复提交"); + } + $params['ip'] = $ip; + $params['useragent'] = $useragent; + $params['status'] = 'normal'; + (new static())->allowField(true)->save($params); + + $archives->setInc('comments'); + + if (isset($params['pid'])) { + //查找父评论,是否并发邮件通知 + $parentComment = self::get($params['pid'], 'user'); + if ($parentComment && $parentComment['subscribe'] && Validate::is($parentComment->user->email, 'email')) { + $domain = $request->domain(); + $config = get_addon_config('cms'); + $title = "{$parentComment->user->nickname},您发表在《{$archives['title']}》上的评论有了新回复 - {$config['sitename']}"; + $archivesurl = $domain . $archives['url']; + $unsubscribe_url = addon_url("cms/comment/unsubscribe", ['id' => $parentComment['id'], 'key' => md5($parentComment['id'] . $parentComment->user->email)], true, true); + $content = "亲爱的{$parentComment->user->nickname}:
                                      您于" . date("Y-m-d H:i:s") . + "在《{$archives['title']}》上发表的评论
                                      {$parentComment['content']}
                                      " . + "
                                      {$auth->nickname}发表了回复,内容是
                                      {$params['content']}

                                      您可以点击查看评论详情。" . + "

                                      如果你不愿意再接受最新评论的通知,请点击这里取消"; + try { + $email = new Email; + $result = $email + ->to($parentComment->user->email) + ->subject($title) + ->message('
                                      ' . $content . '
                                      ') + ->send(); + } catch (\think\Exception $e) { + + } + } + } + return true; + } + + /** + * 获取评论列表 + * @param $params + * @return \think\Paginator + * @throws \think\exception\DbException + */ + public static function getCommentList($params) + { + $type = empty($params['type']) ? 'archives' : $params['type']; + $aid = empty($params['aid']) ? 0 : $params['aid']; + $pid = empty($params['pid']) ? 0 : $params['pid']; + $condition = empty($params['condition']) ? '' : $params['condition']; + $field = empty($params['field']) ? '*' : $params['field']; + $fragment = empty($params['fragment']) ? 'comments' : $params['fragment']; + $row = empty($params['row']) ? 10 : (int)$params['row']; + $orderby = empty($params['orderby']) ? 'nums' : $params['orderby']; + $orderway = empty($params['orderway']) ? 'desc' : strtolower($params['orderway']); + $pagesize = empty($params['pagesize']) ? $row : $params['pagesize']; + $cache = !isset($params['cache']) ? false : (int)$params['cache']; + $orderway = in_array($orderway, ['asc', 'desc']) ? $orderway : 'desc'; + + $where = []; + if ($type) { + $where['type'] = $type; + } + if ($aid !== '') { + $where['aid'] = $aid; + } + if ($pid) { + $where['pid'] = $pid; + } + $order = $orderby == 'rand' ? 'rand()' : (in_array($orderby, ['pid', 'id', 'createtime', 'updatetime']) ? "{$orderby} {$orderway}" : "id {$orderway}"); + + $list = self::with('user') + ->where($where) + ->where($condition) + ->field($field) + ->order($order) + ->cache($cache) + ->paginate($pagesize, false, ['type' => '\\addons\\cms\\library\\Bootstrap', 'var_page' => 'cp', 'fragment' => $fragment]); + self::render($list); + return $list; + } + + public static function render(&$list) + { + foreach ($list as $k => &$v) { + + } + return $list; + } + + /** + * 关联会员模型 + */ + public function user() + { + return $this->belongsTo("app\common\model\User")->field('id,nickname,avatar,email')->setEagerlyType(1); + } + + /** + * 关联文章模型 + */ + public function archives() + { + return $this->belongsTo("addons\cms\model\Archives", 'aid')->field('id,title,image,diyname,model_id,channel_id,likes,dislikes,tags,createtime')->setEagerlyType(1); + } + +} diff --git a/addons/cms/model/Fields.php b/addons/cms/model/Fields.php new file mode 100644 index 000000000..3dc473218 --- /dev/null +++ b/addons/cms/model/Fields.php @@ -0,0 +1,45 @@ +belongsTo('Modelx', 'model_id')->setEagerlyType(0); + } + +} diff --git a/addons/cms/model/Modelx.php b/addons/cms/model/Modelx.php new file mode 100644 index 000000000..c42eaaf49 --- /dev/null +++ b/addons/cms/model/Modelx.php @@ -0,0 +1,55 @@ +where('status', 'normal')->cache(true)->select(); + } + + public function getFieldsContentList($model_id) + { + $list = Fields::where('model_id', $model_id) + ->field('id,name,type,content') + ->where('status', 'normal') + ->cache(true) + ->select(); + $fieldsList = []; + $listFields = Fields::getListFields(); + foreach ($list as $index => $item) { + if (in_array($item['type'], $listFields)) { + $fieldsList[$item['name']] = $item['content_list']; + } + } + return $fieldsList; + } + +} diff --git a/addons/cms/model/Page.php b/addons/cms/model/Page.php new file mode 100644 index 000000000..09f7e6738 --- /dev/null +++ b/addons/cms/model/Page.php @@ -0,0 +1,101 @@ + $data['diyname']]); + } + + public function getFullurlAttr($value, $data) + { + return addon_url('cms/page/index', [':diyname' => $data['diyname']], true, true); + } + + /** + * 获取单页列表 + * @param $params + * @return false|\PDOStatement|string|\think\Collection + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function getPageList($params) + { + $name = empty($params['name']) ? '' : $params['name']; + $condition = empty($params['condition']) ? '' : $params['condition']; + $field = empty($params['field']) ? '*' : $params['field']; + $row = empty($params['row']) ? 10 : (int)$params['row']; + $orderby = empty($params['orderby']) ? 'nums' : $params['orderby']; + $orderway = empty($params['orderway']) ? 'desc' : strtolower($params['orderway']); + $limit = empty($params['limit']) ? $row : $params['limit']; + $cache = !isset($params['cache']) ? true : (int)$params['cache']; + $imgwidth = empty($params['imgwidth']) ? '' : $params['imgwidth']; + $imgheight = empty($params['imgheight']) ? '' : $params['imgheight']; + $orderway = in_array($orderway, ['asc', 'desc']) ? $orderway : 'desc'; + + $where = []; + if ($name !== '') { + $where['name'] = $name; + } + $order = $orderby == 'rand' ? 'rand()' : (in_array($orderby, ['name', 'id', 'createtime', 'updatetime']) ? "{$orderby} {$orderway}" : "id {$orderway}"); + + $list = self::where($where) + ->where($condition) + ->field($field) + ->order($order) + ->limit($limit) + ->cache($cache) + ->select(); + self::render($list, $imgwidth, $imgheight); + return $list; + } + + public static function render(&$list, $imgwidth, $imgheight) + { + $width = $imgwidth ? 'width="' . $imgwidth . '"' : ''; + $height = $imgheight ? 'height="' . $imgheight . '"' : ''; + foreach ($list as $k => &$v) { + $v['hasimage'] = $v->getData('image') ? true : false; + $v['textlink'] = '' . $v['title'] . ''; + $v['imglink'] = ''; + $v['img'] = ''; + } + return $list; + } + +} diff --git a/addons/cms/model/Tags.php b/addons/cms/model/Tags.php new file mode 100644 index 000000000..13c8bc37a --- /dev/null +++ b/addons/cms/model/Tags.php @@ -0,0 +1,79 @@ +belongsTo("Modelx"); + } + + public function getUrlAttr($value, $data) + { + $name = $data['name'] ? $data['name'] : $data['id']; + return addon_url('cms/tags/index', [':id' => $data['id'], ':name' => $name]); + } + + public function getFullurlAttr($value, $data) + { + $name = $data['name'] ? $data['name'] : $data['id']; + return addon_url('cms/tags/index', [':id' => $data['id'], ':name' => $name], true, true); + } + + /** + * 获取标签列表 + * @param $tag + * @return false|\PDOStatement|string|\think\Collection + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function getTagsList($tag) + { + $condition = empty($tag['condition']) ? '' : $tag['condition']; + $field = empty($params['field']) ? '*' : $params['field']; + $row = empty($tag['row']) ? 10 : (int)$tag['row']; + $orderby = empty($tag['orderby']) ? 'nums' : $tag['orderby']; + $orderway = empty($tag['orderway']) ? 'desc' : strtolower($tag['orderway']); + $limit = empty($tag['limit']) ? $row : $tag['limit']; + $cache = !isset($tag['cache']) ? true : (int)$tag['cache']; + $orderway = in_array($orderway, ['asc', 'desc']) ? $orderway : 'desc'; + + $where = []; + + $order = $orderby == 'rand' ? Db::raw('rand()') : (in_array($orderby, ['name', 'nums', 'id', 'createtime', 'updatetime']) ? "{$orderby} {$orderway}" : "nums {$orderway}"); + + $list = self::where($where) + ->where($condition) + ->field($field) + ->order($order) + ->limit($limit) + ->cache($cache) + ->select(); + foreach ($list as $k => $v) { + $v['textlink'] = '' . $v['name'] . ''; + } + return $list; + } + +} diff --git a/addons/cms/public/assets/js/backend/cms/archives.js b/addons/cms/public/assets/js/backend/cms/archives.js new file mode 100644 index 000000000..845b86705 --- /dev/null +++ b/addons/cms/public/assets/js/backend/cms/archives.js @@ -0,0 +1,411 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/archives/index', + add_url: 'cms/archives/add', + edit_url: 'cms/archives/edit', + del_url: 'cms/archives/del', + multi_url: 'cms/archives/multi', + dragsort_url: '', + table: 'archives', + } + }); + + var table = $("#table"); + + //在表格内容渲染完成后回调的事件 + table.on('post-body.bs.table', function (e, settings, json, xhr) { + $(".btn-editone", this) + .off("click") + .removeClass("btn-editone") + .addClass("btn-addtabs") + .prop("title", __('Edit')); + }); + //当双击单元格时 + table.on('dbl-click-row.bs.table', function (e, row, element, field) { + $(".btn-addtabs", element).trigger("click"); + }); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'weigh', + searchFormVisible: Fast.api.query("model_id") ? true : false, + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id'), sortable: true}, + { + field: 'model_id', + title: __('Model_id'), + visible: false, + addclass: 'selectpage', + extend: 'data-source="cms/modelx/index"', + formatter: Table.api.formatter.search + }, + { + field: 'channel_id', + title: __('Channel_id'), + visible: false, + addclass: 'selectpage', + extend: 'data-source="cms/channel/index"', + formatter: Table.api.formatter.search + }, + { + field: 'channel.name', + title: __('Channel'), + operate: false, + formatter: function (value, row, index) { + return '' + value + ''; + } + }, + { + field: 'title', title: __('Title'), align: 'left', formatter: function (value, row, index) { + return '
                                      ' + value + '
                                      ' + Table.api.formatter.flag.call(this, row['flag'], row, index); + } + }, + {field: 'image', title: __('Image'), operate: false, formatter: Table.api.formatter.image}, + {field: 'views', title: __('Views'), operate: 'BETWEEN', sortable: true}, + {field: 'comments', title: __('Comments'), operate: 'BETWEEN', sortable: true}, + {field: 'weigh', title: __('Weigh'), operate: false}, + { + field: 'url', title: __('Url'), operate: false, formatter: function (value, row, index) { + return ''; + } + }, + { + field: 'createtime', + title: __('Createtime'), + visible: false, + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'updatetime', + title: __('Updatetime'), + sortable: true, + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + {field: 'status', title: __('Status'), operate: false, formatter: Table.api.formatter.status}, + { + field: 'operate', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + } + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + + $(document).on("click", "a.btn-channel", function () { + $("#archivespanel").toggleClass("col-md-9", $("#channelbar").hasClass("hidden")); + $("#channelbar").toggleClass("hidden"); + }); + + require(['jstree'], function () { + //全选和展开 + $(document).on("click", "#checkall", function () { + $("#channeltree").jstree($(this).prop("checked") ? "check_all" : "uncheck_all"); + }); + $(document).on("click", "#expandall", function () { + $("#channeltree").jstree($(this).prop("checked") ? "open_all" : "close_all"); + }); + $('#channeltree').on("changed.jstree", function (e, data) { + console.log(data); + console.log(data.selected); + var options = table.bootstrapTable('getOptions'); + options.pageNumber = 1; + options.queryParams = function (params) { + params.filter = JSON.stringify(data.selected.length > 0 ? {channel_id: data.selected.join(",")} : {}); + params.op = JSON.stringify(data.selected.length > 0 ? {channel_id: 'in'} : {}); + return params; + }; + table.bootstrapTable('refresh', {}); + return false; + }); + $('#channeltree').jstree({ + "themes": { + "stripes": true + }, + "checkbox": { + "keep_selected_style": false, + }, + "types": { + "channel": { + "icon": "fa fa-th", + }, + "list": { + "icon": "fa fa-list", + }, + "link": { + "icon": "fa fa-link", + }, + "disabled": { + "check_node": false, + "uncheck_node": false + } + }, + 'plugins': ["types", "checkbox"], + "core": { + "multiple": true, + 'check_callback': true, + "data": Config.channelList + } + }); + }); + + $(document).on('click', '.btn-move', function () { + var ids = Table.api.selectedids(table); + Layer.open({ + title: __('Move'), + content: Template("channeltpl", {}), + btn: [__('Move')], + yes: function (index, layero) { + var channel_id = $("select[name='channel']", layero).val(); + if (channel_id == 0) { + Toastr.error(__('Please select channel')); + return; + } + Fast.api.ajax({ + url: "cms/archives/move/ids/" + ids.join(","), + type: "post", + data: {channel_id: channel_id}, + }, function () { + table.bootstrapTable('refresh', {}); + Layer.close(index); + }); + }, + success: function (layero, index) { + } + }); + }); + }, + content: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/archives/content/model_id/' + Config.model_id, + add_url: '', + edit_url: 'cms/archives/edit', + del_url: 'cms/archives/del', + multi_url: '', + table: '', + } + }); + + var table = $("#table"); + //在表格内容渲染完成后回调的事件 + table.on('post-body.bs.table', function (e, settings, json, xhr) { + $(".btn-editone", this) + .off("click") + .removeClass("btn-editone") + .addClass("btn-addtabs") + .prop("title", __('Edit')); + }); + //默认字段 + var columns = [ + {checkbox: true}, + //这里因为涉及到关联多个表,因为用了两个字段来操作,一个隐藏,一个搜索 + {field: 'main.id', title: __('Id'), visible: false}, + {field: 'id', title: __('Id'), operate: false}, + {field: 'channel_id', title: __('Channel_id'), formatter: Table.api.formatter.search}, + {field: 'channel_name', title: __('Channel_name'), operate: false} + ]; + //动态追加字段 + $.each(Config.fields, function (i, j) { + var data = {field: j.field, title: j.title, operate: 'like'}; + //如果是图片,加上formatter + if (j.type == 'image') { + data.formatter = Table.api.formatter.image; + } else if (j.type == 'images') { + data.formatter = Table.api.formatter.images; + } else if (j.type == 'radio' || j.type == 'check' || j.type == 'select' || j.type == 'selects') { + data.formatter = Controller.api.formatter.content; + data.extend = j.content; + } + columns.push(data); + }); + //追加操作字段 + columns.push({ + field: 'operate', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + }); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: columns + }) + ; + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + recyclebin: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + 'dragsort_url': '' + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: 'cms/archives/recyclebin', + pk: 'id', + sortName: 'weigh', + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'title', title: __('Title'), align: 'left'}, + {field: 'image', title: __('Image'), operate: false, formatter: Table.api.formatter.image}, + { + field: 'deletetime', + title: __('Deletetime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'operate', + width: '130px', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + buttons: [ + { + name: 'Restore', + text: __('Restore'), + classname: 'btn btn-xs btn-info btn-restoreit', + icon: 'fa fa-rotate-left', + url: 'cms/archives/restore' + }, + { + name: 'Destroy', + text: __('Destroy'), + classname: 'btn btn-xs btn-danger btn-destroyit', + icon: 'fa fa-times', + url: 'cms/archives/destroy' + } + ], + formatter: Table.api.formatter.operate + } + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + + $(document).on('click', '.btn-destroyall', function () { + var that = this; + Layer.confirm(__('Are you sure you want to truncate?'), function () { + Fast.api.ajax($(that).attr("href"), function () { + Layer.closeAll(); + table.bootstrapTable('refresh'); + }, function () { + Layer.closeAll(); + }); + }); + return false; + }); + $(document).on('click', '.btn-restoreall,.btn-restoreit,.btn-destroyit', function () { + Fast.api.ajax($(this).attr("href"), function () { + table.bootstrapTable('refresh'); + }); + return false; + }); + }, + add: function () { + $(document).on('change', '#c-channel_id', function () { + Fast.api.ajax({ + url: 'cms/archives/get_channel_fields', + data: {channel_id: $(this).val()} + }, function (data) { + $("#extend").html(data.html); + Form.api.bindevent($("#extend")); + return false; + }); + localStorage.setItem('last_channel_id', $(this).val()); + }); + var last_channel_id = localStorage.getItem('last_channel_id'); + if (last_channel_id) { + $("#c-channel_id option[value='" + last_channel_id + "']").prop("selected", true); + } + $("#c-channel_id").trigger("change"); + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + Fast.api.ajax({ + url: 'cms/archives/get_channel_fields', + data: {channel_id: $("#c-channel_id").val(), archives_id: $("#archive-id").val()} + }, function (data) { + $("#extend").html(data.html); + Form.api.bindevent($("#extend")); + return false; + }); + }, + api: { + formatter: { + content: function (value, row, index) { + var extend = this.extend; + if (!value) { + return ''; + } + var valueArr = value.toString().split(/,/); + var result = []; + $.each(valueArr, function (i, j) { + result.push(typeof extend[j] !== 'undefined' ? extend[j] : j); + }); + return result.join(','); + } + }, + bindevent: function () { + $.validator.config({ + rules: { + diyname: function (element) { + if (element.value.toString().match(/^\d+$/)) { + return __('Can not be digital'); + } + return $.ajax({ + url: 'cms/archives/check_element_available', + type: 'POST', + data: {id: $("#archive-id").val(), name: element.name, value: element.value}, + dataType: 'json' + }); + } + } + }); + Form.api.bindevent($("form[role=form]"), function () { + var obj = top.window.$("ul.nav-addtabs li.active"); + top.window.Toastr.success(__('Operation completed')); + top.window.$(".sidebar-menu a[url$='/cms/archives'][addtabs]").click(); + top.window.$(".sidebar-menu a[url$='/cms/archives'][addtabs]").dblclick(); + obj.find(".fa-remove").trigger("click"); + }); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/addons/cms/public/assets/js/backend/cms/block.js b/addons/cms/public/assets/js/backend/cms/block.js new file mode 100644 index 000000000..168f2b831 --- /dev/null +++ b/addons/cms/public/assets/js/backend/cms/block.js @@ -0,0 +1,57 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/block/index', + add_url: 'cms/block/add', + edit_url: 'cms/block/edit', + del_url: 'cms/block/del', + multi_url: 'cms/block/multi', + table: 'block', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'type', title: __('Type'), formatter:Table.api.formatter.search}, + {field: 'name', title: __('Name')}, + {field: 'title', title: __('Title')}, + {field: 'image', title: __('Image'), formatter: Table.api.formatter.image}, + {field: 'url', title: __('Url'), formatter: Table.api.formatter.url}, + {field: 'createtime', title: __('Createtime'), sortable: true, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'updatetime', title: __('Updatetime'), sortable: true, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'status', title: __('Status'), formatter: Table.api.formatter.status}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/addons/cms/public/assets/js/backend/cms/channel.js b/addons/cms/public/assets/js/backend/cms/channel.js new file mode 100644 index 000000000..06d3d925a --- /dev/null +++ b/addons/cms/public/assets/js/backend/cms/channel.js @@ -0,0 +1,164 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/channel/index', + add_url: 'cms/channel/add', + edit_url: 'cms/channel/edit', + del_url: 'cms/channel/del', + multi_url: 'cms/channel/multi', + dragsort_url: '', + table: 'channel', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'weigh', + pagination: false, + escape: false, + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + { + field: 'type', + title: __('Type'), + custom: {channel: 'info', list: 'success', link: 'primary'}, + formatter: Table.api.formatter.flag + }, + {field: 'model_name', title: __('Model_name'), operate: false}, + {field: 'name', title: __('Name'), align: 'left'}, + { + field: 'url', title: __('Url'), formatter: function (value, row, index) { + return ''; + } + }, + {field: 'items', sortable: true, title: __('Items')}, + { + field: 'weigh', + sortable: true, + title: __('Weigh'), + formatter: function (value, row, index) { + return ''; + } + }, + { + field: 'createtime', + title: __('Createtime'), + visible: false, + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'updatetime', + title: __('Updatetime'), + visible: false, + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + {field: 'status', title: __('Status'), formatter: Table.api.formatter.status}, + { + field: 'operate', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + } + ] + ], + search: false, + commonSearch: false + }); + + $(document).on("change", ".text-weigh", function () { + $(this).data("params", {weigh: $(this).val()}); + Table.api.multi('', [$(this).data("id")], table, this); + return false; + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + $("input[name='row[type]']:first").trigger("click"); + $("select[name='row[model_id]']").trigger("change"); + }, + edit: function () { + Controller.api.bindevent(); + $("input[name='row[type]']:checked").trigger("fa.event.typeupdated", "edit"); + }, + api: { + bindevent: function () { + $.validator.config({ + rules: { + single: function (element) { + return !$("#c-name").val().match(/\n/); + }, + channelname: function (element) { + if (element.value.toString().match(/^\d+$/)) { + return __('Can not be digital'); + } + return $.ajax({ + url: 'cms/channel/check_element_available', + type: 'POST', + data: {id: $("#c-name").val(), name: element.name, value: element.value}, + dataType: 'json' + }); + }, + diyname: function (element) { + if (element.value.toString().match(/^\d+$/)) { + return __('Can not be digital'); + } + return $.ajax({ + url: 'cms/channel/check_element_available', + type: 'POST', + data: {id: $("#channel-id").val(), name: element.name, value: element.value}, + dataType: 'json' + }); + } + } + }); + //不可见的元素不验证 + $("form[role=form]").data("validator-options", {ignore: ':hidden'}); + $(document).on("click fa.event.typeupdated", "input[name='row[type]']", function (e, ref) { + $(".tf").addClass("hidden"); + $(".tf.tf-" + $(this).val()).removeClass("hidden"); + if (typeof ref == 'undefined') { + $("select[name='row[model_id]']").trigger("change"); + } + if ($(this).val() == 'link') { + $("#parent_id option[data-model]").prop("disabled", false); + } + }); + Form.api.bindevent($("form[role=form]")); + $(document).on("change", "select[name='row[model_id]']", function () { + var parentChannel = $("#parent_id"); + $("option[value=0]", parentChannel).prop("selected", true); + $("option[data-model]", parentChannel).prop("disabled", true); + $("option[data-model='" + $(this).val() + "']", parentChannel).prop("disabled", false); + var data = $("option:selected", this).data(); + var type = $("input[name='row[type]']:checked").val(); + if (type == 'channel') { + $("input[name='row[channeltpl]']").val(data.channeltpl); + } else if (type == 'list') { + $("input[name='row[listtpl]']").val(data.listtpl); + $("input[name='row[showtpl]']").val(data.showtpl); + } + }); + + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/addons/cms/public/assets/js/backend/cms/comment.js b/addons/cms/public/assets/js/backend/cms/comment.js new file mode 100644 index 000000000..53d92cfd3 --- /dev/null +++ b/addons/cms/public/assets/js/backend/cms/comment.js @@ -0,0 +1,62 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/comment/index', + add_url: 'cms/comment/add', + edit_url: 'cms/comment/edit', + del_url: 'cms/comment/del', + multi_url: 'cms/comment/multi', + table: 'comment', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'type', title: __('Type'), visible: false, searchList: {"archives": __('archives'), "page": __('page')}}, + {field: 'type_text', title: __('Type'), operate: false}, + {field: 'aid', sortable: true, title: __('Aid'), formatter: Table.api.formatter.search}, + {field: 'pid', sortable: true, title: __('Pid'), formatter: Table.api.formatter.search, visible: false}, + {field: 'user_id', sortable: true, title: __('User_id'), formatter: Table.api.formatter.search}, + {field: 'archives.title', title: __('Title'), operate: false}, + {field: 'comments', sortable: true, title: __('Comments')}, + {field: 'ip', title: __('Ip'), formatter: Table.api.formatter.search}, + {field: 'useragent', title: __('Useragent'), visible: false}, + {field: 'subscribe', sortable: true, title: __('Subscribe'), visible: false}, + {field: 'createtime', sortable: true, title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'updatetime', sortable: true, title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'status', title: __('Status'), searchList: {"normal": __('normal'), "hidden": __('hidden')}, formatter: Table.api.formatter.status}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/addons/cms/public/assets/js/backend/cms/fields.js b/addons/cms/public/assets/js/backend/cms/fields.js new file mode 100644 index 000000000..c9207857d --- /dev/null +++ b/addons/cms/public/assets/js/backend/cms/fields.js @@ -0,0 +1,65 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/fields/index/model_id/' + Config.model_id, + add_url: 'cms/fields/add/model_id/' + Config.model_id, + edit_url: 'cms/fields/edit/model_id/' + Config.model_id, + del_url: 'cms/fields/del/model_id/' + Config.model_id, + multi_url: 'cms/fields/multi/model_id/' + Config.model_id, + table: 'fields', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'weigh', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'model_id', visible: false, operate: false, title: __('Model_id')}, + {field: 'name', title: __('Name')}, + {field: 'type', title: __('Type')}, + {field: 'title', title: __('Title')}, + {field: 'weigh', title: __('Weigh'), visible: false}, + {field: 'createtime', title: __('Createtime'), visible: false, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'updatetime', title: __('Updatetime'), visible: false, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'status', title: __('Status'), formatter: Table.api.formatter.status}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ], + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + //不可见的元素不验证 + $("form#add-form").data("validator-options", {ignore: ':hidden'}); + $(document).on("change", "#c-type", function () { + $(".tf").addClass("hidden"); + $(".tf.tf-" + $(this).val()).removeClass("hidden"); + + }); + Form.api.bindevent($("form[role=form]")); + $("#c-type").trigger("change"); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/addons/cms/public/assets/js/backend/cms/modelx.js b/addons/cms/public/assets/js/backend/cms/modelx.js new file mode 100644 index 000000000..a8df73d77 --- /dev/null +++ b/addons/cms/public/assets/js/backend/cms/modelx.js @@ -0,0 +1,103 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/modelx/index', + add_url: 'cms/modelx/add', + edit_url: 'cms/modelx/edit', + del_url: 'cms/modelx/del', + multi_url: 'cms/modelx/multi', + table: 'model', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'name', title: __('Name')}, + {field: 'table', title: __('Table')}, + {field: 'channeltpl', title: __('Channeltpl')}, + {field: 'listtpl', title: __('Listtpl')}, + {field: 'showtpl', title: __('Showtpl')}, + { + field: 'createtime', + sortable: true, + title: __('Createtime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'updatetime', + sortable: true, + title: __('Updatetime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'datalist', title: __('Operate'), table: table, + buttons: [ + { + name: 'index', + text: __('Main list'), + classname: 'btn btn-xs btn-success btn-addtabs', + icon: 'fa fa-file', + url: 'cms/archives/index?model_id={ids}' + }, + { + name: 'content', + text: __('Addon list'), + classname: 'btn btn-xs btn-success btn-addtabs', + icon: 'fa fa-file', + url: 'cms/archives/content/model_id/{ids}' + }, + { + name: 'fields', + text: __('Fields'), + classname: 'btn btn-xs btn-info btn-fields btn-addtabs', + icon: 'fa fa-list', + url: 'cms/fields/index/model_id/{ids}' + }, + ], + formatter: Table.api.formatter.buttons + }, + { + field: 'operate', + title: __('Operate'), + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + } + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/addons/cms/public/assets/js/backend/cms/page.js b/addons/cms/public/assets/js/backend/cms/page.js new file mode 100644 index 000000000..455fe87ef --- /dev/null +++ b/addons/cms/public/assets/js/backend/cms/page.js @@ -0,0 +1,61 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/page/index', + add_url: 'cms/page/add', + edit_url: 'cms/page/edit', + del_url: 'cms/page/del', + multi_url: 'cms/page/multi', + table: 'page', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'weigh', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'title', title: __('Title')}, + {field: 'flag', title: __('Flag'), formatter: Table.api.formatter.flag}, + {field: 'image', title: __('Image'), formatter: Table.api.formatter.image}, + {field: 'views', sortable: true, title: __('Views'), operate: 'BETWEEN'}, + {field: 'comments', sortable: true, title: __('Comments'), operate: 'BETWEEN'}, + {field: 'url', title: __('Url'), formatter: function(value, row, index){ + return ''; + }}, + {field: 'createtime', sortable: true, title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'updatetime', sortable: true, title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'weigh', sortable: true, title: __('Weigh')}, + {field: 'status', title: __('Status'), formatter: Table.api.formatter.status}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/addons/cms/public/assets/js/backend/cms/tags.js b/addons/cms/public/assets/js/backend/cms/tags.js new file mode 100644 index 000000000..db949caef --- /dev/null +++ b/addons/cms/public/assets/js/backend/cms/tags.js @@ -0,0 +1,54 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'cms/tags/index', + add_url: 'cms/tags/add', + edit_url: '', + del_url: 'cms/tags/del', + multi_url: 'cms/tags/multi', + table: 'tags', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', sortable: true, title: __('Id')}, + {field: 'name', sortable: true, title: __('Name')}, + {field: 'nums', sortable: true, title: __('Nums')}, + {field: 'url', title: __('Url'), formatter: function(value, row, index){ + return ''; + }}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/addons/cms/taglib/Cms.php b/addons/cms/taglib/Cms.php new file mode 100644 index 000000000..a83cb2c8d --- /dev/null +++ b/addons/cms/taglib/Cms.php @@ -0,0 +1,396 @@ + ['attr' => 'name', 'close' => 0], + 'archives' => ['attr' => 'name', 'close' => 0], + 'tags' => ['attr' => 'name', 'close' => 0], + 'block' => ['attr' => 'id,name', 'close' => 0], + 'config' => ['attr' => 'name', 'close' => 0], + 'page' => ['attr' => 'name', 'close' => 0], + 'nav' => ['attr' => 'name,maxlevel,condition,cache', 'close' => 0], + 'prevnext' => ['attr' => 'id,type,archives,channel', 'close' => 1], + 'blocklist' => ['attr' => 'id,row,limit,empty,key,mod,cache,orderby,orderway,imgwidth,imgheight,condition,name', 'close' => 1], + 'commentlist' => ['attr' => 'id,row,limit,empty,key,mod,cache,orderby,orderway,condition,type,aid,pid,fragment', 'close' => 1], + 'breadcrumb' => ['attr' => 'id,empty,key,mod', 'close' => 1], + 'channellist' => ['attr' => 'id,row,limit,empty,key,mod,cache,orderby,orderway,imgwidth,imgheight,condition,model,type,typeid,field', 'close' => 1], + 'arclist' => ['attr' => 'id,row,limit,empty,key,mod,cache,orderby,orderway,imgwidth,imgheight,condition,model,type,field,flag,channel,tags,addon', 'close' => 1], + 'tagslist' => ['attr' => 'id,row,limit,empty,key,mod,cache,orderby,orderway,condition,type', 'close' => 1], + 'pagefilter' => ['attr' => 'id,empty,key,mod', 'close' => 1], + 'pageorder' => ['attr' => 'id,empty,key,mod', 'close' => 1], + 'pagelist' => ['attr' => 'id,empty,key,mod,imgwidth,imgheight', 'close' => 1], + 'pageinfo' => ['attr' => 'type', 'close' => 0], + 'commentinfo' => ['attr' => 'type', 'close' => 0], + ]; + + public function tagBreadcrumb($tag, $content) + { + $id = isset($tag['id']) ? $tag['id'] : 0; + $empty = isset($tag['empty']) ? $tag['empty'] : ''; + $key = !empty($tag['key']) ? $tag['key'] : 'i'; + $mod = isset($tag['mod']) ? $tag['mod'] : '2'; + $parse = ''; + $parse .= '{volist name="$__LIST__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}'; + $parse .= $content; + $parse .= '{/volist}'; + return $parse; + } + + public function tagPrevNext($tag, $content) + { + $id = isset($tag['id']) ? $tag['id'] : 'prevnext'; + $type = isset($tag['type']) ? $tag['type'] : 'prev'; + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['archives', 'channel'])) + { + $v = $this->autoBuildVar($v); + $v = preg_match("/^\d+[0-9\,]+\d+$/i", $v) ? '"' . $v . '"' : $v; + } + } + $archives = isset($tag['archives']) ? $tag['archives'] : 0; + $channel = isset($tag['channel']) ? $tag['channel'] : ''; + $parse = ''; + $parse .= $content; + $parse .= ''; + return $parse; + } + + public function tagChannel($tag) + { + return '{$__CHANNEL__.' . $tag['name'] . '}'; + } + + public function tagArchives($tag) + { + return '{$__ARCHIVES__.' . $tag['name'] . '}'; + } + + public function tagPage($tag) + { + return '{$__PAGE__.' . $tag['name'] . '}'; + } + + public function tagBlock($tag) + { + return \addons\cms\model\Block::getBlockContent($tag); + } + + public function tagNav($tag) + { + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['condition'])) + { + $v = $this->autoBuildVar($v); + } + $v = '"' . $v . '"'; + $params[] = '"' . $k . '"=>' . $v; + } + $parse = ''; + $parse .= '{$__LIST__}'; + return $parse; + } + + public function tagBlocklist($tag, $content) + { + $id = $tag['id']; + $empty = isset($tag['empty']) ? $tag['empty'] : ''; + $key = !empty($tag['key']) ? $tag['key'] : 'i'; + $mod = isset($tag['mod']) ? $tag['mod'] : '2'; + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['condition'])) + { + $v = $this->autoBuildVar($v); + } + $v = '"' . $v . '"'; + $params[] = '"' . $k . '"=>' . $v; + } + $parse = ''; + $parse .= '{volist name="$__LIST__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}'; + $parse .= $content; + $parse .= '{/volist}'; + return $parse; + } + + public function tagTags($tag) + { + return '{$__TAGS__.' . $tag['name'] . '}'; + } + + public function tagPagefilter($tag, $content) + { + $id = $tag['id']; + $empty = isset($tag['empty']) ? $tag['empty'] : ''; + $key = !empty($tag['key']) ? $tag['key'] : 'i'; + $mod = isset($tag['mod']) ? $tag['mod'] : '2'; + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['condition'])) + { + $v = $this->autoBuildVar($v); + } + $v = '"' . $v . '"'; + $params[] = '"' . $k . '"=>' . $v; + } + $parse = ''; + $parse .= '{volist name="$__LIST__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}'; + $parse .= $content; + $parse .= '{/volist}'; + return $parse; + } + + public function tagPageorder($tag, $content) + { + $id = $tag['id']; + $empty = isset($tag['empty']) ? $tag['empty'] : ''; + $key = !empty($tag['key']) ? $tag['key'] : 'i'; + $mod = isset($tag['mod']) ? $tag['mod'] : '2'; + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['condition'])) + { + $v = $this->autoBuildVar($v); + } + $v = '"' . $v . '"'; + $params[] = '"' . $k . '"=>' . $v; + } + $parse = ''; + $parse .= '{volist name="$__LIST__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}'; + $parse .= $content; + $parse .= '{/volist}'; + return $parse; + } + + public function tagPagelist($tag, $content) + { + $id = $tag['id']; + $empty = isset($tag['empty']) ? $tag['empty'] : ''; + $key = !empty($tag['key']) ? $tag['key'] : 'i'; + $mod = isset($tag['mod']) ? $tag['mod'] : '2'; + + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['condition'])) + { + $v = $this->autoBuildVar($v); + } + $v = '"' . $v . '"'; + $params[] = '"' . $k . '"=>' . $v; + } + $parse = ''; + $parse .= '{volist name="$__LIST__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}'; + $parse .= $content; + $parse .= '{/volist}'; + return $parse; + } + + public function tagPageinfo($tag, $content) + { + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['condition'])) + { + $v = $this->autoBuildVar($v); + } + $v = '"' . $v . '"'; + $params[] = '"' . $k . '"=>' . $v; + } + $parse = '{$__PAGELIST__->render([' . implode(',', $params) . '])}'; + return $parse; + } + + /** + * 标签列表 + * @param array $tag + * @param string $content + */ + public function tagTagslist($tag, $content) + { + $id = $tag['id']; + $empty = isset($tag['empty']) ? $tag['empty'] : ''; + $key = !empty($tag['key']) ? $tag['key'] : 'i'; + $mod = isset($tag['mod']) ? $tag['mod'] : '2'; + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['condition'])) + { + $v = $this->autoBuildVar($v); + } + $v = '"' . $v . '"'; + $params[] = '"' . $k . '"=>' . $v; + } + $parse = ''; + $parse .= '{volist name="$__LIST__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}'; + $parse .= $content; + $parse .= '{/volist}'; + return $parse; + } + + /** + * 评论列表 + * @param array $tag + * @param string $content + */ + public function tagCommentlist($tag, $content) + { + $id = $tag['id']; + $empty = isset($tag['empty']) ? $tag['empty'] : ''; + $key = !empty($tag['key']) ? $tag['key'] : 'i'; + $mod = isset($tag['mod']) ? $tag['mod'] : '2'; + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['condition'])) + { + $v = $this->autoBuildVar($v); + } + $v = '"' . $v . '"'; + $params[] = '"' . $k . '"=>' . $v; + } + $parse = ''; + $parse .= '{volist name="$__COMMENTLIST__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}'; + $parse .= $content; + $parse .= '{/volist}'; + return $parse; + } + + /** + * 评论分页 + * @param array $tag + * @param string $content + * @return string + */ + public function tagCommentinfo($tag, $content) + { + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['condition'])) + { + $v = $this->autoBuildVar($v); + } + $v = '"' . $v . '"'; + $params[] = '"' . $k . '"=>' . $v; + } + $parse = '{$__COMMENTLIST__->render([' . implode(',', $params) . '])}'; + return $parse; + } + + /** + * 栏目标签 + * @param array $tag + * @param string $content + */ + public function tagChannellist($tag, $content) + { + $id = $tag['id']; + $empty = isset($tag['empty']) ? $tag['empty'] : ''; + $key = !empty($tag['key']) ? $tag['key'] : 'i'; + $mod = isset($tag['mod']) ? $tag['mod'] : '2'; + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['typeid', 'model', 'condition'])) + { + $v = $this->autoBuildVar($v); + } + if (in_array($k, ['typeid', 'model'])) + { + $v = preg_match("/^\d+[0-9\,]+\d+$/i", $v) ? '"' . $v . '"' : $v; + } + else + { + $v = '"' . $v . '"'; + } + $params[] = '"' . $k . '"=>' . $v; + } + $parse = ''; + $parse .= '{volist name="$__LIST__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}'; + $parse .= $content; + $parse .= '{/volist}'; + return $parse; + } + + public function tagArclist($tag, $content) + { + $id = $tag['id']; + $empty = isset($tag['empty']) ? $tag['empty'] : ''; + $key = !empty($tag['key']) ? $tag['key'] : 'i'; + $mod = isset($tag['mod']) ? $tag['mod'] : '2'; + $params = []; + foreach ($tag as $k => & $v) + { + if (in_array($k, ['channel', 'model', 'condition', 'tags'])) + { + $v = $this->autoBuildVar($v); + } + if (in_array($k, ['channel', 'model', 'tags'])) + { + $v = preg_match("/^\d+[0-9\,]+\d+$/i", $v) ? '"' . $v . '"' : $v; + } + else + { + $v = '"' . $v . '"'; + } + $params[] = '"' . $k . '"=>' . $v; + } + $parse = ''; + $parse .= '{volist name="$__LIST__" id="' . $id . '" empty="' . $empty . '" key="' . $key . '" mod="' . $mod . '"}'; + $parse .= $content; + $parse .= '{/volist}'; + return $parse; + } + + public function tagConfig($tag) + { + $name = $tag['name']; + $parse = ''; + return $parse; + } + +} diff --git a/addons/cms/view/default/channel.html b/addons/cms/view/default/channel.html new file mode 100644 index 000000000..97d9106b9 --- /dev/null +++ b/addons/cms/view/default/channel.html @@ -0,0 +1,59 @@ +{layout name="common/layout" /} + +
                                      +

                                      + {cms:channel name="name" /} + +

                                      + +
                                      + +
                                      +
                                      +
                                      + + {cms:channellist id="channel" type="son" typeid="$__CHANNEL__.id"} +
                                      +

                                      {$channel.textlink} {:__('More')}

                                      + {cms:arclist id="row" channel="$channel.id" limit="0,1"} +
                                      +
                                      + + 64x64 + +
                                      +
                                      +

                                      {$row.textlink}

                                      +

                                      {$row.description|mb_substr=0,40}

                                      +
                                      +
                                      + {/cms:arclist} +
                                        + {cms:arclist id="row" channel="$channel.id" limit="1,5"} +
                                      • + {$row.textlink} + {$row.createtime|date='m-d',###} +
                                      • + {/cms:arclist} +
                                      +
                                      + {/cms:channellist} + +
                                      +
                                      +
                                      + + +
                                      +
                                      diff --git a/addons/cms/view/default/common/comment.html b/addons/cms/view/default/common/comment.html new file mode 100644 index 000000000..d4f8f284c --- /dev/null +++ b/addons/cms/view/default/common/comment.html @@ -0,0 +1,57 @@ +
                                      + +
                                      + {assign name="aid" value="$[aid]" /} + {cms:commentlist id="comment" type="[type]" aid="$aid" pagesize="10"} +
                                      +
                                      +
                                      +
                                      + {$comment.user.nickname} + {$comment.createtime|human_date} 回复TA +

                                      {$comment.content}

                                      +
                                      +
                                      +
                                      +
                                      + {/cms:commentlist} +
                                      + + + +
                                      + {cms:commentinfo type="full" /} +
                                      + + + +
                                      +

                                      发表评论 取消回复

                                      +
                                      + {:token()} + + + +
                                      + +
                                      + {if !$user} + + {else /} +
                                      + + +
                                      +
                                      + +
                                      + {/if} +
                                      +
                                      + +
                                      \ No newline at end of file diff --git a/addons/cms/view/default/common/item.html b/addons/cms/view/default/common/item.html new file mode 100644 index 000000000..0ec1b7d2d --- /dev/null +++ b/addons/cms/view/default/common/item.html @@ -0,0 +1,41 @@ +
                                      + +
                                      \ No newline at end of file diff --git a/addons/cms/view/default/common/layout.html b/addons/cms/view/default/common/layout.html new file mode 100644 index 000000000..fe4deda33 --- /dev/null +++ b/addons/cms/view/default/common/layout.html @@ -0,0 +1,154 @@ + + + + + + + + + + + {cms:config name="cms.title"/} - {cms:config name="cms.sitename"/} + + + + + + + + + + + + + + + + + + +
                                      + + + + +
                                      + + {__CONTENT__} + +
                                      + +
                                      + +
                                      + + + {if $config.qrcode} + + +
                                      +
                                      +

                                      微信公众账号

                                      +

                                      微信扫一扫加关注

                                      +
                                      +
                                      + {/if} + {if isset($__ARCHIVES__)} + + + + {/if} + + + + +
                                      + + + \ No newline at end of file diff --git a/addons/cms/view/default/common/sidebar.html b/addons/cms/view/default/common/sidebar.html new file mode 100644 index 000000000..4c7d74d04 --- /dev/null +++ b/addons/cms/view/default/common/sidebar.html @@ -0,0 +1,52 @@ + +
                                      +
                                      +

                                      {:__('Hot news')}

                                      +
                                      +
                                      + {cms:arclist id="hot" row="10" orderby="id" orderway="asc"} +
                                      +
                                      + {$i} +
                                      + +
                                      + {/cms:arclist} +
                                      +
                                      + + + +
                                      +
                                      +

                                      {:__('Hot tags')}

                                      +
                                      +
                                      + {cms:tagslist id="tag" orderby="rand" limit="30"} + {$tag.name} + {/cms:tagslist} +
                                      +
                                      + + + +
                                      +
                                      +

                                      {:__('Recommend news')}

                                      +
                                      +
                                      + {cms:arclist id="hot" row="10" flag="recommend|new" orderby="id" orderway="asc"} +
                                      +
                                      + {$i} +
                                      + +
                                      + {/cms:arclist} +
                                      +
                                      + \ No newline at end of file diff --git a/addons/cms/view/default/index.html b/addons/cms/view/default/index.html new file mode 100644 index 000000000..4d05baf72 --- /dev/null +++ b/addons/cms/view/default/index.html @@ -0,0 +1,82 @@ +{layout name="common/layout" /} + +
                                      +
                                      +
                                      +
                                      + + + +
                                      +
                                      +
                                      + +
                                      +

                                      {:__('Recently update')}

                                      +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      +
                                      + +
                                      + {cms:block name="bannerad"/} +
                                      + +
                                      + +
                                      + + {cms:arclist id="item" model="1" addon="true"} + {include file="common/item"} + {/cms:arclist} + +
                                      + + +
                                      +
                                      + diff --git a/addons/cms/view/default/list_news.html b/addons/cms/view/default/list_news.html new file mode 100644 index 000000000..e13e925cb --- /dev/null +++ b/addons/cms/view/default/list_news.html @@ -0,0 +1,76 @@ +{layout name="common/layout" /} + +
                                      +

                                      + {cms:channel name="name" /} + +

                                      +
                                      + +
                                      +
                                      {:__('All categories')}:
                                      + +
                                        +
                                      • +
                                      • +
                                      • +
                                      + +
                                      + {cms:pagefilter id="filter" exclude=""} +
                                      +
                                      {$filter.title}:
                                      +
                                        + {volist name="$filter.content" id="item"} +
                                      • {$item.title}
                                      • + {/volist} +
                                      +
                                      + {/cms:pagefilter} + +
                                      + +
                                      + +
                                      + +
                                      + +
                                      + + + {cms:pagelist id="item"} + {include file="common/item"} + {/cms:pagelist} + + + +
                                      + {cms:pageinfo type="full" /} +
                                      + +
                                      + + +
                                      +
                                      diff --git a/addons/cms/view/default/list_product.html b/addons/cms/view/default/list_product.html new file mode 100644 index 000000000..c6f2c5aed --- /dev/null +++ b/addons/cms/view/default/list_product.html @@ -0,0 +1,78 @@ +{layout name="common/layout" /} + +
                                      +

                                      + {cms:channel name="name" /} + +

                                      +
                                      + +
                                      +
                                      {:__('All categories')}:
                                      + +
                                        +
                                      • +
                                      • +
                                      • +
                                      + +
                                      + {cms:pagefilter id="filter" exclude=""} +
                                      +
                                      {$filter.title}:
                                      +
                                        + {volist name="$filter.content" id="item"} +
                                      • {$item.title}
                                      • + {/volist} +
                                      +
                                      + {/cms:pagefilter} + +
                                      + +
                                      + +
                                      + +
                                      +
                                      + + {cms:pagelist id="item"} +
                                      + + +
                                      + {/cms:pagelist} + +
                                      + +
                                      + {cms:pageinfo type="full" /} +
                                      + +
                                      +
                                      diff --git a/addons/cms/view/default/page.html b/addons/cms/view/default/page.html new file mode 100644 index 000000000..1326a5acb --- /dev/null +++ b/addons/cms/view/default/page.html @@ -0,0 +1,41 @@ +{layout name="common/layout" /} + +
                                      + +
                                      + +
                                      +
                                      + +
                                      + +

                                      + {cms:page name="content" /} +

                                      + +
                                      + +
                                      +
                                      + + +
                                      +
                                      + {:__('Comment list')}({cms:page name="comments" /}) +
                                      +
                                      + {include file="common/comment" type="page" aid="__PAGE__.id"} +
                                      +
                                      + +
                                      +
                                      +
                                      \ No newline at end of file diff --git a/addons/cms/view/default/search.html b/addons/cms/view/default/search.html new file mode 100644 index 000000000..a1e543acb --- /dev/null +++ b/addons/cms/view/default/search.html @@ -0,0 +1,55 @@ +{layout name="common/layout" /} + +
                                      +

                                      + {cms:config name="cms.title"/} + +

                                      + +
                                      + +
                                      + +
                                      + +
                                      + + + {cms:pagelist id="item" empty=":fsd"} + {include file="common/item"} + {/cms:pagelist} + + + +
                                      + {cms:pageinfo type="full" /} +
                                      + + +
                                      + + +
                                      +
                                      diff --git a/addons/cms/view/default/show_news.html b/addons/cms/view/default/show_news.html new file mode 100644 index 000000000..a87c4c348 --- /dev/null +++ b/addons/cms/view/default/show_news.html @@ -0,0 +1,156 @@ +{layout name="common/layout" /} + +
                                      + +
                                      + +
                                      +
                                      + + +
                                      + +

                                      + {cms:archives name="content" /} +

                                      + +
                                      + +
                                      + + + + + +
                                      + + + + + +
                                      +
                                      + + {cms:arclist id="relate" tags="__ARCHIVES__.tags" row="3"} + + + + {/cms:arclist} + +
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      + {:__('Comment list')}({cms:archives name="comments" /}) +
                                      +
                                      + {include file="common/comment" type="archives" aid="__ARCHIVES__.id"} +
                                      +
                                      + +
                                      + + +
                                      +
                                      \ No newline at end of file diff --git a/addons/cms/view/default/show_product.html b/addons/cms/view/default/show_product.html new file mode 100644 index 000000000..1a4eb35f3 --- /dev/null +++ b/addons/cms/view/default/show_product.html @@ -0,0 +1,181 @@ +{layout name="common/layout" /} + +
                                      + +
                                      + +
                                      +
                                      + + +
                                      + +
                                      + {volist name="$__ARCHIVES__.productdata|explode=',',###" id="image"} + + + + {/volist} +
                                      + +
                                      +
                                      + +

                                      + {cms:archives name="content" /} +

                                      + +
                                      + +
                                      + + + + + +
                                      + + + + + +
                                      +
                                      + + {cms:arclist id="relate" row="3"} + + + + {/cms:arclist} + +
                                      +
                                      +
                                      +
                                      + +
                                      +
                                      + {:__('Comment list')}({cms:archives name="comments" /}) +
                                      +
                                      + {include file="common/comment" type="archives" aid="__ARCHIVES__.id"} +
                                      +
                                      + +
                                      + + +
                                      +
                                      + + + + + \ No newline at end of file diff --git a/addons/cms/view/default/tags.html b/addons/cms/view/default/tags.html new file mode 100644 index 000000000..e9aef5c95 --- /dev/null +++ b/addons/cms/view/default/tags.html @@ -0,0 +1,55 @@ +{layout name="common/layout" /} + +
                                      +

                                      + {cms:tags name="name" /} + +

                                      + +
                                      + +
                                      + +
                                      + +
                                      + + + {cms:pagelist id="item"} + {include file="common/item"} + {/cms:pagelist} + + + +
                                      + {cms:pageinfo type="full" /} +
                                      + + +
                                      + + +
                                      +
                                      diff --git a/addons/cms/wxapp/app.js b/addons/cms/wxapp/app.js new file mode 100644 index 000000000..562fe2398 --- /dev/null +++ b/addons/cms/wxapp/app.js @@ -0,0 +1,293 @@ +var Towxml = require('/assets/libs/towxml/main.js'); +App({ + //请不要修改 /addons/cms/wxapp.这部分,只允许修改域名部分 + //请注意小程序只支持https + apiUrl: 'https://liyi.roonsen.com/addons/cms/wxapp.', + si: 0, + //小程序启动 + onLaunch: function () { + var that = this; + that.request('/common/init', {}, function (data, ret) { + that.globalData.config = data.config; + that.globalData.indexTabList = data.indexTabList; + that.globalData.newsTabList = data.newsTabList; + that.globalData.productTabList = data.productTabList; + + //如果需要一进入小程序就要求授权登录,可在这里发起调用 + //that.check(function (ret) { }); + }, function (data, ret) { + that.error(ret.msg); + }); + }, + //投票 + vote: function (event, cb) { + var that = this; + var id = event.currentTarget.dataset.id; + var type = event.currentTarget.dataset.type; + var vote = wx.getStorageSync("vote") || []; + if (vote.indexOf(id)>-1){ + that.info("你已经发表过意见了,请勿重复操作"); + return; + } + vote.push(id); + wx.setStorageSync("vote", vote); + this.request('/archives/vote', { id: id, type: type }, function (data, ret) { + typeof cb == "function" && cb(data); + }, function (data, ret) { + that.error(ret.msg); + }); + }, + //判断是否登录 + check: function (cb) { + var that = this; + if (this.globalData.userInfo) { + typeof cb == "function" && cb(this.globalData.userInfo); + } else { + wx.getSetting({ + success: function (res) { + if (res.authSetting['scope.userInfo']) { + // 已经授权,可以直接调用 getUserInfo 获取头像昵称 + wx.getUserInfo({ + withCredentials: true, + success: function (res) { + that.login(cb); + }, + fail: function () { + that.showLoginModal(cb); + } + }); + } else { + that.showLoginModal(cb); + } + }, + fail: function () { + that.showLoginModal(cb); + } + }); + this.login(cb); + } + }, + //登录 + login: function (cb) { + var that = this; + var token = wx.getStorageSync('token') || ''; + //调用登录接口 + wx.login({ + success: function (res) { + if (res.code) { + //发起网络请求 + wx.getUserInfo({ + success: function (ures) { + wx.request({ + url: that.apiUrl + 'user/login', + data: { + code: res.code, + rawData: ures.rawData, + token: token + }, + method: 'post', + header: { + "Content-Type": "application/x-www-form-urlencoded", + }, + success: function (lres) { + var response = lres.data + if (response.code == 1) { + that.globalData.userInfo = response.data.userInfo; + wx.setStorageSync('token', response.data.userInfo.token); + typeof cb == "function" && cb(that.globalData.userInfo); + } else { + wx.setStorageSync('token', ''); + console.log("用户登录失败") + that.showLoginModal(cb); + } + } + }); + }, + fail: function (res) { + that.showLoginModal(cb); + } + }); + } else { + that.showLoginModal(cb); + } + } + }); + }, + //显示登录或授权提示 + showLoginModal: function (cb) { + var that = this; + if (!that.globalData.userInfo) { + //获取用户信息 + wx.getSetting({ + success: function (sres) { + if (sres.authSetting['scope.userInfo']) { + wx.showModal({ + title: '温馨提示', + content: '当前无法获取到你的个人信息,部分操作可能受到限制', + confirmText: "重新登录", + cancelText: "暂不登录", + success: function (res) { + if (res.confirm) { + that.login(cb); + } else { + console.log('用户暂不登录'); + } + } + }); + } else { + wx.showModal({ + title: '温馨提示', + content: '当前无法获取到你的个人信息,部分操作可能受到限制', + confirmText: "去授权", + cancelText: "暂不授权", + success: function (res) { + if (res.confirm) { + wx.navigateTo({ + url: '/page/my/setting?type=getuserinfo', + }); + return false; + wx.openSetting({ + success: function (sres) { + that.check(cb); + } + }); + } else { + console.log('用户暂不授权'); + } + } + }); + } + } + }); + } else { + typeof cb == "function" && cb(that.globalData.userInfo); + } + }, + //发起网络请求 + request: function (url, data, success, error) { + var that = this; + if (typeof data == 'function') { + success = data; + error = success; + data = {}; + } + if (this.globalData.userInfo) { + data['user_id'] = this.globalData.userInfo.id; + data['token'] = this.globalData.userInfo.token; + } + //移除最前的/ + while (url.charAt(0) === '/') + url = url.slice(1); + this.loading(true); + wx.request({ + url: this.apiUrl + url, + data: data, + method: 'post', + header: { + "Content-Type": "application/x-www-form-urlencoded" + }, + success: function (res) { + that.loading(false); + var code, msg, json; + if (res.statusCode === 200) { + json = res.data; + if (json.code === 1) { + typeof success === 'function' && success(json.data, json); + } else { + typeof error === 'function' && error(json.data, json); + } + } else { + json = typeof res.data === 'object' ? res.data : { code: 0, msg: '发生一个未知错误', data: null }; + typeof error === 'function' && error(json.data, json); + } + }, + fail: function (res) { + that.loading(false); + console.log("fail:", res); + typeof error === 'function' && error(null, { code: 0, msg: '', data: null }); + } + }); + }, + //构造CDN地址 + cdnurl:function(url){ + return url.toString().match(/^https?:\/\/(.*)/i) ? url : this.globalData.config.upload.cdnurl + url; + }, + //文本提示 + info: function (msg, cb) { + wx.showToast({ + title: msg, + icon: 'none', + duration: 2000, + complete: function () { + typeof cb == "function" && cb(); + } + }); + }, + //成功提示 + success: function (msg, cb) { + wx.showToast({ + title: msg, + icon: 'success', + image: '/assets/images/ok.png', + duration: 2000, + complete: function () { + typeof cb == "function" && cb(); + } + }); + }, + //错误提示 + error: function (msg, cb) { + wx.showToast({ + title: msg, + image: '/assets/images/error.png', + duration: 2000, + complete: function () { + typeof cb == "function" && cb(); + } + }); + }, + //警告提示 + warning: function (msg, cb) { + wx.showToast({ + title: msg, + image: '/assets/images/warning.png', + duration: 2000, + complete: function () { + typeof cb == "function" && cb(); + } + }); + }, + //Loading + loading: function (msg) { + if (typeof msg == 'boolean') { + if (!msg) { + if (!this.si) { + return; + } + clearTimeout(this.si); + wx.hideLoading({}); + return; + } + } + msg = typeof msg == 'undefined' || typeof msg == 'boolean' ? '加载中' : msg; + this.globalData.loading = true; + if (this.si) { + return; + } + this.si = setTimeout(function () { + wx.showLoading({ + title: msg + }); + }, 300); + + }, + towxml: new Towxml(), + //全局信息 + globalData: { + userInfo: null, + config: null, + indexTabList: [], + newsTabList: [], + productTabList: [], + } +}) diff --git a/addons/cms/wxapp/app.json b/addons/cms/wxapp/app.json new file mode 100644 index 000000000..34e3c9178 --- /dev/null +++ b/addons/cms/wxapp/app.json @@ -0,0 +1,60 @@ +{ + "pages": [ + "page/index/index", + "page/news/index", + "page/news/detail", + "page/product/index", + "page/product/detail", + "page/my/index", + "page/my/comment", + "page/my/profile", + "page/my/bind", + "page/my/aboutus", + "page/my/setting" + ], + "window": { + "backgroundTextStyle": "dark", + "navigationBarBackgroundColor": "#DE3639", + "navigationBarTitleText": "FastAdmin", + "navigationBarTextStyle": "white" + }, + "tabBar": { + "color": "#aaaaaa", + "selectedColor": "#28ba9c", + "borderStyle": "black", + "backgroundColor": "#000000", + "list": [ + { + "pagePath": "page/index/index", + "iconPath": "assets/images/tabbar/index.png", + "selectedIconPath": "assets/images/tabbar/index-hl.png", + "text": "首页" + }, + { + "pagePath": "page/news/index", + "iconPath": "assets/images/tabbar/store.png", + "selectedIconPath": "assets/images/tabbar/store-hl.png", + "text": "资讯" + }, + { + "pagePath": "page/product/index", + "iconPath": "assets/images/tabbar/addon.png", + "selectedIconPath": "assets/images/tabbar/addon-hl.png", + "text": "产品" + }, + { + "pagePath": "page/my/index", + "iconPath": "assets/images/tabbar/my.png", + "selectedIconPath": "assets/images/tabbar/my-hl.png", + "text": "我的" + } + ] + }, + "networkTimeout": { + "request": 10000, + "connectSocket": 10000, + "uploadFile": 10000, + "downloadFile": 10000 + }, + "debug": true +} \ No newline at end of file diff --git a/addons/cms/wxapp/app.wxss b/addons/cms/wxapp/app.wxss new file mode 100644 index 000000000..19054a434 --- /dev/null +++ b/addons/cms/wxapp/app.wxss @@ -0,0 +1,152 @@ +@import "assets/styles/weui.wxss"; +@import "assets/styles/font-awesome.wxss"; +@import "assets/libs/zanui/index.wxss"; + +page { + background-color: #f8f8f8; + font-size: 14px; + font-family: -apple-system-font, Helvetica Neue, Helvetica, sans-serif; +} + +.page__hd { + padding: 40px; +} + +.page__bd { + padding-bottom: 40px; +} + +.page__bd_spacing { + padding-left: 15px; + padding-right: 15px; +} + +.page__ft { + padding-bottom: 10px; + text-align: center; +} + +.page__title { + text-align: left; + font-size: 20px; + font-weight: 400; +} + +.page__desc { + margin-top: 5px; + color: #888; + text-align: left; + font-size: 14px; +} + +.page__title { + display: block; + text-align: center; + font-size: 20px; + font-weight: 400; +} + +.page__desc { + display: block; + margin-top: 5px; + color: #888; + text-align: center; + font-size: 14px; +} + +.p10 { + padding: 10px; +} + +.p15 { + padding: 15px; +} + +.m10 { + margin: 10px; +} + +.m15 { + margin: 15px; +} + +.share { + position: absolute; + top: 20px; + right: 20px; + width: 24px; + height: 24px; + border: none; + background: #fff; + z-index: 99; + padding: 0; + border-radius: 50%; + line-height: 24px; + font-size: 14px; + opacity: 0.6; + color: #444; +} + + +.archives-list .zan-card { + border-bottom: 1px solid #eee; + padding: 15px 15px; +} + +.archives-list .zan-card__thumb { + width: 100px; + height: 70px; +} + +.archives-list .zan-card__thumb .image { + border-radius:3px; + display: block; + height: 100%; + width: 100%; + background-repeat: no-repeat; + background-size:cover; + background-position: center center; +} + +.archives-list .zan-card__detail { + margin-left: 115px; +} + +.archives-list .zan-card__left-col { + margin-right: 0px; +} + +.archives-list .author { + font-size: 13px; +} + +.tab { + background: #de3639; + position:fixed; + top:0; + z-index:99; +} +.tab + view{ + padding-top:45px; +} + +.tab .zan-tab__bd { + background: #de3639; +} + +.tab .zan-tab__title { + color: #fff; +} + +.tab .zan-tab__item--selected .zan-tab__title { + color: #fff; + border-bottom: 2px solid #fff; +} + +.tab .zan-tab__bd--scroll .zan-tab__item { + min-width: 70px; +} + +.tab .zan-tab__bd--scroll .zan-tab__item { + min-width: 50px; +} \ No newline at end of file diff --git a/addons/cms/wxapp/assets/images/avatar.png b/addons/cms/wxapp/assets/images/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..27535961c89dfc30aea6292dd9bdff525dfd9d00 GIT binary patch literal 15135 zcmeI3e{dVc6~|W+nAjmrAWY4V(p;6MO#{-MBulmqNjR}W>=3DLtYEutvCpTqeMHio zrE?^E+QdNPhGtp_KO86_xcLKy^ao5}3?#$YEy=hIQz&tuC1etj$rNx(2rz+=Vw*il zme#VI4Ge$o&B%J*{l541KJV@7{<(W<{j27cTw4MFm{(KnU5mblwa*;%2gIMZy^X$# zmFmVA0CN{=A07Dpj;jHvSSAG;)CS)gUX;UTAt<*(b0Vy0Uchy8LJ`FEP-R+SyA*L7 zKioHDWTc?mSa0`nKBWqFNYy=2Sl8nZh&}5?XV7@Fr^J=uQGhU11tt*=MPhuyZA``G zk*y80MkXau*Sn3&wS-KAua>EjqmZ$i9VU@;lr!Z{v&CLsURHi1W92M%mb0-o&SbUm zWgK5-Wipr1Q-Um4G}y+k_1=<6hyHULJ5*KSSvDSzo8vaK9BpSUPN$RQtgO{)LJCu? zJE95+QzW)H9b_tw7skY>q^Ob{VYIkHtK6l!jYcg|_R8E>Sji@e#4_vNVB+UGikR}E2Jyr zLifs7MWLX|(SR(6Jn1g0okGY|Ri(O$S?Uu+DWY-xk&DfD%2hlU4|)X^dQe9?Oq|VR zwFfxVjyB$Ezk#dZISvbwR_4X<$w8^D8;ena!e}up<-Dy7kAW%kW1t-r6jb4&qTpIA zPEh3AJyKX`hpZB5cd@xaOquN~zDf?sQM4@RvAEbm!XSmM@?UltYZNFqf2ft!y z%zZ}aA4es0)(Ig@qpkj{rYI0*MyhHlhB~wx>s-{osne_uc1|Cing~g$Q%Mn`F{tf1 zw{dFIWskA!DW&-T@;Q+ED3G zDb?&jVse`r7ou=^JL-vx+wJMN(;f2@xLEBMAS6vMMS664g{FFTW<_1v!N#L*Kr0hc zRX`0sV=R|Bt#8n(8tO{v%dH%`Sc~>Iad1p&cC4`qJV=sZvh)GX*^xXZ6HpGM?#TVL$4r zTBb+QBLjL`VY81b)61OQ4BxPkyQOb9FdmL3!D$d}ii?N{7f@U{4WdnP5fR}6iVLSf zv?(qkB3wXm;WUUg#YIGf3n(s}2GORth=_0j#f8%#+7uTN5iX#(a2iCL;vyo#1r!%f zgJ@G+L`1lN;=*YVZHkMC2p3RXI1QpraS;*W0*VW#L9{6@A|hNsap5$GHpN9mgbOGx zoCeXRxQK{w0mX&WAleic5fLt+xNsUoo8lrO!UYr;PJ?JuTtq~;fa1bw5N(Q!hzJ)@ zTsRG)O>q$s;R1>ar$MwSE+QgaKyl$Ti1r0>mE>Lkgc0=CUmU&OxBbk{m(i<%j99(a z2SCpf0DA8R;PXlJ{XPI)8~|f20Pqh3P%7WweBc%U^m2`Nc_4A*e@BGhoMaaCy>oQZ zznNLCztVdjqq{=hv#F^6=WXo^_Z?n#?%2X}{~C4IG&a>8E7D#-ytwOw-yM6s{?(DD z(&Wc|69>=TI(MMx*5hqeZ-6;{6OR<1(7ko&-nVYNPC2ycrb`V6{qv7(4Gf3h`^kU% zixWK?Z~yCH@{2#|9hKdk8;y1QbsKu#FwavCz2a}|UGwxSyTGUJ;nn&}#+LqF7Z^2g z>n|lFevLTOYVBr{5^1d?wJ+fiPDxJh>V^7wr$xhE$&e>y(*w-fcN&$4I7MwY!aR24018e6q> z?AQCwkDNNsRvd1&ygzhubkjd~PwZ-%+!$Q8(zEn+;^1620z>RpPm1{W4Qd22e#Kg^tiui@S!K)^HpqNlT@(Ls@lA@s_^6_7hxXSJ{&K5wPbEHIKOT_jR=1 zvnVOuvGY3a^DkbzbiQue6QxdFsp-8FhQPD>Goe3zbVYJt$@M?$U9p%1iLp>UQ9+ E1dk%0J^%m! literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/error.png b/addons/cms/wxapp/assets/images/error.png new file mode 100644 index 0000000000000000000000000000000000000000..c6da85483dcc5d62b6e3f8ac07b929879e6a226e GIT binary patch literal 4513 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 literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/ok.png b/addons/cms/wxapp/assets/images/ok.png new file mode 100644 index 0000000000000000000000000000000000000000..a7b76b7840df647d3086ee4cc3a054419e3f24bd GIT binary patch literal 2518 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 literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/tabbar/addon-hl.png b/addons/cms/wxapp/assets/images/tabbar/addon-hl.png new file mode 100644 index 0000000000000000000000000000000000000000..1c4905dc62f8f90580015d39411202bb55b1c495 GIT binary patch literal 1946 zcmZ`)c{tQ-8~!0XCpuX&6KWa<(JV$|M$*^`HFicC#$bxE46+rG%w+2*K`q8`v9$o|UqKf@p-r)KaRPt@9RNtV1OQ*b zqZB>>#DFP_WB|Yy0DxKqyN!4RypRewZfgZHh%L+ZWRPSd?7SHu+x=TMeP@q?Q+oDR z1h=>eLE(8vS5Nic62{g^GUeKU-g7qn;;e0UsuoOJ>|+5_jwDXkrw{)vo@v+13Dm_G z5!L;5i4K`bdK#)3%GP27l?0a7bQE9o|+;>YNYGio2rBoymn(@pA zY)3ThYsafM;Nc1tRdR}6*AL0J;#SkJ%wgh!Z${D)qPu??~-b{ z__@Oi@7D%o8FylD$jw&BcDcFoy zoE3NL#MDE^$s>w0=%yx8taY(R?VE*{hQe#7Zo2YSv~m-5%Otk8DmC6^7@F8;e)&>( z`{>jiXkJ0cqL~E}&?>p5aX(@F9xvTpzey5uT<5pahR)9T?Puh%>oa6+9UYy@_V&kA zgP^4FmkJhMR}t;c7U$-y)k2vVD}u5*|Lu0KC^t#RkuQv{*>g8oF_pWlaxm$)(Yn{s zOI$G}Wz_A*6O!penoAdjEALf*r`vJ!>t)E@GL--1e(Uh?i*qb%xb^wbmbr|#_bJ-@ zx>RxPH1zY8uWx=2*|*kvO}YstN)@kxyp!M9J4LK>>+ctLc-L9svPUj}BQ^7=w!US> zhdgr()rtM8os=iO`*u~W4;(}9l35l>xqDfLIm{n3>f9;px~B67T=tY^>r=(9?b0-Z z?pLqg;1vi>?_W6x1nKoVr-9X0$))wYU7MwZTqVs?^#m* z>XdI|Dj#)pbM#u_YQ^z^Fk5+1DtnxslvkXC;9Ty@)%;6X8`+?BHD$dJd%9zT7|E{k zIOuVTk)|}cS^PsoLp!sEad2w!Jz+8grKPFS?^Gefj*L}(q5i!;(4dglUa|sx3W411 zz$G@Lc}w0yi}HfAX9VH5DnA5%WJT#RqBvQ|Zjm6sr$5dNF~BNNn#L|_))>KH52;rf z(j&vVML{D~&dx7$0wQZ`YsY^^r?jB4o}qK_0|yRB0X9<-#afN=0-UB7CSl2|J^Ssa zwlUT@-4iO%rk~YKP2X+?Q=&&F5@P0|!hBm(yki}Y=Q&^Ff;0WJY`VIU+0oHj#_boX zEZb~MHk=bwH8K-Lhdh&KD%V;syj@DLP+NO^p_Fb?PKa47$t%+%5NVd4;Rd_h&^ z^(f{XJs^NYO8z8cF8g3aSED4K8acPlwv_N_ZyTohSz0BHdowaThRDeI-s-kSMFOK{}ab3Hr=xqrOuK~sW z8UA5!wtDbBZfH_^d*!#ar!kh&5EtOEja*l+ofubL4}icV$&_*+G;4QC_MhSnsHbAh z_aJs5;SchWssnG+Czzhs12H$RyiCsTbK|4+7tBV^@1pnqup4-87S+87@yTSFl)qm5 z_{e2z;-$Qr!e9dl{UOd$0zZ^hBodNH2wrY7cXaWLD^I@VwwbGjjk}u(?x6w4eIX~9 z+KB!@w07HVNUieDh|5?txV(!79fYynDOMEN{slzrh57!E4GlUyMVV^Zbw4?OiK2o8pphsOLnOu!W$cDR;f*nPH0B`E z1dl|rJx-zj#}F1CNDGSp{|15ld=6;v`L%%&8;lR|XHX4eqG&)6EtHB!AP^zpVN`^F zU>J>#pi#osLb%Mzu VFxJaG;|jP1u(x)$s<$Ag{ulC@dX@kH literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/tabbar/addon.png b/addons/cms/wxapp/assets/images/tabbar/addon.png new file mode 100644 index 0000000000000000000000000000000000000000..9adc227a5620141fe4462bfe19aa973dd4a464e5 GIT binary patch literal 1855 zcmZ{lcU05K7RP@Gp^8hd2`W++mykjdAO<~w1QL-dWsy!OL4kx2$^#z+h!0#uSX7o0 zq$~kJr3fM&QBZJ~u8V-8AYi~%h=BBEf7yTDKkwbonfpC==G=Q{&Y3fF)yctDURFyM z004O^h2#P%QZy7KK`)i7-wTRFDAAq>01er4djSwI7K?VVwE}8~pi5wIj7D*>2Y>_v z0N`)|U`d@r!?WJLyhye88%O%cH&`J1LS#9RcdORwQw9lh<83JdnN^jXG$d9|W)pf?SG2 z&pRx7&#ZNw3ti-CT46wQ6@RH#ii19nf_iuw-7G9DRlQL5imsr)S=%2XQpCW0 zlK9ULLdE@UUn|D;E|hBvB->_}-R5(wua9}EX8%l^fBo>%sG|s}BfQk}Oxbu}BiMmA zK-E5T!x$nQmdI%qnmU_HcY0q@P@l8nz52;_y?o;06{GyrYJEGEXdB0M($VZS+MdQ4 z92)&j#Mq?gTKOV*FmqtwTzlw=aBda`H};SX_tBQFi0GggF6kA^%io2I7$48b$VmUL zDlsdEAkNJk|7+i>`jLlXQ0cL1%OQ_LDQzEPhCkh| z(&09h>Wo<@XldV4<3UwbF*Yq&c>7w}ts--`N>G-b!Hy$N{& zr9^XfZsz{hQxvbvIBDY0+{Jv>_O=zBWDuxOmg_{lQ&BgZ37&6n%R)IHPWsRziL2k( zSeV-K+>6UX{*rI^yMAXUi}?E_V4g>_XfD@fTr0V%LF$L1(+i9EH4EAARZ`@bVkQ{O ze6i59)uHyrC)?{3*pS~WYn5x*;ZW6l*z--V{hNe=>3s`rp!@2(UWOJ_&p1Hl?w(fG zgY^w6te{cswfHxV<*Gn2zvu9xb^2G6jMy=UDaKnR*^k3^Zbgk^89zFDfoy(Tv{xt> zhW2Z+LRNfRr3NgHax#{Q74(jNKV=SOD2*~6uebzw_maI|+)u2MbtS60^3QZ>NHi#) zYIxN2y-sfwiwEtFIZ>ab&XVG?%#2SJnwd--PCspdxyWwc2UNWX4oIC86bD?&IuS8Kx0 zniv@w=@$>G6Pr_;E*?9@k2~vekHXf&E5T$VUz{MO3b&rb$W6e#)iWc!S|b*kZ*?c} zr+r$Cz12)iwW{)sLViLO(785r5@Po&@qysBh|7OTq2qHZJi&lJo0kGpYQB`Y6yeM}NNJ7;{8cVi!X?wfFUFMgTxou%cIItavb zeEJZ40N_G@{(yi{;LV&pKU|ncRC2u$^}@Iq-Kzs zvBFtC|ADgf*fIH9Kg1iH*5TGaHr|qOh9CxV6Ukul!^eD_3!eqjgiX0UK zXM`8Jy+ONud~>PJOTPFLUF^;^HO`CwDHJIM!ziT#p*1`p{*dE)nQh0LbVYbMxghz) zP0giUy-p(rAg-Z9=-+VlKl*3dzdw9n9vSLsrI2d7x_tfW>XNr}C8#+Ph6b$K&Eo`a z`sPa2v@fd|`c_~QXDh|FHe;)+luB6&s_#Rj%paG%sU*15ut3}jO< z>f_d46YI9WXEc%Yd>6J7*HMzM;Y;X=-5zv zU_f**JcbnpgoK3$;}Hl1oe>d?2ndP@i$sLc7?JQ0MkE`-j$r;1`GuLGP&j0~Sx{71 q4B9lFh0rHs^{t5d78rf9naC5(O~A6;!Yv-y1)!20NVQh}sec2`J2l_{ literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/tabbar/forum-hl.png b/addons/cms/wxapp/assets/images/tabbar/forum-hl.png new file mode 100644 index 0000000000000000000000000000000000000000..5823074c4e8e1c05edcfcf032a9bcbc5f036a7e1 GIT binary patch literal 1227 zcmeAS@N?(olHy`uVBq!ia0vp^1|TfJ1|-=hsU87REa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+3=GW4o-U3d6}R5rj`avmlwkkxfAdUZjug?% zi|lN%USE87>`R!euu`zLQZU5ZOP@+v?*yfv*Pv_#rh zdxOy}7o8g={^DQnu@v?3et&o6^X@zMK5uybbN=T3!`2QQiY)?<>Rle&CWM`P{Og#i ztLtLNDDTMSeiudWJYVkWTG9S=hiPipyS7WmS{d5f+I|>>CHR$_Zx2$uI>++!(rbH9 ze_yryc#h;{#wX8h>#p3`P^w)cvUt@rF&4wA*_$_&oL5YKbI{z%$f)UP2=Dbi+48y zzrX+5#k{Vg$D;C$wIudGwwU-7HxSYzzx{XPEn! zCx;ylee-xOE34aU9_9yAH6G0T6lWio_B`zwmw>Pb(*++?r1O@s!2Vt0j`jR!HI~o% zRdugr^N%~%+G=bZnKy^N{&m6=nLzEg+V&f zzvo^0KK-NX$wcArbBxydbzS-<=Ayf&;Z9usKL?BD7o#Iro-??*;%)ERuKYiCkBim> zt3TZ-p?l)7`ke!H_GevY%<`K*Z^!gc`48)M+!W`iQRAOF@xJ{vtDjPE9(7FXY8W%a|t>Z0v8 zIropSH=3%) zPWkY&$Ly)rGW(XRWv`!9`8-Qs9sW5x=lD)`{wsEscmFP*`>ML5EU`RYUHnGa!=0zE z{@?K9&pa26lx=5r{9j=BamLKfPj+pG9e-b4y+!1~>!(laWAoJG9%LK*c$swlB>(YK zry3YoHD+G9yL3_`qlPBi#D~q{MivaIa~va5K6J4%1@JU&xbZ-gn{~k-uB2m^3wFE= z$Xr?V<+RlH+u`NE%^X}zKK`z35pe1V`OC8A<^L-Twz1~Ge5YFC8c~vxSdwa$T$Bo= z7>o=IEp!cxbPdcx3{9+zjjRk!wGAw+3=HaL=v+Y2kei>9nO2Eg1K-gpIY148ARCIy z(yfvbi&J$=i!vF~GILU`^!4>K@^e%56H{_C^Yk;5^Ye7m^7BgcOL7aqy!gr#lgzY~ roa_>d#FXTUBK?%i;^fle;&|gUJ)miur|;gTe~DWM4f1$ZD{ literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/tabbar/forum.png b/addons/cms/wxapp/assets/images/tabbar/forum.png new file mode 100644 index 0000000000000000000000000000000000000000..c73538a1f5498bd0f5743b55c32a1cd27d4ee309 GIT binary patch literal 2321 zcmb`IdpMNa8o<99CL$4qq||YQ#0+Jh3_}>VgiI>e+=j_*41?L@HnX?NmP_Swrqnd{ z422phl^Ww#9dt1=8)nv zyJ9>5Aay^ObRGa!K@;^e03;&-KokN1$ZG(gMYzfFwgDZR!rWcZpajQ?V*>>gn+dLd zL{Pf^KAm61*aCn;r5oDb=lc&|hP_;Mak_1D0_%nc`yRV(+vlq0k15^HF8_XRuf2_> zc~org@jkn3Om)b~Ty3Qv_+eW+O`j=l{=io!yzh*T%2z5>=Po{^^@qi6>&B>S5D`^w z9+e$jR9=j$dvrLRK0t0}ys@}DAgH@RW(*JPJRuM6;*W-W{=9Wd(PI8L5KS!?P5s=f z{}M%eGts+k52E<`C^)yQt>>DKiCJF;$4iV_yC)!r?mty4Iwj#3*7THc=2w&buE6}3 zm(HNd6c$@LT$2tUchGfo@3E^vI0-Lixf>m`Bx;_|fs$htDPI!nZ6!X1g~j6yv&W8y zspmRNcnY!SAC|CV+q=`2&NhmtYV}L5zIL5((d)fciwaJY)(g_Rgd~9Us~+k=LXJDP z{)|qAw+kC9;M{z(Vo7ftXv?ak8bNN)A4!Hn09ryj9MYwk4b?J(P z)x*kq%ZBuKo9X>c857T6Uno%q&!u#V48eK|p9Rcvi`a&n#>;!_f-f_6EEEV~YK`h3 z^L+s`n(eDC&Hkt_?3$_=k$>{z_hUA20Cl^4vHxesvt5wqXqpHU6D()d*+_*$#vt{+gSasnB7S!8gpHNULV58$@_geQM>N>g=4CS*;3L zs+%aQ#tSin)%B<1?`D3n6qXbDRs%ibBZK^pBcCR&3f`?lSlm6M(vp*GNhb3~IG#5! zJ5BngXRAA?0kSZ5*-MP%N;wUdHq#@i8?@jKz4CRhF4@tP;HHWlsY~~o#$uD&-w-zR zDa);#=%B|nO)Iz4X6G$d9Bc_O%AijEuR2-U^P-dm*F9ZfGT|0P35K z?`3l=_Xwujlkv!Z&~G$0j;oTSWh_8i#Gs5!yZGRGb|!!7rkx&FB}zw`K>9lJ)C2(HBg!0ZCm?A{p+=;vWAmJCiryd{5O^KPM z>!F=`N!wdew{}3R-tp&`$>aI%W(KrE_lgR>K@fjwByC)kETyu5zLW4J%*NY8Gi_hL zI+I?$EzmN~+wQECeQ_wQj^L!TBI(p41a5x1@4B*UYUQu8d7v55jpDe7-||vX?Q2l&cXFvA z*q2jQN3VTW4`RAs%x=6jMuwp8Fi&<@wc5KK!xWmBob8fJ{2)SlYeYMEY*8Vjcni?V z|MVfp&MGTQaqk&f$o0}Q3(?YCcr19at>py}?7iuLf%=EFbwzd1mZF1ZqLks9K`#cc z4_)%*&b4C|n5v%EteMlFv<=l?rEJ}+Sj>)%ur4S!Fr5^M!Xw&W7nG1G(~PT2%0CQU z{*J|BI_2WygVP{D7WP{juI+k4r0qIlP?=(yEr6pb9J^tLZ6f-0Md0hPgnxI3VX%{t zG_{5Y+nmKJ-OY8_Cat5+Osnpj=gbZcSu{qZzF9P6e1-;4~s~)A&wTf zW>D#;1v>|@*xh|RUg-r8*arNH@^Q#IeJ!Z9CTOOwn)#I2%<7Ynp(fPjmeH|ph zGqL9OW%|^HU*IF2KaO1&&-JF&xWBLXC8}AY)d?c+bL0~B0$9>VTP7m6-Tz92!LH~h zvJ`!npIwA@n71B;YG&3jfkYn!7{-_~qUs90z_1rTLKSnSw?mZeVvVR*=5B-Wp-zzV zJ)dNzY0$LGNQQ|CF$HN&r?Xi6zkBc(*B89j6&m>_jm;bQ;V1ZjdeuGHU$b|?LVg<0 zkwFW7a^RlQ-H&x$pW`s$d#hOIi_tX-fPgzeG?&GkN1Mb|B@KpZiw@7u7 zLemUvu=m-c4WQE?$;mef8=4e>3{Q*z1z>?NKVphFY-)bU$NUKLkU996AdVmri2gt| z*<$}qh>OQYMUwwKp$byT1rso`FA!63$gogiglTeO6c8B|8-aww;pgJxBH*FexF|e4 zDm)%<8X1pIf+xihe%FG@VPvvJ4BjdZhmDKGr9{E8QN-|MA~E<-q#3x}`8G8z*?!!d LJkd1{AwT{G)K($1 literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/tabbar/index-hl.png b/addons/cms/wxapp/assets/images/tabbar/index-hl.png new file mode 100644 index 0000000000000000000000000000000000000000..c84c1f791b31fc37dc7d1ae72b67427df60c86bc GIT binary patch literal 2654 zcmZ{mc{tQ-8^?dfSi%^xjWtfTL&KmfLu22w?_14;sj-b18A5g$ks;alC9*WO93(GyU^OmAP}2EiWr;uOWn+z+TJ#qIs)mEhAgN#jH;HcGko1d@r2R4P;*~ z&dfGHI~$eb;p$W5Y@O@g?v>ndT#*Q?#I-aDefnb%`9^<$MQkb?IteVmK6I@mVK8XD zd*dwyB7;3@;<0_>f(PJ&r8+XVWsl%j2dp&o&qlDZ;kd^GRTPZTZzb4wRUi%avX)#- z)-o~IXRc=Y^7^$NABw}fzh|HZEOC!p@1u2e1(|#t7v%UY?>phodhb;gWuvr;&Z}%Q z5E#uVeiV)BUaeWEwGl{38P}p1tou$;NqwnHX@*i#6E+*?UiCo&-P)UG*M3aN@w69o zquNxxH>Mj2Q&#y5_I6UI4T3d0aK$77k#q5FQN0R+N0jmD+M2YNt*JCy!UXxq!$}>P z@YnJph+*)%{^0KVI)Z76$Jft)^BrayQnG*?Wc~j8t;QDK!zB^tW9_^TzvVE!7lJ6q z)(&2$Iab!*iAqm!e$zE`DP|sv))B2)tf5t_*N0tF2kl?UiB@?wk5GW!Ob*izz&|X43%ut94*;(KqZdA!dV`U@1fw!?? z=?w}B7C{e^bPY8$_?epy*1B22Ui{n%9&+;I$OE>0O?4eH;J9yu)3V%S@Q?rt;Z$nY=s|AobVUN|C`qcVq%=I!;z z z%fUPfRk0%Le2!abddJ4%QTO&MnF|HkH`@0?=nt1v{+uQzVKER-}-HJ^>|$zwo#pr!83L>`! zbpwGCJ-(g>f&2|zHaGneFpqa!$> z@2pOU_MEK__32enSw>s{+yn$V_CBj=mT*1!bNC|LzQp8CrFrq)jl{|Gl^Ml$>2j@5 zXwsFfxcM}(1g&bY8^5`4k+!bJK`5alWa*v|Kir3dKl~mF4zINAzQlyVzhh3*(AeaS z(r{%pwwF8L)_w)T{k@cjS}ZKrvu12|M@b~@g0H-nSF5Nc)G}%X^~-x*;fehN z+qKj-4dnjilSd50C*cNN9_}I{aX%^bB}?`3_I41---enS8iqT?I9C*dgAcV_qMG_g zp-IcZl0PTmyr85da;4Nfl9T@lXAq}G*7I`f9N}R-Dd_P@O-J&HxRku8=q=u3@YUAV z$km#8*T2dpFOEEEn-X=s(<4*t-g%q)FnNd;5vPA77Nl_;%`=ww5nER1|M=?m_9AR6 zG4|Kw+}ux7t7ODx;GuFW)T%9T8-g0tja6FlG?;UHR=1NlK<@b>?^K=5=l8hifZsp7c$8kaop^fsxq?B^E;$_fm=`7LI z**SCWvaKKgxnB)oH-CxmHuk}ERQx(vN;2VJ7wco#ZYJ`;;U{UqV3q0qb-fFKeX5v6 zsNl@OS4a+n@OU;3H!RvaPawr!AtlA2lWVnmyW;xKHvL1G@LqdY*dk%-Q3KQAHdp{ zni439Z4T@GviZoau8yMk5);B1<(Bsudfn08ZB`}iPESYW$s&nj%~w(79n?;379Wp? zM9G6ZBpmX{FtwpQv5BdP_Y8lO-mGwh7DjRWt8+ZR7$%R5Yh+zdP3a#ZDT1Lh!3#t1 zMtTN$(*YY0X;IoQ2+n{ literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/tabbar/index.png b/addons/cms/wxapp/assets/images/tabbar/index.png new file mode 100644 index 0000000000000000000000000000000000000000..b9297ff96b8b518f215396e6b4b30d1de4c2172d GIT binary patch literal 5314 zcma*rcT^Kg-vHnZL7GxUx)c$xKmY}#1+Eln(n9Y|N@$^X2v?D&0vag-(v=>1C!q>R zRX~s+p+f*6h|=2|?)%SozH{Dl?mWBuJF}UYowIc^ae6vxv@{$v007WxsH?z8G4f(% zpdf8gXiO|AkUKxreh2_niI-38E|KyeUznN_fF9;rBV~9U)M45H5F$vb6a@fBq+O8& z0Pq(BfOT5{kWB*sRBb3{!^zC|QN!cVwlUoED6%+f?kYAPVU(I|N2(D{iMq{_TS$@do6N$2!#OTY`2( z&z0j-)O~Q^K3?YjEdFo>F9$?1C{gkK%MByFs!620CEcf7>9=@{9n<5d8r0NZt~V?1 zpPe2Cs8cN|D=giQPBx88W`+DE9i@DLwmP__5TA%PbAX7arfJb}GtVSY;+DOnxe^Mq zS1jQ06ND+-aQ8dut30^iAq88WN_w_uabk>u5vTr}+qn6F$E6{-(oA@g9b6 z9qYFK+h6mOXo{0?n3kfWIg0}p>~12`6n)_jfv<%76}pW;le9Ab((92l|BV~9wj!pN zA&_Vl^{DQoq?Mzv$K5KA<&oBx$I0s2)7TE9!<4b!bCC_xpF<_y%Yw+rvY;EA#Pi_m zvfDuLRwg06QH#k6G%68aQWWo6=gMau%L22;|6s)?EZ2mk%wjQqTFnA8B}IDmcPx_2 zsj2av6~?(nF4qK64Q-Q-7=>|?KbVjvB~bea!OC{I*~hBsY^%jZO%Asi5E~N|ix^wU zMYg@4dN=c=(|xe#=TkCC*egT+n(9$ASuJO#_qq{+dVZH;Lw(F31CD~I5>i52zlw}x z;Gw_Q$9uUb>B_yn*eh&eLHjdXGtGe;_;R<&SEBA=c8ixaG`i?%6(vr-Y)m_lZqf6&?gi4C?(zDP) zlPZ%HQ{U>e5JI|6IQLfPx%0n=ZS;Zdd(dL%>hvH)}MyJ@L?tmI7=iQ+tY=lCpa;ByCK~F-RdjmXJav5wlzn}gh_R8~u8SS1p*K4(Ngih_fF{9c zO3T@{Y|+ZEHHDQlB2QH-2`@xT>@QGUVXLzrkJrDOu3#lawhf|J(LlGV&RxWUlk26RMD7{_xd_cH zxEZKuqRV0L{PX2|N_v(QiJPyKKslgUuHwKyE*=^ramN}MN^UiL&va1ejOyjPnSphJ zl>>Ge%)h(-Cgj9Av_10ZN#V0`p!>cD$fn5mA4jYwAMlMiuMLqMqcpJ z9$yRDaqp(m-|b+2-0{|-caAm)j1T&y8i)#+{w`Jj>Jo+Q)9W1xbISvVcwI$D8iTaa zlH{}ra&lYt6gxBH6pq|SMT~b%cKnZdg1e10G&zoq-?PDF~<8#_7*$1GQ7 zlD@sqkw>+qOrPv7Y~rkZEJ?x+1K`;qSYud<`;vu@E7oVm&JPa9lYEs~uZVueC$ zOloQ#;2~BjbzO@ALUv4or^mB(sji~mtmEV2XyZv_{rZe#plXW%r8F-TQ>823`l^j> z=|NlE3}?%O0ODs<-o_%NjR-n$h0%{Jn8_cnWQ4#*W-i;9jMtK!W9l`@S0jPT&n{m{U92F;Si)f#DC4d4L|TY@Sy*T)YH&oNw))Q@BO_H7`;{{ zxz?c5W%DmjryE)t_oSg@-uZTr-8Jo?VP`+O zL@a5nDJ5}hi!gsso-tA0$kx-&#KoUS2CD*kfr=8e|bZJI^lvZj->u!V(cp ziZET|m~IYJ5&4}Xb!fiLK{Gcr2cXHZoy8ur>Yl=n)RnQ4J_QOQ=I(M?5x80Fs0CkW zBxQBGlSF{JmDDF>Kgq<4C_&J}MiVLW2 ziSDN!udcROSjyyZ>Cv?w3TE|;1_9mmZthORRM6Y-;Oj~QbmR)(Pgnj; znXv6uwdv9%#*Pv{%s?FAB10k-ygQ9#Y_vG+ZwT5i9R4=XVJW)Q)7|%AiF4-_n6lN1 zzCs9Op$SXO);m3(3_x#MP6rdMo3}BGXQ~hPf6lLt@c+g4X_kgsaz!5w&bpK}-^dzOmpm60Z z+GzuHaf!p@(UEh`|P83(gBd@Fx++Z~&a zGVJj2?1)+>L9|jo4DdfnyE~M;(%;|zF~S`c3Wx|6uU`Cz;8Q+$-iB11)ndiYa#AkZ zT27+nr?H4^b974S^4G8Ec+%NsVB%wBQdX+nGY>64O}M`9noJd%ag>=p~y^}+;$-l6nQ$lEL;u2m>+DgfA?N=fel zcm147`F7z2Ym0^Tkm3DrgG*0X`jyNGLfP9GGF0>x_UggMTCYF!!6Xn_y}ezFL=ioj zw@>x+4_@5N)Twx2SrIfdji{on?~vkGOGk>G+n(92>X~rSnbZj_OWIos=5F{LVDXY!1xmb*LOsu@N_D=H!n>PL4 zN7p(1e~#ZaSSs13)3S}jLc;GCaZWvt*=FEQmxv3jgTbsjOt!C;6(1Jc@4A5}$_)|& zYV&723)dP7#Mfuf$|A`$Bd{FBk4j#fnXL)G|4@^y!?fY1xQ_5x2}Pj}ZB8$VX~&Ft z%j#4V%_TMo>A3${m8iRM6v?ij;XuS6_qvAWcouNG4dANlSzfrKJgPmWrBY{+v%hgq z$*?AWnCuEZj3QKt+L#Bs`0+;RhR}i`+0pIpxb=S$He4-{8yfP5Kx{*}ho+x2zEEo| zHQAjqljcy%r@S`m90-43t7Bdmary(ZJ(-FYwX(tGf^|AIq%}@rmF=$xzi_N7>+4ff z;-(J1`D7A(wAKTW7aL^&6)lkWHOWNj%1bhU zkKz$1k^!6#{1yARKET`EehXl*w`B&X#KmZUC^oiBfYKG=$~B&ct;8QP#>4$)!LT=k zbb=QHUFXB#;IJ1HR@9^%Ke3U+1btbF+t>$HCGpR@wdcBi1W&ffW*qPAoiu08eZwoN_+?Di_dFnT%nxymwQ1=Z(OAcIsIdkt}l9 zzRFZMgZ|n71)z8gcBztD>UPb6~6)-!)HqM{i90 z@-T~5t)yb{-+F1XO=AuJrs)@+p)E$PyxruRSNfGfaX56Z{c#%g{gJF|R@p0^xT=6M zD}Tws=qa(|LH3jZA2alf=Zpi1fj)?e>Q-~gznrc5XIASM;vC#tQ9f{^^P>c5&P~8i z)zt5aou8wugO4LA0QbbirA5RfM8xkKic8Dh7bh)u#iV7$#J*cHkjnp`3Lc0jaHrt^ zU7;9M)Jm%G_~Hn@0nW1acD{}x{yuQP3GVJFD=I4Lg79z@wR_?L_Y{RYAUs8!5T1Ub vejZ-`b literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/tabbar/my-hl.png b/addons/cms/wxapp/assets/images/tabbar/my-hl.png new file mode 100644 index 0000000000000000000000000000000000000000..1d02498db0a5f66368e51a4b0a20f10b1217823a GIT binary patch literal 2179 zcmZ`)X*kq-8~%GSVh-`v*s_-86tj@6K{3M&p%59PVvLb}hS8vf36ZhIAtaJLl>OKv z(IP|kHIZe=nw_D}biTbG-rsdSzx%qM=eqCbx}Gn0l;tI?pn#+R004rfCPvmAMEovc z5a;JhRBYn_&rL%MLjWj`2Oki4Ih>1XjYR>kx}+93M2=`;Z2mSq4gmX{7JVK7 zZgE_`I{^SP6#&F2PwTDpI0KNg8PXRExak)ciC z=<<_$mNr8Y@16zNXKQ5p>|&C%-bR-HomFjGB&<=NWfnUien6KsR+8EB4P(ao}yafj(-MuwdMW z!SUDLKjZh5=h~kIkJb^V_+#^{lXvPPo%=zP+lI3nd;!e#Na1bJS?@6nUc=elQW#db z<7=hFZsz7b&D$)@^O*a>)52E~+HCMx;u8-A#g{o$R^ZTy#>38EnMGlbX#CZgq)Y3ihlSIBBHXtA2NTwQOsnP*Q~Bv zd#wt=PD{|Hp{m4>f5yf(5wAA(SF-v~XEE~B>z)Q|jdN2%W+&|T@;c2`(V&aT9SMUu zH3XN%*4FW)xyT!~3k!{lEK&NW3%_In*9;AS=0(DeTGM83}(qr>0I-Oryd#GH|mmd+cL4UfxslmBB{_sekxS%}RxgTjM=s-cqP zkfkNn>J`i3>qJddX=G%7eIj2A9w94s=T6?BbmF}VNa$hB*Nae?Os^A?Ssq?V_z>YcYLF2SdTePA-gbMUUa?xQSxikZn5h>h zGn-F-oQrB@=9SMu960y@oDmb=W?m42I)1yIJS|vg4?Hlh-iW=CZ zb-+E)0oqOQlB`cwR=9Bc+R?8UzO}~R!f_qUTU76NCCZ6y7FL*TM+%J>2%d-x)@s(=2Nu{HW3DhF(N_VH|ralK|Gt<9~tfm%@;OX1rJJc-WJ*g z%iL)y5|BITywuA_KH5K5Oe3(&qs@Rhn_2CL8BU~guaozMm@KL z?!nGX{rUJyYk5`Mw8q#p6LSmiD=H2B>3)6@V+DkxEfz0UnY!s|rgoG}AD{8vs%adk zeH!N|3*jf}q$RhT<6QBH355R08&N|wHPP4O7Z;P^ta~eS7+S0Hyt%2N!0Y@MKYkpK z`jze9nOcxJe_{#K{`1gV|KdF_UsNk)Pt%JlQ1#`oAH~i^q2a@vdO<77lSRDg%k8+e zogLm`?`JQeS++G(G}Kq@WD_zgAUCdI=TEDUY%pOfrNuzXd=GW6U4QPBQg~jDj`}lW z!l4WRuW^e?h(;{qqS)KpS4)dCH7iSx9gFRH{{5E2&hoSjojuz7E|dv_t<^LuHo7C^ zz%8?@Fu||7C*9;}w*qnsN)7)We_yctr~~d=u)8C^D2t{pg{Vj|qS+HC$Wy*-Nz6I^ zRYhe7-3$nq-ff0cK~E?V4<$S1MjS@{jCHCWUDOs+Uho$Za%PE0(;FOTpENdAy7t^& z3V-t{x<=j_O`Qx6R4#Zu$tSpzjzYJ0ok9Y%4C#Eqsj0@;Nx?(zg(@8dqou$fDRNMh z8`c0Ia|fcIJr`Z&0WqZENMK)BUT2#1ehgUQar)1IMcPSP?e1AQNU1!vS7Bm{s+@Ah zK4G`XMT9H2!ba(@DXF{`!tuKUE$OzMYv$zs%W@~_8W&F)8t8!A#QwXviq$0*zKvgA z0tt2AG&)e6C#UiU*@><02feknWPo>81f^2DAMOHDmKL)8gX>y!?U@+U-NILwmI8aY zj`VzhxUyIqoURwL(_igJ$=%7Euy!NU<{v6a2i{W!ZMp<;@+8Wqe~{5#(IZX-k-~edv24$-xiLJj9{=2 zx=OA$;Y)sqM%+Wc>&7l5)rX6(=>A~x{38FoC507t6=A396{+&_D2S@eGTU+zt*Q+_HspxNv z^LHWmlaNF|5(fZvgqjW%p$f+_;uS0Ml2KvEoQAvI{QUp` literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/tabbar/my.png b/addons/cms/wxapp/assets/images/tabbar/my.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b0acee9597202fef0f5a3463440ea83242c4aa GIT binary patch literal 4963 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 G(SHDx7Fs_5 literal 0 HcmV?d00001 diff --git a/addons/cms/wxapp/assets/images/tabbar/store-hl.png b/addons/cms/wxapp/assets/images/tabbar/store-hl.png new file mode 100644 index 0000000000000000000000000000000000000000..9dff58143fe316197f8a5d5df72b26afba60ea52 GIT binary patch literal 1439 zcmeAS@N?(olHy`uVBq!ia0vp^1|TfJ1|-=hsU87REa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+Kk}L4Rn%eH&&dS2n z=R#uRQt83sv!thhMA+k~V#K zeRI0|^!0mx{aPFwyE)cxYs2wXx8uK6=!ngY^P4t5H@}@-x^7oj3rJGL3?OC9q zapd!tSO5O*e}5ud<90~!;xfsrOlMaA(XZrYV*Ii|=;+R!d!7sEYkZCHJM8MJe6+7J zb+=wj$5y|tuLneqFIDY5DJhxsp}zl%sOChwwJQQ*#a}n3Ec`O}k(dATyBT*TwPkO~ z{+P5i)sTC^auLae|35tYHQ~bED~%g|{XC-MaDYv*!Pto*y@lc2iy7)W9;jaZ`}c&K zS#81Nwr8)WKjbqC4o-C7i`yDC^ZR1MH!L}hGxnI9itb(a`R~N(Q%!eSPTy0RR}=Gl z!L(`9WH;rkGnsm?^v*6;ecRr!?$(EAOj_qQOg6aKY&G{w-j<5K)f)^fw;!%Ex^Z)5 zX^)P!?RP0L-JrN7zdvlg=&^@kUV^1jZsI>d7rx7Hm)v}=%rNEq*7*7VO3j}tzSAml z%{eqjkjX-srNE8jL65)z$+G)RXFfb;S$b;07RSiVMNjW6`K=txy?b}1xs3MYT+Xe< zJ=Wz(yjcc;p+~ja=QcbKV4b~a!tuqH7tih6H~U|yeeVB)oSw*e$CfOK$+CIK*UG`+ zp|xA4jOkVZ>-iH#-zM1neS7cT6o0E{mA`-ezPWV~?-SiW9r{8-8zjGKY>Z-zYJY$8 z>Bjv6tDPC&e15*TPwc_%rQVUxGY_4yp7-!Uy1;A$P?&Nsf*gIgMtIrUBi^(4WR;Gd z68q(4aANnvdYk)3Nvii}oL$0s_{+gY<{kZpPt?^mok~_u(62FYQ9Assz%%IQySoj= zYcEUo8lAq}b?YVj=WN-&W9r>q7u?D({<*q3^5{n44~%Ay`r`7}nTy`ZwWyafw|)~> z{U@IDvdx{v(|OrgUPv1}f3o3R^8eWzX4mz8`uci#{27~L`cI4-YV7{bkxQAcZk7mj zB_wEl-Y~sd;%l)~V~@W@oZ{&RYOAlDS5IS{)Huysd7;32x5uJY68V=;T$pfc*9_J_ z+pcEJ`NZBl;iUTtNr?w{3-&mgO?v%AcD{e^+%DUM$ZywjCvrqKB!78%DaeLN`Ieem zh55O;HJ=O%*_qV*E8;H&yZ5coo&VMTm(INI!C8<`)MX5lF!N|bSLf61Z*T5{q(8S8v$jZ=E+rYxg zz@UDH&IJ?=x%nxXX_dG&@Ex6!1Jn=+vZ1&v-6|=uI90c_D3c*AGbhzbUtd2XKQ~oB zF(o%MPd_s`KTkI;Kd(f;B)0&}i?2*E$xKVh$u6--Oi8XN(pPmgQ?)cxwJ--U91T?+ YjrD-0zP&ED7ibBCr>mdKI;Vst094O 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 0 + }, + /** + * 验证电子邮箱格式 + */ + email(value) { + return that.optional(value) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value) + }, + /** + * 验证手机格式 + */ + tel(value) { + return that.optional(value) || /^1[34578]\d{9}$/.test(value) + }, + /** + * 验证URL格式 + */ + url(value) { + return that.optional(value) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value) + }, + /** + * 验证日期格式 + */ + date(value) { + return that.optional(value) || !/Invalid|NaN/.test(new Date(value).toString()) + }, + /** + * 验证ISO类型的日期格式 + */ + dateISO(value) { + return that.optional(value) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value) + }, + /** + * 验证十进制数字 + */ + number(value) { + return that.optional(value) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value) + }, + /** + * 验证整数 + */ + digits(value) { + return that.optional(value) || /^\d+$/.test(value) + }, + /** + * 验证身份证号码 + */ + idcard(value) { + return that.optional(value) || /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value) + }, + /** + * 验证两个输入框的内容是否相同 + */ + equalTo(value, param) { + return that.optional(value) || value === that.scope.detail.value[param] + }, + /** + * 验证是否包含某个值 + */ + contains(value, param) { + return that.optional(value) || value.indexOf(param) >= 0 + }, + /** + * 验证最小长度 + */ + minlength(value, param) { + return that.optional(value) || value.length >= param + }, + /** + * 验证最大长度 + */ + maxlength(value, param) { + return that.optional(value) || value.length <= param + }, + /** + * 验证一个长度范围[min, max] + */ + rangelength(value, param) { + return that.optional(value) || (value.length >= param[0] && value.length <= param[1]) + }, + /** + * 验证最小值 + */ + min(value, param) { + return that.optional(value) || value >= param + }, + /** + * 验证最大值 + */ + max(value, param) { + return that.optional(value) || value <= param + }, + /** + * 验证一个值范围[min, max] + */ + range(value, param) { + return that.optional(value) || (value >= param[0] && value <= param[1]) + }, + } + } + + /** + * 添加自定义验证方法 + * @param {String} name 方法名 + * @param {Function} method 函数体,接收两个参数(value, param),value表示元素的值,param表示参数 + * @param {String} message 提示信息 + */ + addMethod(name, method, message) { + this.methods[name] = method + this.defaults.messages[name] = message !== undefined ? message : this.defaults.messages[name] + } + + /** + * 判断验证方法是否存在 + */ + isValidMethod(value) { + let methods = [] + for(let method in this.methods) { + if (method && typeof this.methods[method] === 'function') { + methods.push(method) + } + } + return methods.indexOf(value) !== -1 + } + + /** + * 格式化提示信息模板 + */ + formatTpl(source, params) { + const that = this + if (arguments.length === 1) { + return function() { + let args = Array.from(arguments) + args.unshift(source) + return that.formatTpl.apply(this, args) + } + } + if (params === undefined) { + return source + } + if (arguments.length > 2 && params.constructor !== Array) { + params = Array.from(arguments).slice(1) + } + if (params.constructor !== Array) { + params = [ params ] + } + params.forEach(function(n, i) { + source = source.replace(new RegExp("\\{" + i + "\\}", "g"), function() { + return n + }) + }) + return source + } + + /** + * 判断规则依赖是否存在 + */ + depend(param) { + switch(typeof param) { + case 'boolean': + param = param + break + case 'string': + param = !!param.length + break + case 'function': + param = param() + default: + param = !0 + } + return param + } + + /** + * 判断输入值是否为空 + */ + optional(value) { + return !this.methods.required(value) && 'dependency-mismatch' + } + + /** + * 获取自定义字段的提示信息 + * @param {String} param 字段名 + * @param {Object} rule 规则 + */ + customMessage(param, rule) { + const params = this.messages[param] + const isObject = typeof params === 'object' + if (params && isObject) return params[rule.method] + } + + /** + * 获取某个指定字段的提示信息 + * @param {String} param 字段名 + * @param {Object} rule 规则 + */ + defaultMessage(param, rule) { + let message = this.customMessage(param, rule) || this.defaults.messages[rule.method] + let type = typeof message + + if (type === 'undefined') { + message = `Warning: No message defined for ${rule.method}.` + } else if (type === 'function') { + message = message.call(this, rule.parameters) + } + + return message + } + + /** + * 缓存错误信息 + * @param {String} param 字段名 + * @param {Object} rule 规则 + * @param {String} value 元素的值 + */ + formatTplAndAdd(param, rule, value) { + let msg = this.defaultMessage(param, rule) + + this.errorList.push({ + param: param, + msg: msg, + value: value, + }) + } + + /** + * 验证某个指定字段的规则 + * @param {String} param 字段名 + * @param {Object} rules 规则 + * @param {Object} event 表单数据对象 + */ + checkParam(param, rules, event) { + + // 缓存表单数据对象 + this.scope = event + + // 缓存字段对应的值 + const data = event.detail.value + const value = data[param] || '' + + // 遍历某个指定字段的所有规则,依次验证规则,否则缓存错误信息 + for(let method in rules) { + + // 判断验证方法是否存在 + if (this.isValidMethod(method)) { + + // 缓存规则的属性及值 + const rule = { + method: method, + parameters: rules[method] + } + + // 调用验证方法 + const result = this.methods[method](value, rule.parameters) + + // 若result返回值为dependency-mismatch,则说明该字段的值为空或非必填字段 + if (result === 'dependency-mismatch') { + continue + } + + this.setValue(param, method, result, value) + + // 判断是否通过验证,否则缓存错误信息,跳出循环 + if (!result) { + this.formatTplAndAdd(param, rule, value) + break + } + } + } + } + + /** + * 设置字段的默认验证值 + * @param {String} param 字段名 + */ + setView(param) { + this.form[param] = { + $name: param, + $valid: true, + $invalid: false, + $error: {}, + $success: {}, + $viewValue: ``, + } + } + + /** + * 设置字段的验证值 + * @param {String} param 字段名 + * @param {String} method 字段的方法 + * @param {Boolean} result 是否通过验证 + * @param {String} value 字段的值 + */ + setValue(param, method, result, value) { + const params = this.form[param] + params.$valid = result + params.$invalid = !result + params.$error[method] = !result + params.$success[method] = result + params.$viewValue = value + } + + /** + * 验证所有字段的规则,返回验证是否通过 + * @param {Object} event 表单数据对象 + */ + checkForm(event) { + this.__initData() + + for (let param in this.rules) { + this.setView(param) + this.checkParam(param, this.rules[param], event) + } + + return this.valid() + } + + /** + * 返回验证是否通过 + */ + valid() { + return this.size() === 0 + } + + /** + * 返回错误信息的个数 + */ + size() { + return this.errorList.length + } + + /** + * 返回所有错误信息 + */ + validationErrors() { + return this.errorList + } +} + +export default WxValidate \ No newline at end of file diff --git a/addons/cms/wxapp/assets/libs/towxml/entry.wxml b/addons/cms/wxapp/assets/libs/towxml/entry.wxml new file mode 100644 index 000000000..dcfba7423 --- /dev/null +++ b/addons/cms/wxapp/assets/libs/towxml/entry.wxml @@ -0,0 +1,10 @@ +