提交 30f2f94b 编写于 作者: ModStart's avatar ModStart

develop

上级 bcb85b8c
......@@ -14,4 +14,9 @@ class IndexController extends BaseController
InstallerUtil::checkForInstallRedirect();
return HomePageProvider::call(__METHOD__, CmsHomePageProvider::ACTION);
}
public function test()
{
}
}
......@@ -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');
......
......@@ -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();
......
<?php
namespace Module\Cms\Web\Controller;
namespace Module\Cms\Api\Controller;
use ModStart\Core\Exception\BizException;
use ModStart\Core\Input\InputPackage;
......@@ -13,14 +12,17 @@ use Module\Cms\Util\CmsModelUtil;
class BaseCatController extends ModuleBaseController
{
protected function setup($id = 0)
protected function setup($name = 0)
{
$input = InputPackage::buildFromInput();
if (empty($id)) {
if (empty($name)) {
// var_dump(Request::path());
$cat = CmsCatUtil::getByUrl(Request::path());
} else {
$cat = CmsCatUtil::get($id);
if (is_numeric($name)) {
$cat = CmsCatUtil::get($name);
} else {
$cat = CmsCatUtil::getByUrl($name);
}
}
BizException::throwsIfEmpty('分类不存在', $cat);
$catRoot = CmsCatUtil::root($cat['id']);
......
<?php
namespace Module\Cms\Api\Controller;
use Illuminate\Routing\Controller;
use ModStart\Core\Input\Response;
/**
* Class CatController
* @package Module\Cms\Api\Controller
*/
class CatController extends Controller
{
/**
* @return array
*/
public function get()
{
return Response::generateSuccessData(null);
}
}
\ No newline at end of file
<?php
namespace Module\Cms\Api\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\Member\Auth\MemberUser;
/**
* Class DetailController
* @package Module\Cms\Api\Controller
*
* @Api 通用CMS
*/
class DetailController extends ModuleBaseController
{
/**
* @return array
* @throws BizException
*
* @Api 内容-获取详情
* @ApiBodyParam id integer 内容ID
*/
public function index()
{
$input = InputPackage::buildFromInput();
$id = $input->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
<?php
namespace Module\Cms\Api\Controller;
use Carbon\Carbon;
use ModStart\Core\Exception\BizException;
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;
/**
* Class FormController
* @package Module\Cms\Api\Controller
*
* @Api 通用CMS
*/
class FormController extends BaseCatController
{
/**
* @return array
* @throws BizException
*
* @Api 表单-获取详情
* @ApiBodyParam cat string 栏目标识(ID、名称)
*/
public function index()
{
$input = InputPackage::buildFromInput();
$catId = $input->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
<?php
namespace Module\Cms\Api\Controller;
use ModStart\Core\Exception\BizException;
use ModStart\Core\Input\InputPackage;
use ModStart\Core\Input\Response;
use Module\Cms\Util\CmsContentUtil;
/**
* Class ListController
* @package Module\Cms\Api\Controller
* @Api 通用CMS
*/
class ListController extends BaseCatController
{
/**
* @return array
* @throws BizException
*
* @Api 栏目-获取内容列表
* @ApiBodyParam cat string 栏目标识(ID、名称)
* @ApiBodyParam search.isRecommend boolean 搜索条件,是否推荐
*/
public function index()
{
$input = InputPackage::buildFromInput();
$catId = $input->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
<?php
namespace Module\Cms\Api\Controller;
use ModStart\Core\Input\InputPackage;
use ModStart\Core\Input\Response;
use Module\Cms\Util\CmsContentUtil;
/**
* Class PageController
* @package Module\Cms\Api\Controller
*
* @Api 通用CMS
*/
class PageController extends BaseCatController
{
/**
* @return array
*
* @Api 单页-获取信息
* @ApiBodyParam cat string 栏目标识(ID、名称)
*/
public function index()
{
$input = InputPackage::buildFromInput();
$catId = $input->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
......@@ -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
## 2.4.0 API接口全面支持
- 新增:API接口全面支持
- 新增:接口文档补全
- 优化:Web版调用处理逻辑优化
\ No newline at end of file
......@@ -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);
}
}
......@@ -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
......@@ -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;
......
......@@ -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
......@@ -3,7 +3,6 @@
namespace Module\Cms\Web\Controller;
use ModStart\Core\Input\InputPackage;
use ModStart\Core\Util\PageHtmlUtil;
use ModStart\Module\ModuleBaseController;
......
......@@ -6,7 +6,7 @@
"Member",
"Banner:>=1.1.0"
],
"version": "2.3.1",
"version": "2.4.0",
"modstartVersion": ">=2.4.0",
"author": "ModStart",
"description": "提供通用的动态模型内容管理系统",
......
## 2.4.0 邮件模板优化,内容审核增强
- 新增:UGC内容违规审核(UgcCensorProvider)
- 新增:内容人工审核(ContentVerifyProvider)
- 优化:邮件模板跟随系统主题色调整
- 优化:无登录签名校验操作增强
- 优化:邮件模板跟随系统主题色调整
- 优化:无登录签名校验操作增强
\ No newline at end of file
<?php
namespace Module\Vendor\Provider\ContentVerify;
use ModStart\Core\Dao\ModelUtil;
use ModStart\Form\Form;
use Module\Vendor\Provider\Notifier\NotifierProvider;
abstract class AbstractContentVerifyProvider
{
abstract public function name();
abstract public function title();
abstract public function config($param);
abstract public function buildForm(Form $form, $record);
protected function createConfig($table, $param)
{
return [
'table' => $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
<?php
namespace Module\Vendor\Provider\ContentVerify;
use ModStart\Core\Exception\BizException;
class ContentVerifyProvider
{
/**
* @var AbstractContentVerifyProvider[]
*/
private static $instances = [
];
public static function register($provider)
{
self::$instances[] = $provider;
}
/**
* @return AbstractContentVerifyProvider[]
*/
public static function all()
{
foreach (self::$instances as $k => $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
......@@ -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);
}
}
......
<?php
namespace Module\Vendor\Provider\UgcCensor;
use ModStart\Core\Input\Response;
abstract class AbstractUgcCensorProvider
{
abstract public function name();
abstract public function title();
abstract public function verify($content, $param = []);
public function isVerifyPass($content, $param = [])
{
$ret = $this->verify($content, $param);
if (Response::isSuccess($ret)) {
if ($ret['data']['pass']) {
return true;
}
}
return false;
}
}
\ No newline at end of file
<?php
namespace Module\Vendor\Provider\UgcCensor;
use ModStart\Core\Input\Response;
class DefaultUgcCensorProvider extends AbstractUgcCensorProvider
{
public function name()
{
return 'default';
}
public function title()
{
return '无检测';
}
public function verify($content, $param = [])
{
return Response::generateSuccessData([
'pass' => false,
]);
}
}
\ No newline at end of file
<?php
namespace Module\Vendor\Provider\UgcCensor;
use ModStart\Core\Exception\BizException;
class UgcCensorProvider
{
/**
* @var AbstractUgcCensorProvider[]
*/
private static $instances = [
];
public static function register($provider)
{
self::$instances[] = $provider;
}
/**
* @return AbstractUgcCensorProvider[]
*/
public static function all()
{
foreach (self::$instances as $k => $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
@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
<style type="text/css">
*{padding:0;margin:0;font-family:"Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3",sans-serif;color:#666;box-sizing:border-box;}
body{font-size:13px;background:#F8F8F8;}
#wrap{margin:0 auto;max-width:800px;padding:0;border:1px solid #EEE;}
#head,#content,#foot{background:#FFF;}
#head{background:{{modstart_config('sitePrimaryColor','#333')}};height:50px;padding:5px 10px;}
#head .logo{line-height:40px;color:#FFF;font-size:20px;text-decoration:none;}
#content{padding:30px 10px;min-height:calc(100vh - 60px);}
#content p{line-height:2em;}
#signature{padding:10px;color:#999;}
#foot{text-align:center;line-height:50px;border-top:1px solid #EEE;color:#999;}
.ub-email-table {border-collapse: collapse;width:100%;}
.ub-email-table td{border: 1px solid #ddd;padding:5px;}
.ub-email-table tr:nth-child(even){background-color: #f2f2f2;}
</style>
@endsection
@section('body')
<div id="wrap">
<div id="head">
<a class="logo" href="http://{{modstart_config('siteDomain')}}" target="_blank">
{{$pageTitle}}
</a>
</div>
<div id="content">
{!! $content !!}
</div>
</div>
@endsection
<?php
namespace Module\Vendor\Web\Controller;
use Illuminate\Routing\Controller;
use ModStart\App\Web\Layout\WebPage;
use ModStart\Core\Exception\BizException;
use ModStart\Core\Input\InputPackage;
use ModStart\Form\Form;
use Module\Vendor\Provider\ContentVerify\ContentVerifyProvider;
class ContentVerifyController extends Controller
{
public function index(WebPage $page, $name)
{
$provider = ContentVerifyProvider::get($name);
BizException::throwsIfEmpty('数据异常', $provider);
$param = InputPackage::buildFromInputJson('param')->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
......@@ -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
{
"name": "Vendor",
"title": "通用功能包",
"version": "2.3.0",
"version": "2.4.0",
"author": "官方",
"description": "提供基础功能",
"modstartVersion": ">=1.9.0",
......
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册