Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ModStart
ModStartCMS
提交
30f2f94b
ModStartCMS
项目概览
ModStart
/
ModStartCMS
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ModStartCMS
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
30f2f94b
编写于
1月 26, 2022
作者:
ModStart
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
develop
上级
bcb85b8c
变更
30
隐藏空白更改
内联
并排
Showing
30 changed file
with
627 addition
and
169 deletion
+627
-169
app/Web/Controller/IndexController.php
app/Web/Controller/IndexController.php
+5
-0
app/Web/routes.php
app/Web/routes.php
+1
-1
module/Banner/Api/Controller/BannerController.php
module/Banner/Api/Controller/BannerController.php
+11
-0
module/Cms/Api/Controller/BaseCatController.php
module/Cms/Api/Controller/BaseCatController.php
+8
-6
module/Cms/Api/Controller/CatController.php
module/Cms/Api/Controller/CatController.php
+0
-23
module/Cms/Api/Controller/DetailController.php
module/Cms/Api/Controller/DetailController.php
+63
-0
module/Cms/Api/Controller/FormController.php
module/Cms/Api/Controller/FormController.php
+112
-0
module/Cms/Api/Controller/ListController.php
module/Cms/Api/Controller/ListController.php
+53
-0
module/Cms/Api/Controller/PageController.php
module/Cms/Api/Controller/PageController.php
+39
-0
module/Cms/Api/routes.php
module/Cms/Api/routes.php
+5
-1
module/Cms/Docs/release.md
module/Cms/Docs/release.md
+5
-0
module/Cms/Web/Controller/DetailController.php
module/Cms/Web/Controller/DetailController.php
+6
-35
module/Cms/Web/Controller/FormController.php
module/Cms/Web/Controller/FormController.php
+4
-67
module/Cms/Web/Controller/ListController.php
module/Cms/Web/Controller/ListController.php
+1
-1
module/Cms/Web/Controller/PageController.php
module/Cms/Web/Controller/PageController.php
+8
-12
module/Cms/Web/Controller/SearchController.php
module/Cms/Web/Controller/SearchController.php
+0
-1
module/Cms/config.json
module/Cms/config.json
+1
-1
module/Vendor/Docs/release.md
module/Vendor/Docs/release.md
+6
-0
module/Vendor/Docs/release/2.4.0.md
module/Vendor/Docs/release/2.4.0.md
+0
-5
module/Vendor/Provider/ContentVerify/AbstractContentVerifyProvider.php
.../Provider/ContentVerify/AbstractContentVerifyProvider.php
+45
-0
module/Vendor/Provider/ContentVerify/ContentVerifyProvider.php
...e/Vendor/Provider/ContentVerify/ContentVerifyProvider.php
+54
-0
module/Vendor/Provider/Notifier/NotifierProvider.php
module/Vendor/Provider/Notifier/NotifierProvider.php
+2
-2
module/Vendor/Provider/UgcCensor/AbstractUgcCensorProvider.php
...e/Vendor/Provider/UgcCensor/AbstractUgcCensorProvider.php
+27
-0
module/Vendor/Provider/UgcCensor/DefaultUgcCensorProvider.php
...le/Vendor/Provider/UgcCensor/DefaultUgcCensorProvider.php
+28
-0
module/Vendor/Provider/UgcCensor/UgcCensorProvider.php
module/Vendor/Provider/UgcCensor/UgcCensorProvider.php
+51
-0
module/Vendor/View/contentVerify/index.blade.php
module/Vendor/View/contentVerify/index.blade.php
+38
-0
module/Vendor/Web/Controller/ContentVerifyController.php
module/Vendor/Web/Controller/ContentVerifyController.php
+33
-0
module/Vendor/Web/routes.php
module/Vendor/Web/routes.php
+8
-0
module/Vendor/config.json
module/Vendor/config.json
+1
-1
vendor/modstart/modstart/src/Command/ModuleUninstallCommand.php
.../modstart/modstart/src/Command/ModuleUninstallCommand.php
+12
-13
未找到文件。
app/Web/Controller/IndexController.php
浏览文件 @
30f2f94b
...
@@ -14,4 +14,9 @@ class IndexController extends BaseController
...
@@ -14,4 +14,9 @@ class IndexController extends BaseController
InstallerUtil
::
checkForInstallRedirect
();
InstallerUtil
::
checkForInstallRedirect
();
return
HomePageProvider
::
call
(
__METHOD__
,
CmsHomePageProvider
::
ACTION
);
return
HomePageProvider
::
call
(
__METHOD__
,
CmsHomePageProvider
::
ACTION
);
}
}
public
function
test
()
{
}
}
}
app/Web/routes.php
浏览文件 @
30f2f94b
...
@@ -12,7 +12,7 @@ Route::group(
...
@@ -12,7 +12,7 @@ Route::group(
],
function
()
{
],
function
()
{
Route
::
match
([
'get'
,
'post'
],
''
,
'IndexController@index'
);
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', 'MemberController@index');
Route
::
match
([
'get'
,
'post'
],
'member/{id}'
,
'MemberController@show'
);
Route
::
match
([
'get'
,
'post'
],
'member/{id}'
,
'MemberController@show'
);
Route
::
match
([
'get'
,
'post'
],
'member_profile'
,
'MemberProfileController@index'
);
Route
::
match
([
'get'
,
'post'
],
'member_profile'
,
'MemberProfileController@index'
);
...
...
module/Banner/Api/Controller/BannerController.php
浏览文件 @
30f2f94b
...
@@ -9,8 +9,19 @@ use ModStart\Core\Input\InputPackage;
...
@@ -9,8 +9,19 @@ use ModStart\Core\Input\InputPackage;
use
ModStart\Core\Input\Response
;
use
ModStart\Core\Input\Response
;
use
Module\Banner\Util\BannerUtil
;
use
Module\Banner\Util\BannerUtil
;
/**
* Class BannerController
* @package Module\Banner\Api\Controller
* @Api 通用轮播
*/
class
BannerController
extends
Controller
class
BannerController
extends
Controller
{
{
/**
* @return array
*
* @Api 获取轮播信息
* @ApiBodyParam position string 位置信息
*/
public
function
get
()
public
function
get
()
{
{
$input
=
InputPackage
::
buildFromInput
();
$input
=
InputPackage
::
buildFromInput
();
...
...
module/Cms/
Web
/Controller/BaseCatController.php
→
module/Cms/
Api
/Controller/BaseCatController.php
浏览文件 @
30f2f94b
<?php
<?php
namespace
Module\Cms\Web\Controller
;
namespace
Module\Cms\Api\Controller
;
use
ModStart\Core\Exception\BizException
;
use
ModStart\Core\Exception\BizException
;
use
ModStart\Core\Input\InputPackage
;
use
ModStart\Core\Input\InputPackage
;
...
@@ -13,14 +12,17 @@ use Module\Cms\Util\CmsModelUtil;
...
@@ -13,14 +12,17 @@ use Module\Cms\Util\CmsModelUtil;
class
BaseCatController
extends
ModuleBaseController
class
BaseCatController
extends
ModuleBaseController
{
{
protected
function
setup
(
$
id
=
0
)
protected
function
setup
(
$
name
=
0
)
{
{
$input
=
InputPackage
::
buildFromInput
();
if
(
empty
(
$name
))
{
if
(
empty
(
$id
))
{
// var_dump(Request::path());
// var_dump(Request::path());
$cat
=
CmsCatUtil
::
getByUrl
(
Request
::
path
());
$cat
=
CmsCatUtil
::
getByUrl
(
Request
::
path
());
}
else
{
}
else
{
$cat
=
CmsCatUtil
::
get
(
$id
);
if
(
is_numeric
(
$name
))
{
$cat
=
CmsCatUtil
::
get
(
$name
);
}
else
{
$cat
=
CmsCatUtil
::
getByUrl
(
$name
);
}
}
}
BizException
::
throwsIfEmpty
(
'分类不存在'
,
$cat
);
BizException
::
throwsIfEmpty
(
'分类不存在'
,
$cat
);
$catRoot
=
CmsCatUtil
::
root
(
$cat
[
'id'
]);
$catRoot
=
CmsCatUtil
::
root
(
$cat
[
'id'
]);
...
...
module/Cms/Api/Controller/CatController.php
已删除
100644 → 0
浏览文件 @
bcb85b8c
<?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
module/Cms/Api/Controller/DetailController.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Cms/Api/Controller/FormController.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Cms/Api/Controller/ListController.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Cms/Api/Controller/PageController.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Cms/Api/routes.php
浏览文件 @
30f2f94b
...
@@ -6,6 +6,10 @@ $router->group([
...
@@ -6,6 +6,10 @@ $router->group([
],
],
],
function
()
use
(
$router
)
{
],
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
module/Cms/Docs/release.md
0 → 100644
浏览文件 @
30f2f94b
## 2.4.0 API接口全面支持
-
新增:API接口全面支持
-
新增:接口文档补全
-
优化:Web版调用处理逻辑优化
\ No newline at end of file
module/Cms/Web/Controller/DetailController.php
浏览文件 @
30f2f94b
...
@@ -4,48 +4,19 @@
...
@@ -4,48 +4,19 @@
namespace
Module\Cms\Web\Controller
;
namespace
Module\Cms\Web\Controller
;
use
ModStart\Core\
Exception\BizException
;
use
ModStart\Core\
Input\InputPackage
;
use
ModStart\Core\Input\Response
;
use
ModStart\Core\Input\Response
;
use
ModStart\Module\ModuleBaseController
;
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\Cms\Util\CmsTemplateUtil
;
use
Module\Member\Auth\MemberUser
;
class
DetailController
extends
ModuleBaseController
class
DetailController
extends
ModuleBaseController
{
{
public
function
index
(
$id
=
0
)
public
function
index
(
\
Module\Cms\Api\Controller\DetailController
$api
,
$id
=
0
)
{
{
if
(
is_numeric
(
$id
))
{
InputPackage
::
mergeToInput
(
'id'
,
$id
);
$data
=
CmsContentUtil
::
get
(
$id
);
$viewData
=
Response
::
tryGetData
(
$api
->
index
());
}
else
{
$view
=
$viewData
[
'view'
];
$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;
return
$this
->
view
(
'cms.detail.'
.
CmsTemplateUtil
::
toBladeView
(
$view
),
$viewData
);
return
$this
->
view
(
'cms.detail.'
.
CmsTemplateUtil
::
toBladeView
(
$view
),
$viewData
);
}
}
}
}
module/Cms/Web/Controller/FormController.php
浏览文件 @
30f2f94b
...
@@ -3,13 +3,8 @@
...
@@ -3,13 +3,8 @@
namespace
Module\Cms\Web\Controller
;
namespace
Module\Cms\Web\Controller
;
use
Carbon\Carbon
;
use
ModStart\Core\Input\InputPackage
;
use
ModStart\Core\Input\InputPackage
;
use
ModStart\Core\Input\Request
;
use
Module\Cms\Api\Controller\BaseCatController
;
use
ModStart\Core\Input\Response
;
use
Module\Cms\Type\CmsModelFieldType
;
use
Module\Cms\Util\CmsContentUtil
;
use
Module\Cms\Util\CmsTemplateUtil
;
use
Module\Cms\Util\CmsTemplateUtil
;
class
FormController
extends
BaseCatController
class
FormController
extends
BaseCatController
...
@@ -20,70 +15,12 @@ class FormController extends BaseCatController
...
@@ -20,70 +15,12 @@ class FormController extends BaseCatController
$view
=
$this
->
getView
(
$data
,
'formTemplate'
);
$view
=
$this
->
getView
(
$data
,
'formTemplate'
);
$viewData
=
$data
;
$viewData
=
$data
;
$viewData
[
'model'
]
=
$data
[
'cat'
][
'_model'
];
$viewData
[
'model'
]
=
$data
[
'cat'
][
'_model'
];
// return $viewData;
return
$this
->
view
(
'cms.form.'
.
CmsTemplateUtil
::
toBladeView
(
$view
),
$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
);
InputPackage
::
mergeToInput
(
'cat'
,
$cat
);
$input
=
InputPackage
::
buildFromInput
();
return
$api
->
submit
();
$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
module/Cms/Web/Controller/ListController.php
浏览文件 @
30f2f94b
...
@@ -3,9 +3,9 @@
...
@@ -3,9 +3,9 @@
namespace
Module\Cms\Web\Controller
;
namespace
Module\Cms\Web\Controller
;
use
ModStart\Core\Input\InputPackage
;
use
ModStart\Core\Input\InputPackage
;
use
ModStart\Core\Util\PageHtmlUtil
;
use
ModStart\Core\Util\PageHtmlUtil
;
use
Module\Cms\Api\Controller\BaseCatController
;
use
Module\Cms\Util\CmsContentUtil
;
use
Module\Cms\Util\CmsContentUtil
;
use
Module\Cms\Util\CmsTemplateUtil
;
use
Module\Cms\Util\CmsTemplateUtil
;
...
...
module/Cms/Web/Controller/PageController.php
浏览文件 @
30f2f94b
...
@@ -4,22 +4,18 @@
...
@@ -4,22 +4,18 @@
namespace
Module\Cms\Web\Controller
;
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
;
use
Module\Cms\Util\CmsTemplateUtil
;
class
PageController
extends
BaseCatController
class
PageController
extends
BaseCatController
{
{
public
function
index
(
$id
=
0
)
public
function
index
(
\
Module\Cms\Api\Controller\PageController
$api
,
$id
=
0
)
{
{
$data
=
parent
::
setup
(
$id
);
InputPackage
::
mergeToInput
(
'id'
,
$id
);
$view
=
$this
->
getView
(
$data
,
'pageTemplate'
);
$viewData
=
Response
::
tryGetData
(
$api
->
index
());
$cat
=
$data
[
'cat'
];
return
$this
->
view
(
'cms.page.'
.
CmsTemplateUtil
::
toBladeView
(
$viewData
[
'view'
]),
$viewData
);
$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
);
}
}
}
}
\ No newline at end of file
module/Cms/Web/Controller/SearchController.php
浏览文件 @
30f2f94b
...
@@ -3,7 +3,6 @@
...
@@ -3,7 +3,6 @@
namespace
Module\Cms\Web\Controller
;
namespace
Module\Cms\Web\Controller
;
use
ModStart\Core\Input\InputPackage
;
use
ModStart\Core\Input\InputPackage
;
use
ModStart\Core\Util\PageHtmlUtil
;
use
ModStart\Core\Util\PageHtmlUtil
;
use
ModStart\Module\ModuleBaseController
;
use
ModStart\Module\ModuleBaseController
;
...
...
module/Cms/config.json
浏览文件 @
30f2f94b
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
"Member"
,
"Member"
,
"Banner:>=1.1.0"
"Banner:>=1.1.0"
],
],
"version"
:
"2.
3.1
"
,
"version"
:
"2.
4.0
"
,
"modstartVersion"
:
">=2.4.0"
,
"modstartVersion"
:
">=2.4.0"
,
"author"
:
"ModStart"
,
"author"
:
"ModStart"
,
"description"
:
"提供通用的动态模型内容管理系统"
,
"description"
:
"提供通用的动态模型内容管理系统"
,
...
...
module/Vendor/Docs/release.md
0 → 100644
浏览文件 @
30f2f94b
## 2.4.0 邮件模板优化,内容审核增强
-
新增:UGC内容违规审核(UgcCensorProvider)
-
新增:内容人工审核(ContentVerifyProvider)
-
优化:邮件模板跟随系统主题色调整
-
优化:无登录签名校验操作增强
module/Vendor/Docs/release/2.4.0.md
已删除
100644 → 0
浏览文件 @
bcb85b8c
-
优化:邮件模板跟随系统主题色调整
-
优化:无登录签名校验操作增强
\ No newline at end of file
module/Vendor/Provider/ContentVerify/AbstractContentVerifyProvider.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Vendor/Provider/ContentVerify/ContentVerifyProvider.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Vendor/Provider/Notifier/NotifierProvider.php
浏览文件 @
30f2f94b
...
@@ -11,7 +11,7 @@ class NotifierProvider
...
@@ -11,7 +11,7 @@ class NotifierProvider
/**
/**
* @return AbstractNotifierProvider[]
* @return AbstractNotifierProvider[]
*/
*/
public
static
function
get
()
public
static
function
all
()
{
{
static
$instances
=
null
;
static
$instances
=
null
;
if
(
null
===
$instances
)
{
if
(
null
===
$instances
)
{
...
@@ -30,7 +30,7 @@ class NotifierProvider
...
@@ -30,7 +30,7 @@ class NotifierProvider
public
static
function
notify
(
$biz
,
$title
,
$content
,
$param
=
[])
public
static
function
notify
(
$biz
,
$title
,
$content
,
$param
=
[])
{
{
foreach
(
self
::
get
()
as
$instance
)
{
foreach
(
self
::
all
()
as
$instance
)
{
$instance
->
notify
(
$biz
,
$title
,
$content
,
$param
);
$instance
->
notify
(
$biz
,
$title
,
$content
,
$param
);
}
}
}
}
...
...
module/Vendor/Provider/UgcCensor/AbstractUgcCensorProvider.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Vendor/Provider/UgcCensor/DefaultUgcCensorProvider.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Vendor/Provider/UgcCensor/UgcCensorProvider.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Vendor/View/contentVerify/index.blade.php
0 → 100644
浏览文件 @
30f2f94b
@
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
:
13
px
;
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
:
1
px
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
module/Vendor/Web/Controller/ContentVerifyController.php
0 → 100644
浏览文件 @
30f2f94b
<?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
module/Vendor/Web/routes.php
浏览文件 @
30f2f94b
...
@@ -10,3 +10,11 @@ $router->match(['get', 'post'], 'install/lock', 'InstallController@lock');
...
@@ -10,3 +10,11 @@ $router->match(['get', 'post'], 'install/lock', 'InstallController@lock');
$router
->
match
([
'get'
,
'post'
],
'captcha/image'
,
'CaptchaController@image'
);
$router
->
match
([
'get'
,
'post'
],
'captcha/image'
,
'CaptchaController@image'
);
$router
->
match
([
'get'
],
'placeholder/{width}x{height}'
,
'\Module\Vendor\Web\Controller\PlaceholderController@index'
);
$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
module/Vendor/config.json
浏览文件 @
30f2f94b
{
{
"name"
:
"Vendor"
,
"name"
:
"Vendor"
,
"title"
:
"通用功能包"
,
"title"
:
"通用功能包"
,
"version"
:
"2.
3
.0"
,
"version"
:
"2.
4
.0"
,
"author"
:
"官方"
,
"author"
:
"官方"
,
"description"
:
"提供基础功能"
,
"description"
:
"提供基础功能"
,
"modstartVersion"
:
">=1.9.0"
,
"modstartVersion"
:
">=1.9.0"
,
...
...
vendor/modstart/modstart/src/Command/ModuleUninstallCommand.php
浏览文件 @
30f2f94b
...
@@ -18,23 +18,22 @@ class ModuleUninstallCommand extends Command
...
@@ -18,23 +18,22 @@ class ModuleUninstallCommand extends Command
public
function
handle
()
public
function
handle
()
{
{
$module
=
$this
->
argument
(
'module'
);
$module
=
$this
->
argument
(
'module'
);
BizException
::
throwsIf
(
L
(
'Module Invalid'
),
!
ModuleManager
::
isExists
(
$module
)
);
$isExists
=
ModuleManager
::
isExists
(
$module
);
$installeds
=
ModuleManager
::
listAllInstalledModules
();
$installeds
=
ModuleManager
::
listAllInstalledModules
();
BizException
::
throwsIf
(
L
(
'Module not installed'
),
!
isset
(
$installeds
[
$module
]));
if
(
$isExists
)
{
foreach
(
$installeds
as
$one
=>
$_
)
{
BizException
::
throwsIf
(
L
(
'Module not installed'
),
!
isset
(
$installeds
[
$module
]));
$basic
=
ModuleManager
::
getModuleBasic
(
$one
);
foreach
(
$installeds
as
$one
=>
$_
)
{
BizException
::
throwsIf
(
'Module['
.
$one
.
'] config empty'
,
!
$basic
);
$basic
=
ModuleManager
::
getModuleBasic
(
$one
);
if
(
in_array
(
$module
,
$basic
[
'require'
]))
{
BizException
::
throwsIf
(
'Module['
.
$one
.
'] config empty'
,
!
$basic
);
return
Response
::
generateError
(
L
(
'Module %s depend on %s, uninstall fail'
,
$one
,
$module
));
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
]);
unset
(
$installeds
[
$module
]);
$this
->
unPublishAsset
(
$module
);
$this
->
unPublishAsset
(
$module
);
$this
->
unPublishRoot
(
$module
);
$this
->
unPublishRoot
(
$module
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录