From 4bb318149aa924ebadaeddc6a8deb55b28510109 Mon Sep 17 00:00:00 2001 From: gongfuxiang <2499232802@qq.com> Date: Wed, 19 Dec 2018 01:11:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/admin/controller/Theme.php | 195 +++--------------- .../admin/view/default/theme/index.html | 4 +- .../admin/view/default/theme/upload.html | 6 +- application/index/view/default/config.json | 2 +- application/service/ThemeService.php | 187 +++++++++++++++++ 5 files changed, 220 insertions(+), 174 deletions(-) create mode 100644 application/service/ThemeService.php diff --git a/application/admin/controller/Theme.php b/application/admin/controller/Theme.php index d3098c141..7600686ad 100755 --- a/application/admin/controller/Theme.php +++ b/application/admin/controller/Theme.php @@ -1,6 +1,9 @@ Is_Power(); - // 静态目录和html目录 - $this->html_path = 'application'.DS.'index'.DS.'view'.DS; - $this->static_path = 'public'.DS.'static'.DS.'index'.DS; - // 小导航 $this->view_type = input('view_type', 'home'); } @@ -48,95 +44,33 @@ class Theme extends Common */ public function Index() { - // 模板列表 - $this->assign('data_list', $this->GetThemeList()); - - // 默认主题 - $theme = cache('cache_common_default_theme_data'); - $this->assign('theme', empty($theme) ? 'Default' : $theme); - // 导航参数 $this->assign('view_type', $this->view_type); - return $this->fetch(); - } - - /** - * 模板安装 - * @author Devil - * @blog http://gong.gg/ - * @version 0.0.1 - * @datetime 2016-12-06T21:31:53+0800 - */ - public function UploadInfo() - { - // 导航参数 - $this->assign('view_type', $this->view_type); - - return $this->fetch(); - } - - /** - * [GetThemeList 获取模板列表] - * @author Devil - * @blog http://gong.gg/ - * @version 0.0.1 - * @datetime 2017-05-10T10:24:40+0800 - * @return [array] [模板列表] - */ - private function GetThemeList() - { - $result = []; - $dir = ROOT.$this->html_path; - if(is_dir($dir)) + if($this->view_type == 'home') { - if($dh = opendir($dir)) - { - $default_preview = __MY_URL__.'static'.DS.'common'.DS.'images'.DS.'default-preview.jpg'; - while(($temp_file = readdir($dh)) !== false) - { - $config = $dir.$temp_file.DS.'config.json'; - if(!file_exists($config)) - { - continue; - } + // 模板列表 + $this->assign('data_list', ThemeService::ThemeList()); - // 读取配置文件 - $data = json_decode(file_get_contents($config), true); - if(!empty($data) && is_array($data)) - { - if(empty($data['name']) || empty($data['ver']) || empty($data['author'])) - { - continue; - } - $preview = ROOT.$this->static_path.$temp_file.DS.'images'.DS.'preview.jpg'; - $result[] = array( - 'theme' => $temp_file, - 'name' => htmlentities($data['name']), - 'ver' => str_replace(array(',',','), ', ', htmlentities($data['ver'])), - 'author' => htmlentities($data['author']), - 'home' => isset($data['home']) ? $data['home'] : '', - 'preview' => file_exists($preview) ? __MY_URL__.'static'.DS.'index'.DS.$temp_file.DS.'images'.DS.'preview.jpg' : $default_preview, - ); - } - } - closedir($dh); - } + // 默认主题 + $theme = cache('cache_common_default_theme_data'); + $this->assign('theme', empty($theme) ? 'default' : $theme); + return $this->fetch('index'); + } else { + return $this->fetch('upload'); } - return $result; } /** - * [Save 数据保存] + * 模板切换保存 * @author Devil * @blog http://gong.gg/ - * @version 0.0.1 - * @datetime 2017-02-05T20:12:30+0800 + * @version 1.0.0 + * @datetime 2018-12-19T00:58:47+0800 */ public function Save() { - // 配置更新 - $this->MyConfigSave(); + return ConfigService::ConfigSave(input()); } /** @@ -151,33 +85,13 @@ class Theme extends Common // 是否ajax if(!IS_AJAX) { - $this->error('非法访问'); + return $this->error('非法访问'); } - // 主题 - $id = str_replace(array('.', '/', '\\'), '', strip_tags(I('id'))); - if(empty($id)) - { - $this->error('主题名称有误'); - } - - // 默认主题 - $theme = cache('cache_common_default_theme_data'); - $theme = empty($theme) ? 'Default' : $theme; - - // 不能删除正在使用的主题 - if($theme == $id) - { - $this->ajaxReturn('不能删除正在使用的主题', -2); - } - - // 开始删除主题 - if(\base\FileUtil::UnlinkDir($this->html_path.$id) && \base\FileUtil::UnlinkDir($this->static_path.$id)) - { - $this->ajaxReturn('删除成功'); - } else { - $this->ajaxReturn('删除失败或资源不存在', -100); - } + // 开始处理 + $params = input(); + $ret = ThemeService::ThemeDelete($params); + return json($ret); } /** @@ -192,70 +106,13 @@ class Theme extends Common // 是否ajax if(!IS_AJAX) { - $this->error('非法访问'); + return $this->error('非法访问'); } - // 文件上传校验 - $error = FileUploadError('theme'); - if($error !== true) - { - $this->ajaxReturn($error, -1); - } - - // 文件格式化校验 - $type = array('application/zip', 'application/octet-stream'); - if(!in_array($_FILES['theme']['type'], $type)) - { - $this->ajaxReturn('文件格式有误,请上传zip压缩包', -2); - } - - // 开始解压文件 - $resource = zip_open($_FILES['theme']['tmp_name']); - while(($temp_resource = zip_read($resource)) !== false) - { - if(zip_entry_open($resource, $temp_resource)) - { - // 当前压缩包中项目名称 - $file = zip_entry_name($temp_resource); - - // 排除临时文件和临时目录 - if(strpos($file, '/.') === false && strpos($file, '__') === false) - { - // 拼接路径 - if(strpos($file, '_html') !== false) - { - $file = $this->html_path.$file; - } else if(strpos($file, '_static') !== false) - { - $file = $this->static_path.$file; - } else { - continue; - } - $file = str_replace(array('_static/', '_html/'), '', $file); - - // 截取文件路径 - $file_path = substr($file, 0, strrpos($file, '/')); - - // 路径不存在则创建 - if(!is_dir($file_path)) - { - mkdir($file_path, 0777, true); - } - - // 如果不是目录则写入文件 - if(!is_dir($file)) - { - // 读取这个文件 - $file_size = zip_entry_filesize($temp_resource); - $file_content = zip_entry_read($temp_resource, $file_size); - file_put_contents($file, $file_content); - } - // 关闭目录项 - zip_entry_close($temp_resource); - } - } - } - $this->ajaxReturn('操作成功'); + // 开始处理 + $params = input(); + $ret = ThemeService::ThemeUpload($params); + return json($ret); } } ?> \ No newline at end of file diff --git a/application/admin/view/default/theme/index.html b/application/admin/view/default/theme/index.html index 3144da7b4..d553ba897 100755 --- a/application/admin/view/default/theme/index.html +++ b/application/admin/view/default/theme/index.html @@ -19,7 +19,9 @@