diff --git a/app/Web/Controller/IndexController.php b/app/Web/Controller/IndexController.php index b005e168744f2e9908a8b0cb16581de8e3690b80..0b9726eb8161d38e5674f39eab45238eb986c655 100644 --- a/app/Web/Controller/IndexController.php +++ b/app/Web/Controller/IndexController.php @@ -14,4 +14,9 @@ class IndexController extends BaseController InstallerUtil::checkForInstallRedirect(); return HomePageProvider::call(__METHOD__, CmsHomePageProvider::ACTION); } + + public function test() + { + + } } diff --git a/app/Web/routes.php b/app/Web/routes.php index d13f1aeb7c5ef3fe90e5f7df1d95faf2e8b748c1..1dac959b99c8584b49625885639c78d43c535390 100644 --- a/app/Web/routes.php +++ b/app/Web/routes.php @@ -12,7 +12,7 @@ Route::group( ], function () { Route::match(['get', 'post'], '', 'IndexController@index'); - Route::match(['get', 'post'], 'test', 'IndexController@test'); +// Route::match(['get', 'post'], 'test', 'IndexController@test'); // Route::match(['get', 'post'], 'member', 'MemberController@index'); Route::match(['get', 'post'], 'member/{id}', 'MemberController@show'); Route::match(['get', 'post'], 'member_profile', 'MemberProfileController@index'); diff --git a/module/Banner/Api/Controller/BannerController.php b/module/Banner/Api/Controller/BannerController.php index 1230b5f7d2964fc31e99fd6346024a738be1cd0b..63716e34cd22b44291941e1bf45d51d080a9ed94 100644 --- a/module/Banner/Api/Controller/BannerController.php +++ b/module/Banner/Api/Controller/BannerController.php @@ -9,8 +9,19 @@ use ModStart\Core\Input\InputPackage; use ModStart\Core\Input\Response; use Module\Banner\Util\BannerUtil; +/** + * Class BannerController + * @package Module\Banner\Api\Controller + * @Api 通用轮播 + */ class BannerController extends Controller { + /** + * @return array + * + * @Api 获取轮播信息 + * @ApiBodyParam position string 位置信息 + */ public function get() { $input = InputPackage::buildFromInput(); diff --git a/module/Cms/Web/Controller/BaseCatController.php b/module/Cms/Api/Controller/BaseCatController.php similarity index 82% rename from module/Cms/Web/Controller/BaseCatController.php rename to module/Cms/Api/Controller/BaseCatController.php index 05aaf1202c233a1e8f18fd75bc248bb454853348..75b95e808e05288b34685e908f8e346d716e5ade 100644 --- a/module/Cms/Web/Controller/BaseCatController.php +++ b/module/Cms/Api/Controller/BaseCatController.php @@ -1,8 +1,7 @@ getTrimString('id'); + if (is_numeric($id)) { + $data = CmsContentUtil::get($id); + } else { + $data = CmsContentUtil::getByAlias($id); + } + $cat = CmsCatUtil::get($data['record']['catId']); + $view = $cat['detailTemplate']; + if (empty($view)) { + $view = $data['model']['detailTemplate']; + } + $catChain = CmsCatUtil::chain($cat['id']); + $catRoot = CmsCatUtil::root($cat['id']); + $catRootChildren = CmsCatUtil::children($catRoot['id']); + $viewData = []; + $viewData['view'] = $view; + $viewData['record'] = $data['record']; + $viewData['cat'] = $cat; + $viewData['catRoot'] = $catRoot; + $viewData['catChain'] = $catChain; + $viewData['catRootChildren'] = $catRootChildren; + $viewData['model'] = $data['model']; + if ($data['record']['verifyStatus'] != CmsContentVerifyStatus::VERIFY_PASS) { + if (MemberUser::isNotMine($data['record']['memberUserId'])) { + BizException::throws('记录未审核'); + } + } + return Response::generateSuccessData($viewData); + } +} \ No newline at end of file diff --git a/module/Cms/Api/Controller/FormController.php b/module/Cms/Api/Controller/FormController.php new file mode 100644 index 0000000000000000000000000000000000000000..22fa91119fefbd4dcbaae2c9bc73181061ca9160 --- /dev/null +++ b/module/Cms/Api/Controller/FormController.php @@ -0,0 +1,112 @@ +getTrimString('cat'); + BizException::throwsIfEmpty('分类为空', $catId); + $data = parent::setup($catId); + $viewData = $data; + return Response::generateSuccessData($viewData); + } + + /** + * @return array|\Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\View\View + * + * @Api 表单-内容提交 + * @ApiBodyParam cat string 栏目标识(ID、名称) + * @ApiBodyParam content string 内容 + * @ApiBodyParam xxx string 其他信息 + */ + public function submit() + { + $input = InputPackage::buildFromInput(); + $catId = $input->getTrimString('cat'); + $data = parent::setup($catId); + $input = InputPackage::buildFromInput(); + $submitData = []; + $submitData['content'] = $input->getRichContent('content'); + $customFields = isset($data['cat']['_model']['_customFields']) ? $data['cat']['_model']['_customFields'] : []; + if (!empty($customFields)) { + foreach ($customFields as $customField) { + switch ($customField['fieldType']) { + case CmsModelFieldType::TEXT: + case CmsModelFieldType::TEXTAREA: + case CmsModelFieldType::RADIO: + case CmsModelFieldType::SELECT: + case CmsModelFieldType::RICH_TEXT: + $submitData[$customField['name']] = $input->getTrimString($customField['name']); + break; + case CmsModelFieldType::CHECKBOX: + $submitData[$customField['name']] = $input->getArray($customField['name']); + break; + case CmsModelFieldType::IMAGE: + $submitData[$customField['name']] = $input->getImagePath($customField['name']); + break; + case CmsModelFieldType::FILE: + $submitData[$customField['name']] = $input->getFilePath($customField['name']); + break; + case CmsModelFieldType::DATE: + $submitData[$customField['name']] = $input->getDate($customField['name']); + break; + case CmsModelFieldType::DATETIME: + $submitData[$customField['name']] = $input->getDatetime($customField['name']); + break; + default: + return Response::generateError('错误的字段类型'); + } + if (!empty($customField['isRequired'])) { + if (empty($submitData[$customField['name']])) { + return Response::generateError($customField['title'] . '不能为空'); + } + } + switch ($customField['fieldType']) { + case CmsModelFieldType::CHECKBOX: + $submitData[$customField['name']] = json_encode($submitData[$customField['name']], JSON_UNESCAPED_UNICODE); + break; + } + } + } + if (empty($submitData['content'])) { + if (Request::isAjax()) { + return Response::generateError('内容为空'); + } + return Response::send(-1, '内容为空', null, Request::headerReferer()); + } + $submitDataPrimary = []; + $submitDataPrimary['catId'] = $data['cat']['id']; + $submitDataPrimary['postTime'] = Carbon::now(); + CmsContentUtil::insert($data['cat']['_model'], $submitDataPrimary, $submitData); + if (Request::isAjax()) { + return Response::generate(0, '提交成功', null, '[reload]'); + } + return Response::send(0, '提交成功', null, Request::headerReferer()); + } +} \ No newline at end of file diff --git a/module/Cms/Api/Controller/ListController.php b/module/Cms/Api/Controller/ListController.php new file mode 100644 index 0000000000000000000000000000000000000000..cabca190aba8c5fd9f7b883ce802cc398c48c201 --- /dev/null +++ b/module/Cms/Api/Controller/ListController.php @@ -0,0 +1,53 @@ +getTrimString('cat'); + BizException::throwsIfEmpty('分类为空', $catId); + $data = parent::setup($catId); + $cat = $data['cat']; + $page = $input->getPage(); + $pageSize = $input->getPageSize('pageSize'); + $searchInput = $input->getAsInput('search'); + $option = [ + 'where' => [], + ]; + $isRecommend = $searchInput->getBoolean('isRecommend'); + if ($isRecommend) { + $option['where']['isRecommend'] = true; + } + $paginateData = CmsContentUtil::paginateCat($cat['id'], $page, $pageSize, $option); + $viewData = []; + $viewData['total'] = $paginateData['total']; + $viewData['cat'] = $cat; + $viewData['page'] = $page; + $viewData['pageSize'] = $pageSize; + $viewData['records'] = $paginateData['records']; + return Response::generateSuccessData($viewData); + } +} \ No newline at end of file diff --git a/module/Cms/Api/Controller/PageController.php b/module/Cms/Api/Controller/PageController.php new file mode 100644 index 0000000000000000000000000000000000000000..8fef9370b044eaf8c810572226a19d59de9901ec --- /dev/null +++ b/module/Cms/Api/Controller/PageController.php @@ -0,0 +1,39 @@ +getTrimString('cat'); + $data = parent::setup($catId); + $view = $this->getView($data, 'pageTemplate'); + $cat = $data['cat']; + $viewData = $data; + $records = CmsContentUtil::allCat($cat['id']); + $viewData['record'] = isset($records[0]) ? $records[0] : null; + $viewData['records'] = $records; + $viewData['view'] = $view; + return Response::generateSuccessData($viewData); + } +} \ No newline at end of file diff --git a/module/Cms/Api/routes.php b/module/Cms/Api/routes.php index a32fbb451c9e195af0a41955c9b4720965b7f945..cef2a4e9397b14aa23e63a41560554e1056db5eb 100644 --- a/module/Cms/Api/routes.php +++ b/module/Cms/Api/routes.php @@ -6,6 +6,10 @@ $router->group([ ], ], function () use ($router) { - $router->match(['get', 'post'], 'cat/get', 'CatController@get'); + $router->match(['post'], 'cms/list', 'ListController@index'); + $router->match(['post'], 'cms/detail', 'DetailController@index'); + $router->match(['post'], 'cms/form', 'FormController@index'); + $router->match(['post'], 'cms/form/submit', 'FormController@submit'); + $router->match(['post'], 'cms/page', 'PageController@index'); }); \ No newline at end of file diff --git a/module/Cms/Docs/release.md b/module/Cms/Docs/release.md new file mode 100644 index 0000000000000000000000000000000000000000..95b6939d63b9fe6f7db3c5814e51c21f7221c4a2 --- /dev/null +++ b/module/Cms/Docs/release.md @@ -0,0 +1,5 @@ +## 2.4.0 API接口全面支持 + +- 新增:API接口全面支持 +- 新增:接口文档补全 +- 优化:Web版调用处理逻辑优化 \ No newline at end of file diff --git a/module/Cms/Web/Controller/DetailController.php b/module/Cms/Web/Controller/DetailController.php index 8400aeb7f245e3fd103fdfdc75a9b45f2fc7c5ba..456ace26038fedce5b05dd165ae2284f064da5d5 100644 --- a/module/Cms/Web/Controller/DetailController.php +++ b/module/Cms/Web/Controller/DetailController.php @@ -4,48 +4,19 @@ namespace Module\Cms\Web\Controller; -use ModStart\Core\Exception\BizException; +use ModStart\Core\Input\InputPackage; use ModStart\Core\Input\Response; use ModStart\Module\ModuleBaseController; -use Module\Cms\Type\CmsContentVerifyStatus; -use Module\Cms\Util\CmsCatUtil; -use Module\Cms\Util\CmsContentUtil; use Module\Cms\Util\CmsTemplateUtil; -use Module\Member\Auth\MemberUser; class DetailController extends ModuleBaseController { - public function index($id = 0) + public function index(\Module\Cms\Api\Controller\DetailController $api, + $id = 0) { - if (is_numeric($id)) { - $data = CmsContentUtil::get($id); - } else { - $data = CmsContentUtil::getByAlias($id); - } - $cat = CmsCatUtil::get($data['record']['catId']); - $catChain = CmsCatUtil::chain($cat['id']); - $catRoot = CmsCatUtil::root($cat['id']); - $catRootChildren = CmsCatUtil::children($catRoot['id']); - $view = $cat['detailTemplate']; - if (empty($view)) { - $view = $data['model']['detailTemplate']; - } - BizException::throwsIfEmpty('模板未找到', $view); - $viewData = []; - $viewData['record'] = $data['record']; - $viewData['cat'] = $cat; - $viewData['catRoot'] = $catRoot; - $viewData['catChain'] = $catChain; - $viewData['catRootChildren'] = $catRootChildren; - $viewData['model'] = $data['model']; - - if ($data['record']['verifyStatus'] != CmsContentVerifyStatus::VERIFY_PASS) { - if (MemberUser::isNotMine($data['record']['memberUserId'])) { - BizException::throws('记录未审核'); - } - } - - // return $viewData; + InputPackage::mergeToInput('id', $id); + $viewData = Response::tryGetData($api->index()); + $view = $viewData['view']; return $this->view('cms.detail.' . CmsTemplateUtil::toBladeView($view), $viewData); } } diff --git a/module/Cms/Web/Controller/FormController.php b/module/Cms/Web/Controller/FormController.php index 681b2c0f3f80ab62ffe166df19c1790f0bcfa81d..6aa477e1177433f87e63260d839cbd1fdd4e0ef9 100644 --- a/module/Cms/Web/Controller/FormController.php +++ b/module/Cms/Web/Controller/FormController.php @@ -3,13 +3,8 @@ namespace Module\Cms\Web\Controller; - -use Carbon\Carbon; use ModStart\Core\Input\InputPackage; -use ModStart\Core\Input\Request; -use ModStart\Core\Input\Response; -use Module\Cms\Type\CmsModelFieldType; -use Module\Cms\Util\CmsContentUtil; +use Module\Cms\Api\Controller\BaseCatController; use Module\Cms\Util\CmsTemplateUtil; class FormController extends BaseCatController @@ -20,70 +15,12 @@ class FormController extends BaseCatController $view = $this->getView($data, 'formTemplate'); $viewData = $data; $viewData['model'] = $data['cat']['_model']; - // return $viewData; return $this->view('cms.form.' . CmsTemplateUtil::toBladeView($view), $viewData); } - public function submit($id = 0) + public function submit(\Module\Cms\Api\Controller\FormController $api, $cat = null) { - $data = parent::setup($id); - $input = InputPackage::buildFromInput(); - $submitData = []; - $submitData['content'] = $input->getRichContent('content'); - $customFields = isset($data['cat']['_model']['_customFields']) ? $data['cat']['_model']['_customFields'] : []; - if (!empty($customFields)) { - foreach ($customFields as $customField) { - switch ($customField['fieldType']) { - case CmsModelFieldType::TEXT: - case CmsModelFieldType::TEXTAREA: - case CmsModelFieldType::RADIO: - case CmsModelFieldType::SELECT: - case CmsModelFieldType::RICH_TEXT: - $submitData[$customField['name']] = $input->getTrimString($customField['name']); - break; - case CmsModelFieldType::CHECKBOX: - $submitData[$customField['name']] = $input->getArray($customField['name']); - break; - case CmsModelFieldType::IMAGE: - $submitData[$customField['name']] = $input->getImagePath($customField['name']); - break; - case CmsModelFieldType::FILE: - $submitData[$customField['name']] = $input->getFilePath($customField['name']); - break; - case CmsModelFieldType::DATE: - $submitData[$customField['name']] = $input->getDate($customField['name']); - break; - case CmsModelFieldType::DATETIME: - $submitData[$customField['name']] = $input->getDatetime($customField['name']); - break; - default: - return Response::generateError('错误的字段类型'); - } - if (!empty($customField['isRequired'])) { - if (empty($submitData[$customField['name']])) { - return Response::generateError($customField['title'] . '不能为空'); - } - } - switch ($customField['fieldType']) { - case CmsModelFieldType::CHECKBOX: - $submitData[$customField['name']] = json_encode($submitData[$customField['name']], JSON_UNESCAPED_UNICODE); - break; - } - } - } - if (empty($submitData['content'])) { - if (Request::isAjax()) { - return Response::generateError('内容为空'); - } - return Response::send(-1, '内容为空', null, Request::headerReferer()); - } - $submitDataPrimary = []; - $submitDataPrimary['catId'] = $data['cat']['id']; - $submitDataPrimary['postTime'] = Carbon::now(); - CmsContentUtil::insert($data['cat']['_model'], $submitDataPrimary, $submitData); - if (Request::isAjax()) { - return Response::generate(0, '提交成功', null, '[reload]'); - } - return Response::send(0, '提交成功', null, Request::headerReferer()); + InputPackage::mergeToInput('cat', $cat); + return $api->submit(); } } \ No newline at end of file diff --git a/module/Cms/Web/Controller/ListController.php b/module/Cms/Web/Controller/ListController.php index 74981d5a9cacbb1b4343e7e39ceb0ddd300bb0ef..720045554676cf85373765a926117b30a01c25a5 100644 --- a/module/Cms/Web/Controller/ListController.php +++ b/module/Cms/Web/Controller/ListController.php @@ -3,9 +3,9 @@ namespace Module\Cms\Web\Controller; - use ModStart\Core\Input\InputPackage; use ModStart\Core\Util\PageHtmlUtil; +use Module\Cms\Api\Controller\BaseCatController; use Module\Cms\Util\CmsContentUtil; use Module\Cms\Util\CmsTemplateUtil; diff --git a/module/Cms/Web/Controller/PageController.php b/module/Cms/Web/Controller/PageController.php index 290ccc72703c0c6ce0a1c6e32421fe14c58e274b..db0b7473d2dd9f3fa35c0262ddb7f7c80f5a8ff7 100644 --- a/module/Cms/Web/Controller/PageController.php +++ b/module/Cms/Web/Controller/PageController.php @@ -4,22 +4,18 @@ namespace Module\Cms\Web\Controller; -use Module\Cms\Util\CmsContentUtil; +use ModStart\Core\Input\InputPackage; +use ModStart\Core\Input\Response; +use Module\Cms\Api\Controller\BaseCatController; use Module\Cms\Util\CmsTemplateUtil; class PageController extends BaseCatController { - public function index($id = 0) + public function index(\Module\Cms\Api\Controller\PageController $api, + $id = 0) { - $data = parent::setup($id); - $view = $this->getView($data, 'pageTemplate'); - $cat = $data['cat']; - - $viewData = $data; - $records = CmsContentUtil::allCat($cat['id']); - $viewData['record'] = isset($records[0]) ? $records[0] : null; - $viewData['records'] = $records; - // return $viewData; - return $this->view('cms.page.' . CmsTemplateUtil::toBladeView($view), $viewData); + InputPackage::mergeToInput('id', $id); + $viewData = Response::tryGetData($api->index()); + return $this->view('cms.page.' . CmsTemplateUtil::toBladeView($viewData['view']), $viewData); } } \ No newline at end of file diff --git a/module/Cms/Web/Controller/SearchController.php b/module/Cms/Web/Controller/SearchController.php index 8db288f96767d70ea0c09c3a4bd18cf2ff617559..8c770053fc82b9d173a63104382f79e0d82da403 100644 --- a/module/Cms/Web/Controller/SearchController.php +++ b/module/Cms/Web/Controller/SearchController.php @@ -3,7 +3,6 @@ namespace Module\Cms\Web\Controller; - use ModStart\Core\Input\InputPackage; use ModStart\Core\Util\PageHtmlUtil; use ModStart\Module\ModuleBaseController; diff --git a/module/Cms/config.json b/module/Cms/config.json index 60c98b3175bed14a9ac5767df85140e4c0143c62..dbbdd930214c658d13f5d552415efee7ed5aec31 100644 --- a/module/Cms/config.json +++ b/module/Cms/config.json @@ -6,7 +6,7 @@ "Member", "Banner:>=1.1.0" ], - "version": "2.3.1", + "version": "2.4.0", "modstartVersion": ">=2.4.0", "author": "ModStart", "description": "提供通用的动态模型内容管理系统", diff --git a/module/Vendor/Docs/release.md b/module/Vendor/Docs/release.md new file mode 100644 index 0000000000000000000000000000000000000000..8c90d1c8b125a393a83680e9a8457a3edf314654 --- /dev/null +++ b/module/Vendor/Docs/release.md @@ -0,0 +1,6 @@ +## 2.4.0 邮件模板优化,内容审核增强 + +- 新增:UGC内容违规审核(UgcCensorProvider) +- 新增:内容人工审核(ContentVerifyProvider) +- 优化:邮件模板跟随系统主题色调整 +- 优化:无登录签名校验操作增强 diff --git a/module/Vendor/Docs/release/2.4.0.md b/module/Vendor/Docs/release/2.4.0.md deleted file mode 100644 index d0da47d13f68d0036166569fadd574afe14d1e6a..0000000000000000000000000000000000000000 --- a/module/Vendor/Docs/release/2.4.0.md +++ /dev/null @@ -1,5 +0,0 @@ - - - -- 优化:邮件模板跟随系统主题色调整 -- 优化:无登录签名校验操作增强 \ No newline at end of file diff --git a/module/Vendor/Provider/ContentVerify/AbstractContentVerifyProvider.php b/module/Vendor/Provider/ContentVerify/AbstractContentVerifyProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..1440ecbb20ffae7319b7504b78f1e4e0a6c0998b --- /dev/null +++ b/module/Vendor/Provider/ContentVerify/AbstractContentVerifyProvider.php @@ -0,0 +1,45 @@ + $table, + ]; + } + + public function notify($param, $title = null, $body = null) + { + if (null === $body) { + $body = [ + '标题' => $title, + ]; + } + NotifierProvider::notifyNoneLoginOperateProcessUrl( + $this->name(), '[审核]' . $this->title() . ($title ? '(' . $title . ')' : ''), $body, 'content_verify/' . $this->name(), $param + ); + } + + public function record($param) + { + $config = $this->config($param); + return ModelUtil::get($config['table'], intval($param['id'])); + } +} \ No newline at end of file diff --git a/module/Vendor/Provider/ContentVerify/ContentVerifyProvider.php b/module/Vendor/Provider/ContentVerify/ContentVerifyProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..feebcbfad378e345614c150cc9d8e024bf6df3cf --- /dev/null +++ b/module/Vendor/Provider/ContentVerify/ContentVerifyProvider.php @@ -0,0 +1,54 @@ + $v) { + if ($v instanceof \Closure) { + self::$instances[$k] = call_user_func($v); + } else if (is_string($v)) { + self::$instances[$k] = app($v); + } + } + return self::$instances; + } + + /** + * @param $name + * @return AbstractContentVerifyProvider + */ + public static function get($name) + { + if (empty($name)) { + return null; + } + foreach (self::all() as $item) { + if ($item->name() == $name) { + return $item; + } + } + return null; + } + +} \ No newline at end of file diff --git a/module/Vendor/Provider/Notifier/NotifierProvider.php b/module/Vendor/Provider/Notifier/NotifierProvider.php index be1a8064eca962e9baf589400a4027487792af78..23026cd19b6eb3a1739845c6f439472423a8ce00 100644 --- a/module/Vendor/Provider/Notifier/NotifierProvider.php +++ b/module/Vendor/Provider/Notifier/NotifierProvider.php @@ -11,7 +11,7 @@ class NotifierProvider /** * @return AbstractNotifierProvider[] */ - public static function get() + public static function all() { static $instances = null; if (null === $instances) { @@ -30,7 +30,7 @@ class NotifierProvider public static function notify($biz, $title, $content, $param = []) { - foreach (self::get() as $instance) { + foreach (self::all() as $instance) { $instance->notify($biz, $title, $content, $param); } } diff --git a/module/Vendor/Provider/UgcCensor/AbstractUgcCensorProvider.php b/module/Vendor/Provider/UgcCensor/AbstractUgcCensorProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..cd1677c4acc8fe0825aa15bb66d6d622182d4718 --- /dev/null +++ b/module/Vendor/Provider/UgcCensor/AbstractUgcCensorProvider.php @@ -0,0 +1,27 @@ +verify($content, $param); + if (Response::isSuccess($ret)) { + if ($ret['data']['pass']) { + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/module/Vendor/Provider/UgcCensor/DefaultUgcCensorProvider.php b/module/Vendor/Provider/UgcCensor/DefaultUgcCensorProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..2fe2cca657367d39844fad5b3d733c0292255edd --- /dev/null +++ b/module/Vendor/Provider/UgcCensor/DefaultUgcCensorProvider.php @@ -0,0 +1,28 @@ + false, + ]); + } + +} \ No newline at end of file diff --git a/module/Vendor/Provider/UgcCensor/UgcCensorProvider.php b/module/Vendor/Provider/UgcCensor/UgcCensorProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..1525f4cfdbb0e4c6e11610c7cdae32436372375a --- /dev/null +++ b/module/Vendor/Provider/UgcCensor/UgcCensorProvider.php @@ -0,0 +1,51 @@ + $v) { + if ($v instanceof \Closure) { + self::$instances[$k] = call_user_func($v); + } else if (is_string($v)) { + self::$instances[$k] = app($v); + } + } + return self::$instances; + } + + /** + * @param $name + * @return AbstractUgcCensorProvider + * @throws BizException + */ + public static function get($name) + { + foreach (self::all() as $item) { + if ($item->name() == $name) { + return $item; + } + } + BizException::throws('没有找到AbstractUgcCensorProvider'); + } +} \ No newline at end of file diff --git a/module/Vendor/View/contentVerify/index.blade.php b/module/Vendor/View/contentVerify/index.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..bf7d9affc0541a45aa8101cb6ab119d9bebf72de --- /dev/null +++ b/module/Vendor/View/contentVerify/index.blade.php @@ -0,0 +1,38 @@ +@extends('modstart::layout.frame') + +@section('pageTitle',isset($pageTitle)?htmlspecialchars($pageTitle):'') +@section('pageKeywords',isset($pageKeywords)?htmlspecialchars($pageKeywords):'') +@section('pageDescription',isset($pageDescription)?htmlspecialchars($pageDescription):'') + +@section('headAppend') + @parent + +@endsection + +@section('body') +
+ +
+ {!! $content !!} +
+
+@endsection + diff --git a/module/Vendor/Web/Controller/ContentVerifyController.php b/module/Vendor/Web/Controller/ContentVerifyController.php new file mode 100644 index 0000000000000000000000000000000000000000..200911dd1e414bdefe8534d2b992cc07f2ef96e3 --- /dev/null +++ b/module/Vendor/Web/Controller/ContentVerifyController.php @@ -0,0 +1,33 @@ +all(); + $record = $provider->record($param); + BizException::throwsIfEmpty('记录不存在', $record); + $form = Form::make(''); + $ret = $provider->buildForm($form, $record); + if (null !== $ret) { + return $ret; + } + return view('module::Vendor.View.contentVerify.index', [ + 'content' => $form->render(), + 'pageTitle' => '审核 · ' . $provider->title(), + ]); + } +} \ No newline at end of file diff --git a/module/Vendor/Web/routes.php b/module/Vendor/Web/routes.php index d2c8197b650e23e6bf9030f969572180b4a9496e..5b851122bcbf6f899b5aa3aee23a646e365bca93 100644 --- a/module/Vendor/Web/routes.php +++ b/module/Vendor/Web/routes.php @@ -10,3 +10,11 @@ $router->match(['get', 'post'], 'install/lock', 'InstallController@lock'); $router->match(['get', 'post'], 'captcha/image', 'CaptchaController@image'); $router->match(['get'], 'placeholder/{width}x{height}', '\Module\Vendor\Web\Controller\PlaceholderController@index'); + +$router->group([ + 'middleware' => [ + \Module\Vendor\Middleware\NoneLoginOperateAuthMiddleware::class, + ], +], function () use ($router) { + $router->match(['get', 'post'], 'content_verify/{name}', 'ContentVerifyController@index'); +}); \ No newline at end of file diff --git a/module/Vendor/config.json b/module/Vendor/config.json index 67d4bdbce0fa7cbb73b287843b64a93fdd65a737..a8f4ffe573607b7f2da96b9d954ae7448983c68c 100644 --- a/module/Vendor/config.json +++ b/module/Vendor/config.json @@ -1,7 +1,7 @@ { "name": "Vendor", "title": "通用功能包", - "version": "2.3.0", + "version": "2.4.0", "author": "官方", "description": "提供基础功能", "modstartVersion": ">=1.9.0", diff --git a/vendor/modstart/modstart/src/Command/ModuleUninstallCommand.php b/vendor/modstart/modstart/src/Command/ModuleUninstallCommand.php index b598537509ba9e783b590214c6a2eaa5ea672987..f354c1e103d9ad0b19611fa34eedf090bfd868a6 100644 --- a/vendor/modstart/modstart/src/Command/ModuleUninstallCommand.php +++ b/vendor/modstart/modstart/src/Command/ModuleUninstallCommand.php @@ -18,23 +18,22 @@ class ModuleUninstallCommand extends Command public function handle() { $module = $this->argument('module'); - BizException::throwsIf(L('Module Invalid'), !ModuleManager::isExists($module)); + $isExists = ModuleManager::isExists($module); $installeds = ModuleManager::listAllInstalledModules(); - BizException::throwsIf(L('Module not installed'), !isset($installeds[$module])); - foreach ($installeds as $one => $_) { - $basic = ModuleManager::getModuleBasic($one); - BizException::throwsIf('Module[' . $one . '] config empty', !$basic); - if (in_array($module, $basic['require'])) { - return Response::generateError(L('Module %s depend on %s, uninstall fail', $one, $module)); + if ($isExists) { + BizException::throwsIf(L('Module not installed'), !isset($installeds[$module])); + foreach ($installeds as $one => $_) { + $basic = ModuleManager::getModuleBasic($one); + BizException::throwsIf('Module[' . $one . '] config empty', !$basic); + if (in_array($module, $basic['require'])) { + return Response::generateError(L('Module %s depend on %s, uninstall fail', $one, $module)); + } + } + if (method_exists(ModuleManager::class, 'callHook')) { + ModuleManager::callHook($module, 'hookBeforeUninstall'); } } - - if (method_exists(ModuleManager::class, 'callHook')) { - ModuleManager::callHook($module, 'hookBeforeUninstall'); - } - unset($installeds[$module]); - $this->unPublishAsset($module); $this->unPublishRoot($module);