Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
MCMS
Commits
278089e7
Commit
278089e7
authored
Aug 26, 2019
by
wangtp
Browse files
文件更新
parent
111333f7
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
src/main/webapp/WEB-INF/manager/cms/article/article_form.ftl
deleted
100644 → 0
View file @
111333f7
<@
ms
.html5
>
<@ms.nav title="文章管理" back=true>
<#if article.basicId == 0>
<@ms.saveButton id="saveUpdate" value="保存"/>
<#else>
<@ms.updateButton id="saveUpdate" value="更新"/>
</#if>
</@ms.nav>
<@ms.panel>
<@ms.form isvalidation=true name="articleForm" action="$
{
managerPath
}
/cms/article/$
{
action
}
.do">
<@ms.text name="basicTitle" colSm="2" width="400" label="文章标题" title="文章标题" size="5" placeholder="请输入文章标题" value="$
{
article
.basicTitle
?
default
(
''
)}
" validation=
{
"maxlength"
:
"300"
,
"required"
:
"true"
,
"data-bv-notempty-message"
:
"文章标题不能为空"
,
"data-bv-stringlength-message"
:
"标题在300个字符以内!"
,
"data-bv-notempty-message"
:
"必填项目"
}
/>
<@ms.text name="basicSort" colSm="2" width="200" label="自定义顺序" title="自定义顺序" size="5" placeholder="请输入文章顺序" value="$
{
article
.basicSort
?
c
?
default
(
0
)}
" validation=
{
"data-bv-between"
:
"true"
,
"required"
:
"true"
,
"data-bv-between-message"
:
"自定义顺序必须大于0"
,
"data-bv-between-min"
:
"0"
,
"data-bv-between-max"
:
"99999999"
,
"data-bv-notempty-message"
:
"自定义顺序不能为空"
}
/>
<#if articleType?has_content>
<@ms.checkboxlist colSm="2" name="checkbox" label="文章属性" list=articleType listKey="dictValue" listValue="dictLabel" />
</#if>
<@ms.radio name="basicDisplay"
list=[
{
"id"
:
"0"
,
"value"
:
"是"
}
,
{
"id"
:
"1"
,
"value"
:
"否"
}
] value="$
{
article
.basicDisplay
?
c
?
default
()}
"
listKey="id" listValue="value" label="是否显示" help="选择否后前端将不显示,需要重新生成才有效果"
/>
<@ms.formRow colSm="2" label="文章缩略图" width="400" >
<@ms.uploadImg path="article" uploadFloderPath="$
{
articleImagesUrl
?
default
(
''
)}
" inputName="basicThumbnails" size="1" msg="提示:文章缩略图,支持jpg格式" imgs="$
{
article
.basicThumbnails
?
default
(
''
)}
" />
</@ms.formRow>
<@ms.text name="articleSource" colSm="2" width="200" label="文章来源" title="文章来源" size="5" placeholder="请输入文章来源" value="$
{
article
.articleSource
?
default
(
''
)}
" validation=
{
"maxlength"
:
"300"
,
"data-bv-stringlength-message"
:
"文章来源在300个字符以内!"
}
/>
<@ms.text name="articleAuthor" colSm="2" width="200" label="文章作者" title="文章作者" size="5" placeholder="请输入文章作者" value="$
{
article
.articleAuthor
?
default
(
''
)}
" validation=
{
"maxlength"
:
"12"
,
"data-bv-stringlength-message"
:
"文章作者在12个字符以内!"
}
/>
<#if !isEditCategory><!-- 如果不是单篇 -->
<@ms.formRow colSm="2" label="所属栏目" width="300">
<#if categoryTitle=="">
<@ms.treeInput treeId="inputTree" json="$
{
listColumn
?
default
(
''
)}
" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" inputName="basicCategoryId" inputValue="$
{
categoryId
}
" buttonText="选择栏目" clickZtreeId="clickZtreeId(event,treeId,treeNode);" expandAll="true" showIcon="true"/>
<#else>
<@ms.treeInput treeId="inputTree" json="$
{
listColumn
?
default
(
''
)}
" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" inputName="basicCategoryId" inputValue="$
{
categoryId
}
" buttonText="$
{(
categoryTitle
)
!
}
" clickZtreeId="clickZtreeId(event,treeId,treeNode);" expandAll="true" showIcon="true"/>
</#if>
</@ms.formRow>
</#if>
<@ms.hidden id="basicDateTime" name="basicDateTime" value=""/>
<@ms.date id="articleDateTime" name="articleDateTime" time=true label="发布时间" single=true readonly="readonly" width="300" value="$
{(
article
.basicDateTime
?
default
(
.now
))
?
string
(
'
yyyy-MM-dd
HH
:
mm
'
)}
" validation=
{
"required"
:
"true"
,
"data-bv-notempty-message"
:
"必填项目"
}
placeholder="点击该框选择时间段" />
<@ms.textarea colSm="2" name="basicDescription" label="描述" wrap="Soft" rows="4" size="" value="$
{
article
.basicDescription
?
default
(
''
)}
" placeholder="请输入对该文章的简短描述,以便用户查看文章简略" validation=
{
"maxlength"
:
"400"
,
"data-bv-stringlength-message"
:
"文章描述在400个字符以内!"
}
/>
<@ms.textarea colSm="2" name="articleKeyword" label="关键字" wrap="Soft" rows="4" size="" placeholder="请输入文章关键字" value="$
{
article
.articleKeyword
?
default
(
''
)}
" validation=
{
"maxlength"
:
"155"
,
"data-bv-stringlength-message"
:
"文章作者在155个字符以内!"
}
/>
<!--新填字段内容开始-->
<div id="addFieldForm">
</div>
<@ms.hidden name="articleTypeJson" />
<@ms.editor colSm="2" name="articleContent" label="文章内容" content="$
{
article
.articleContent
?
default
(
''
)}
" appId="$
{
appId
?
default
(
0
)}
"/>
<@ms.hidden name="modelId" value="$
{
S
ession
.model_id_session
?
default
(
'
0
'
)}
" />
</@ms.form>
</@ms.panel>
</@
ms
.html5
>
<
script
>
//重写时间控件
$('#
articleDateTime
')
.daterangepicker
({
format:'YYYY-MM-DD HH:mm',
singleDatePicker: true,
showDropdowns: true,
timePickerIncrement: 1,
timePicker: true,
timePicker12Hour: true,
startDate: moment().hours(0).minutes(0).seconds(0),
showDropdowns: true,
showWeekNumbers: true,
});
$('#
articleDateTime
')
.on
('
apply
.daterangepicker
',
function(ev, picker)
{
$
(
'#
articleDateTime
'
)
.parents
(
"form:first"
)
.data
(
'
bootstrapValidator
'
)
.revalidateField
(
'
articleDateTime
'
)
;
}
);
var
articleBasicId=0;
$(
function
(){
//页面标题
var articleTitle="<#if categoryTitle?has_content>$
{
categoryTitle
}
</#if><#if article.basicId !=0><small>编辑文章</small><#else><small>添加文章</small></#if>";
$(".ms-weixin-content-body-title>span").html(articleTitle);
//隐藏跳转地址
$("input[name='articleUrl']").parent().hide();
//文章属性
var actionUrl="";
<#if article.basicId !=0>
actionUrl = "$
{
managerPath
}
/cms/article/$
{
article
.basicId
?
c
?
default
(
0
)}
/update.do";
var type="$
{
article
.articleType
?
default
(
''
)}
";
var articleType = new Array;
//文章属性
$("#articleForm input[name='checkbox']").each(function()
{
if
(
type
!=
""
){
articleType
=
type
.split
(
","
)
;
for
(
i
=
0
;
i
<
articleType
.length
;
i
++
){
if
(
$
(
this
)
.val
()
==
articleType
[
i
]
){
$
(
this
)
.attr
(
"checked"
,
'
true
'
)
;
}
}
}
}
);
articleBasicId=$
{
article
.basicId
?
c
?
default
(
0
)}
;
<#else>
actionUrl = "$
{
managerPath
}
/cms/article/save.do";
</#if>
//获取当前栏目的自定义模型
var url="$
{
managerPath
}
/mdiy/contentModel/contentModelField/"+$
{
categoryId
?
default
(
0
)}
+"/queryField.do";
var articleId="basicId="+$
{
article
.basicId
?
c
?
default
(
0
)}
;
$(this).request(
{
url
:
url
,
data
:
articleId
,
method
:
"get"
,
func
:
function
(
data
)
{
$
(
"#addFieldForm"
)
.html
(
data
)
;
}}
);
//显示跳转地址
$("input[name='checkbox']").click(function()
{
$
(
"input[name='checkbox']"
)
.each
(
function
(){
if
(
$
(
this
)
.val
()
==
'
j
'
){
if
(
$
(
this
)
.is
(
":checked"
)
){
$
(
"input[name='articleUrl']"
)
.parent
()
.show
()
;
}
else
{
$
(
"input[name='articleUrl']"
)
.parent
()
.hide
()
;
}
}
})
;
}
);
//更新或保存
$("#saveUpdate").click(function()
{
//禁用按钮
$
(
"#saveUpdate"
)
.attr
(
"disabled"
,
true
)
;
//获取按钮值
var
bottonText
=
$
(
"#saveUpdate"
)
.text
()
.trim
()
;
//设置按钮加载状态值
$
(
"#saveUpdate"
)
.attr
(
"data-loading-text"
,
bottonText
+
"中"
)
;
var
articleDateTimeValue
=
$
(
"#articleDateTime"
)
.val
()
+
":00"
;//让时间能精确到秒与后台对应
$
(
"#basicDateTime"
)
.val
(
articleDateTimeValue
)
;
//给
basicDateTime
字段赋值
//获取所有栏目属性被选中的值
var
typeJson
=
""
$
(
"#articleTypeField"
)
.find
(
"select"
)
.each
(
function
(
index
){
var
typeValue
=
0
;
if
(
$
(
this
)
.find
(
"option:selected"
)
.val
()
==
undefined
){
return
;
}
var
typeValue
=$
(
this
)
.find
(
"option:selected"
)
.val
()
;
if
(
$
(
"#articleTypeField"
)
.find
(
"select"
)
.length
==
index
){
typeJson
=
typeJson
+
"{bcCategoryId:
\"
"
+
typeValue
+
"
\"
,bcBasicId:'${article.basicId?default(0)}'}"
}
else
{
typeJson
=
typeJson
+
"{bcCategoryId:
\"
"
+
typeValue
+
"
\"
,bcBasicId:'${article.basicId?default(0)}'},"
}
})
$
(
"input[name=articleTypeJson]"
)
.val
(
"["
+
typeJson
+
"]"
)
;
var
basicCategoryId
=
""
;
<#
if
!
isEditCategory
><!--
如果不是单篇
-
->
basicCategoryId
=$
(
"input[name='basicCategoryId']"
)
.val
()
;
//多篇时的文章栏目
<#
else
>
basicCategoryId
=$
{
categoryId
}
;
//单篇时的文章栏目
</#
if
>
//文章所属栏目是数字且不能为
0
if
(
basicCategoryId
!=
0
&&
!
isNaN
(
basicCategoryId
)
){
//将表单序列化
var
saveArticle
=
$
(
"#articleForm"
)
.serialize
()
;
saveArticle
+=
"&basicCategoryId="
+
basicCategoryId
;
//文章属性
var
checkboxType
=
""
;
$
(
"input[name='checkbox']"
)
.each
(
function
(){
if
(
$
(
this
)
.is
(
":checked"
)){
checkboxType
+=$
(
this
)
.val
()
+
","
;
}
})
;
var
dataMsg
=
saveArticle
+
"&checkboxType="
+
checkboxType
;
var
seeMsg
=
""
;
<#
if
article
.basicId
!=
0
>
seeMsg
=
"更新中...."
;
<#
else
>
seeMsg
=
"保存中...."
;
</#
if
>
var
vobj
=
$
(
"#articleForm"
)
.data
(
'
bootstrapValidator
'
)
.validate
()
;
if
(
vobj
.isValid
()){
if
(
isNaN
(
$
(
"input[name=basicSort]"
)
.val
())){
<@
ms
.notify
msg
=
"自定义排序必须是数字"
type
=
"warning"
/>
$
(
"input[name=basicSort]"
)
.val
(
0
)
;
//启用按钮
$
(
"#saveUpdate"
)
.button
(
'
reset
'
)
;
return
;
}
$
(
this
)
.request
({
url
:
actionUrl
,
data
:
dataMsg
,
loadingText
:
seeMsg
,
method
:
"post"
,
type
:
"json"
,
func
:
function
(
obj
)
{
//执行加载状态
$
(
"#saveUpdate"
)
.button
(
'
loading
'
)
;
if
(
obj
.result
){
<#
if
article
.basicId
!=
0
>
<@
ms
.notify
msg
=
"更新文章成功"
type
=
"success"
/>
<#
else
>
<@
ms
.notify
msg
=
"保存文章成功"
type
=
"success"
/>
</#
if
>
var
columnType
=
$
{
columnType
?
default
(
0
)}
;
if
(
columnType
==
1
){
//更新并生成之后路径进行跳转
location
.href
=
managerPath
+
"/cms/article/${categoryId?default(0)}/main.do"
;
}
else
{
var
dataId
=
obj
.resultData
;
if
(
dataId
!=
""
){
location
.href
=
"${managerPath}/cms/article/"
+
dataId
+
"/edit.do"
;
}
}
;
$
(
"#saveUpdate"
)
.button
(
'
reset
'
)
;
}
else
{
$
(
'
.ms-notifications
'
)
.offset
({
top
:
43
})
.notify
({
type
:
'
warning
'
,
message
:
{
text
:
obj
.resultMsg
}
})
.show
()
;
}
}})
;
}
}
else
{
<@
ms
.notify
msg
=
"请选择文章所属栏目"
type
=
"warning"
/>
//启用按钮
$
(
"#saveUpdate"
)
.attr
(
"disabled"
,
false
)
;
}
//启用按钮
$
(
"#saveUpdate"
)
.button
(
'
reset
'
)
;
$
(
"#saveUpdate"
)
.attr
(
"disabled"
,
false
)
;
}
);
});
//选择栏目后查询自定义模型
function
clickZtreeId(event,treeId,treeNode)
{
if
(
treeNode
.columnType
==
2
){
<@
ms
.notify
msg
=
"不能选择单篇栏目"
/>
return
false
;
}
if
(
treeNode
.isParent
==
true
){
<@
ms
.notify
msg
=
"不能选择父级栏目"
/>
return
false
;
}
var
url
=
"${managerPath}/mdiy/contentModel/contentModelField/"
+
treeNode
.categoryId
+
"/queryField.do"
;
var
basicId
=
"basicId=${article.basicId?c?default(0)}"
;
$
(
this
)
.request
({
url
:
url
,
data
:
basicId
,
method
:
"get"
,
func
:
function
(
data
)
{
$
(
"#addFieldForm"
)
.html
(
""
)
;
$
(
"#addFieldForm"
)
.html
(
data
)
;
}})
;
}
</
script
>
\ No newline at end of file
src/main/webapp/WEB-INF/manager/cms/article/article_main.ftl
deleted
100644 → 0
View file @
111333f7
<@
ms
.html5
>
<@ms.nav title="文章列表"></@ms.nav>
<@ms.searchForm name="searchForm" action="">
<#if articleTypeList?has_content>
<@ms.select label="文章属性" default="全部" value="a" name="articleType" id="forumSelect" list=articleTypeList listValue="dictLabel" listKey="dictValue" value="$
{
articleType
?
default
(
''
)}
"/>
<#else>
<@ms.select label="文章属性" name="articleType" id="forumSelect" value="" list=["默认属性"] />
</#if>
<@ms.text label="文章标题" name="basicTitle" value="" title="请输入文章标题" placeholder="请输入文章标题" />
<@ms.searchFormButton>
<@ms.queryButton id="submitSearch" />
</@ms.searchFormButton>
</@ms.searchForm>
<div id="toolbar">
<@ms.panelNavBtnGroup>
<@shiro.hasPermission name="article:save"><@ms.panelNavBtnAdd title=""/></@shiro.hasPermission>
<@shiro.hasPermission name="article:del"><@ms.panelNavBtnDel title=""/></@shiro.hasPermission>
</@ms.panelNavBtnGroup>
</div>
<@ms.panel>
<table id="articleListTable"
data-show-refresh="true"
data-show-columns="true"
data-show-export="true"
data-method="post"
data-detail-formatter="detailFormatter"
data-pagination="true"
data-page-size="10"
data-side-pagination="server">
</table>
</@ms.panel>
</@
ms
.html5
>
<!--删除限时文章-->
<@
ms
.modal
modalName="delete" title="删除文章">
<@ms.modalBody>
确定要删除所选的文章吗?
</@ms.modalBody>
<@ms.modalButton>
<@ms.button class="btn btn-danger rightDelete" value="确定"/>
</@ms.modalButton>
</@
ms
.modal
>
<
script
>
$(function()
{
var
search
=
$
(
"form[name='searchForm']"
)
.serializeJSON
()
;
var
articleType
=
search
.articleType
;
$
(
"#articleListTable"
)
.bootstrapTable
({
url
:
"${managerPath}/cms/article/${categoryId}/list.do?articleTypeStr="
+
articleType
,
contentType
:
"application/x-www-form-urlencoded"
,
queryParamsType
:
"undefined"
,
toolbar
:
"#toolbar"
,
columns
:
[
{
checkbox
:
true
},
{
field
:
'
column
.categoryTitle
'
,
title
:
'栏目名'
,
width
:
90
,
align
:
'
left
'
},{
field
:
'
basicTitle
'
,
title
:
'文章标题'
,
formatter
:
function
(
value
,
row
,
index
){
<@
shiro
.hasPermission
name
=
"article:update"
>
var
url
='$
{
managerPath
}
/
cms
/
article
/'+
row
.articleID
+
"/edit.do"
;
return
"<a href="
+
url
+
" target='_self' >"
+
value
+
"</a>"
;
</@
shiro
.hasPermission
>
<@
shiro
.lacksPermission
name
=
"article:update"
>
return
value
;
</@
shiro
.lacksPermission
>
}
},
{
field
:
'
articleAuthor
'
,
title
:
'作者'
,
width
:
100
},
{
field
:
'
basicSort
'
,
title
:
'排序'
,
align
:
'
center
'
,
width
:
50
},
{
field
:
'
basicHit
'
,
title
:
'点击'
,
align
:
'
center
'
,
width
:
50
},
{
field
:
'
basicDateTime
'
,
title
:
'发布时间'
,
align
:
'
center
'
,
width
:
150
}
]
})
;
//查询文章标题
$
(
"#submitSearch"
)
.click
(
function
(){
var
search
=
$
(
"form[name='searchForm']"
)
.serializeJSON
()
;
var
params
=
$
(
'#
articleListTable
'
)
.bootstrapTable
(
'
getOptions
'
)
;
params
.queryParams
=
function
(
params
)
{
$
.extend
(
params
,
search
)
;
return
params
;
}
$
(
"#articleListTable"
)
.bootstrapTable
(
'
refresh
'
,
{
query
:
$
(
"form[name='searchForm']"
)
.serializeJSON
()})
;
})
;
//添加文章
$
(
"#addButton"
)
.click
(
function
(){
if
(
$
{
isParent
}
==
true
){
<@
ms
.notify
msg
=
"不能选择父级栏目"
/>
return
false
;
}
location
.href
=
"${managerPath}/cms/article/add.do?categoryId=${categoryId?default(0)}&modelId=${Session.model_id_session?default(0)}&categoryTitle=${categoryTitle?default('')}"
;
})
;
//点击重置按钮
$
(
".reset"
)
.click
(
function
(){
$
(
"input[name=basicTitle]"
)
.val
(
""
)
;
})
//多选删除
$
(
"#delButton"
)
.click
(
function
(){
//获取勾选的所在行的所有数据
var
rows
=
$
(
"#articleListTable"
)
.bootstrapTable
(
"getSelections"
)
;
if
(
rows
!=
""
){
//弹出
modal
窗体
$
(
".delete"
)
.modal
()
;
}
else
{
<@
ms
.notify
msg
=
"请选择文章!"
type
=
"warning"
/>
}
})
;
//删除多个文章
$
(
".rightDelete"
)
.click
(
function
(){
var
rows
=
$
(
"#articleListTable"
)
.bootstrapTable
(
"getSelections"
)
;
if
(
rows
!=
""
){
$
.ajax
({
url
:
"${managerPath}/cms/article/delete.do"
,
type
:
'
post
'
,
dataType
:
'
json
'
,
data
:
JSON
.stringify
(
rows
),
contentType
:
'
application
/
json
'
,
success
:
function
(
msg
)
{
if
(
msg
.result
)
{
<@
ms
.notify
msg
=
"删除成功!"
type
=
"success"
/>
location
.reload
()
;
}
else
{
<@
ms
.notify
msg
=
"删除失败"
type
=
"fail"
/>
}
}
})
;
}
else
{
<@
ms
.notify
msg
=
"请选择文章!"
type
=
"warning"
/>
}
})
;
}
);
</
script
>
src/main/webapp/WEB-INF/manager/cms/article/index.ftl
deleted
100644 → 0
View file @
111333f7
<!
DOCTYPE
html>
<
html
lang="zh">
<head>
<#
include
"/include/macro.ftl"/>
<#
include
"/include/meta.ftl"/>
</
head
>
<
body
class="over-hide">
<@
ms
.content
>
<@ms.contentMenu>
<!-- 树形模块菜单开始 -->
<#if listColumn?has_content>
<@ms.tree treeId="inputTree" json="$
{
listColumn
?
default
(
''
)}
" addNodesName="全部" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" showIcon="true" expandAll="true" getZtreeId="getZtreeId(event,treeId,treeNode);" />
<#else>
<@ms.nodata content="暂无栏目"/>
</#if>
<!-- 树形模块菜单结束 -->
</@ms.contentMenu>
<@ms.contentBody width="85%" style="overflow-y: hidden;">
<@ms.contentPanel style="margin:0;padding:0;overflow-y: hidden;">
<iframe src="$
{
managerPath
}
/cms/article/0/main.do" style="width:100%;maring:0;padding:0;border:none;height:100%;background-image: url($
{
skin_manager_loadding
}
); background-repeat: no-repeat; background-position: center;" id="listFrame" target="listFrame" ></iframe>
</@ms.contentPanel>
</@ms.contentBody>
</@
ms
.content
>
<
script
>
//树形结点
function
getZtreeId(event,treeId,treeNode)
{
if
(
treeNode
.columnType
==
1
)
{
//父级栏目为
true
,子级栏目为
false
var
isParent
=
false
;
if
(
treeNode
.isParent
==
true
){
isParent
=
true
;
}
$
(
"#listFrame"
)
.attr
(
"src"
,
"${managerPath}/cms/article/"
+
treeNode
.categoryId
+
"/main.do?isParent="
+
isParent
+
"&categoryTitle="
+
encodeURIComponent
(
treeNode
.categoryTitle
))
;
}
else
if
(
treeNode
.columnType
==
2
){
//判断该单篇栏目是否存在文章
$
.ajax
({
type
:
"POST"
,
url
:
"${managerPath}/cms/article/"
+
treeNode
.categoryId
+
"/queryColumnArticle.do"
,
dataType
:
"json"
,
success
:
function
(
msg
){
if
(
msg
.result
)
{
$
(
"#listFrame"
)
.attr
(
"src"
,
"${managerPath}/cms/article/add.do?categoryId="
+
treeNode
.categoryId
+
"&categoryTitle="
+
encodeURIComponent
(
treeNode
.categoryTitle
))
;
}
else
{
//如果该单篇栏目下存在文章则跳转到文章编辑页
$
(
"#listFrame"
)
.attr
(
"src"
,
"${managerPath}/cms/article/"
+
treeNode
.categoryId
+
"/edit.do?categoryId="
+
treeNode
.categoryId
+
"&categoryTitle="
+
encodeURIComponent
(
treeNode
.categoryTitle
))
;
}
},
})
;
}
else
if
(
treeNode
.columnType
==
""
||
treeNode
.columnType
==
undefined
){
$
(
"#listFrame"
)
.attr
(
"src"
,
"${managerPath}/cms/article/0/main.do"
)
;
}
}
</
script
>
</
body
>
</
html
>
\ No newline at end of file
src/main/webapp/WEB-INF/manager/cms/column/shiro-button.ftl
deleted
100644 → 0
View file @
111333f7
<@
shiro
.hasPermission
name="cms:column:save"><@ms.addButton id="addColumnBtn"/></@shiro.hasPermission>
<@
shiro
.hasPermission
name="cms:column:del"><@ms.delButton id="delColumnBtn"/></@shiro.hasPermission>
\ No newline at end of file
src/main/webapp/WEB-INF/manager/cms/column/shiro-update.ftl
deleted
100644 → 0
View file @
111333f7
<@
shiro
.hasPermission
name="cms:column:update">
var
url = "$
{
managerPath
}
/$
{
model
?
default
(
""
)}
/column/"+row.categoryId+"/edit.do?modelId=$
{
S
ession
.model_id_session
?
default
(
0
)}
&modelTitle=$
{
S
ession
.model_title_session
?
default
(
''
)}
";
return
"<a href=" +url+ " target='_self'>" + value + "</a>";
</@
shiro
.hasPermission
>
<@
shiro
.lacksPermission
name="cms:column:update">
return
value;
</@
shiro
.lacksPermission
>
\ No newline at end of file
src/main/webapp/WEB-INF/manager/cms/generate/index.ftl
deleted
100644 → 0
View file @
111333f7
<@
ms
.html5
>
<@ms.nav title="静态化"></@ms.nav>
<@ms.panel>
<p class="alert alert-info" role="alert">
<span class="glyphicon glyphicon-pushpin text-lef "></span>
<a class="alert-link text-lef" style="margin-left: 12px;">
更新主页,如果系统存在引导页面可以手动修改主页位置文件名,default.html引导页面index.html主页。
</a><br/>
<span class="glyphicon glyphicon-pushpin text-lef "></span>
<a class="alert-link text-lef" style="margin-left: 12px;">
更新栏目列表,推荐使用指定栏目更新。系统提示“更新中...”请不要刷新页面或点击其他菜单。
</a><br/>
<span class="glyphicon glyphicon-pushpin text-lef "></span>
<a class="alert-link text-lef" style="margin-left: 12px;">
根据时间与栏目类型生成文章
</a>
</p>
<@ms.form name="generateIndex">
<@ms.formRow label="选择主页模板" width="300">
<select class="form-control" id="select_id"></select>
<input type="hidden" name="url"/>
</@ms.formRow>
<@ms.text id="position" label="选择主页位置 " width="300" value="index" placeholder="输入主页位置" name="position" help="注:主页位置htm文件名一般为index.html或default.html"/>
<div class="form-group ms-form-group"><div class="col-sm-2"></div><div class="col-sm-9 ms-from-group-input ms-form-input">
<@shiro.hasPermission name="cms:generate:index">
<@ms.button class="btn btn-primary" id="updateIndex" value="生成主页" />
<@ms.panelNavBtnSave title="" id="viewIndex" value="预览主页" />
</@shiro.hasPermission>
</div>
</div>
</@ms.form>
<!--选择更新的栏目-->
<@ms.form name="generateColumn">
<@ms.formRow label="选择要生成栏目" width="300">
<#if list?has_content>
<@ms.treeInput treeId="inputTree" json="$
{
list
?
default
(
''
)}
" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" buttonText="选择更新的栏目" addNodesName="所有栏目" inputName="columnId" showIcon="true" expandAll="true" />
<#else>
<@ms.treeInput treeId="errorTree" buttonText="暂无数据" />
</#if>
</@ms.formRow>
<div class="form-group ms-form-group"><div class="col-sm-2"></div><div class="col-sm-9 ms-from-group-input ms-form-input">
<@shiro.hasPermission name="cms:generate:column">
<@ms.button class="btn btn-primary" id="updateColumn" value="生成栏目" />
</@shiro.hasPermission>
</div></div>
</@ms.form>
<@ms.form name="generateArticle">
<@ms.formRow label="文章栏目" width="300">
<#if list?has_content>
<@ms.treeInput treeId="inputTreee" json="$
{
list
?
default
(
''
)}
" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" addNodesName="所有栏目" buttonText="选择更新的栏目" inputName="articleId" showIcon="true" expandAll="true" />
<#else>
<@ms.treeInput treeId="errorTree" buttonText="暂无数据" />
</#if>
</@ms.formRow>
<@ms.date name="dateTime" label="指定时间" single=true readonly="readonly" width="300" value="$
{
now
?
string
(
'
yyyy-MM-dd
'
)}
" validation=
{
"required"
:
"true"
,
"data-bv-notempty-message"
:
"必填项目"
}
placeholder="点击该框选择时间段" />
<div class="form-group ms-form-group"><div class="col-sm-2"></div><div class="col-sm-9 ms-from-group-input ms-form-input">
<@shiro.hasPermission name="cms:generate:article">
<@ms.button class="btn btn-primary" id="updateArticle" value="生成文章" />
</@shiro.hasPermission>
</div></div>
</@ms.form>
</@ms.panel>
</@
ms
.html5
>
<!--点击进行按钮提交-->
<
script
>
$(function()
{
var
URL
=
"${managerPath}/template/queryTemplateFileForColumn.do"
;
var
DATA
=
""
;
$
(
this
)
.request
({
url
:
URL
,
data
:
DATA
,
type
:
"json"
,
method
:
"get"
,
func
:
function
(
msg
)
{
if
(
msg
.length
==
0
){
$
(
"#select_id"
)
.append
(
"<option value='' >暂无文件</option>"
)
}
for
(
var
i
=
0
;
i
<
msg
.length
;
i
++
){
$
(
"#select_id"
)
.append
(
"<option value="
+
msg
[
i
]+
">"
+
msg
[
i
]+
"</option>"
)
;
//如果存在
index
.html
if
(
msg
[
i
]==
"index.html"
||
msg
[
i
]==
"index.htm"
){
$
(
"#select_id"
)
.find
(
"option[value='"
+
msg
[
i
]+
"']"
)
.attr
(
"selected"
,
true
)
;
}
}
}})
;
}
)
//点击一键更新主页时,进行主页更新
$("#updateIndex").click(function()
{
//选择的主页模板名称和主页位置
var
url
=
$
(
"#select_id"
)
.val
()
;
var
position
=$
(
"input[name='position']"
)
.val
()
;
//封装
ajax
请求参数
var
URL
=
"${managerPath}/cms/generate//generateIndex.do"
;
var
DATA
=
"url="
+
url
+
"&position="
+
position
;
$
(
this
)
.html
(
"更新中.."
)
.attr
(
"disabled"
,
"disabled"
)
;
$
(
this
)
.request
({
url
:
URL
,
data
:
DATA
,
type
:
"json"
,
method
:
"post"
,
func
:
function
(
msg
)
{
$
(
"#updateIndex"
)
.html
(
"更新主页"
)
.removeAttr
(
"disabled"
)
;
if
(
msg
.result
){
<@
ms
.notify
msg
=
"更新成功"
type
=
"success"
/>
}
else
{
$
(
'
.ms-notifications
'
)
.offset
({
top
:
43
})
.notify
({
type
:
'
warning
'
,
message
:
{
text
:
msg
.resultMsg
}
})
.show
()
;
}
$
(
"#updateIndex"
)
.html
(
"更新主页"
)
}})
;
}
);
//点击预览时,进行预览
$("#viewIndex").click(function()
{
var
position
=$
(
"input[name='position']"
)
.val
()
;
window
.open
(
"${managerPath}/cms/generate/"
+
position
+
"/viewIndex.do"
)
;
}
);
</
script
>
<!--点击生成栏目按钮-->
<
script
>
$("#updateColumn").click(function()
{
var
columnId
=
0
;
if
(
$
(
"input[name='columnId']"
)
.val
()
!=
""
&&
$
(
"input[name='columnId']"
)
.val
()
.length
>
0
){
columnId
=
$
(
"input[name='columnId']"
)
.val
()
;
}
var
URL
=
"${managerPath}/cms/generate/"
+
columnId
+
"/genernateColumn.do"
;
$
(
this
)
.html
(
"更新中.."
)
.attr
(
"disabled"
,
"disabled"
)
;
$
(
this
)
.request
({
url
:
URL
,
data
:
columnId
,
type
:
"json"
,
method
:
"post"
,
func
:
function
(
msg
)
{
$
(
"#updateColumn"
)
.html
(
"更新栏目"
)
.removeAttr
(
"disabled"
)
;
//回调处理方式
if
(
msg
.result
){
<@
ms
.notify
msg
=
"更新成功"
type
=
"success"
/>
}
else
{
$
(
'
.ms-notifications
'
)
.offset
({
top
:
43
})
.notify
({
type
:
'
warning
'
,
message
:
{
text
:
msg
.resultMsg
}
})
.show
()
;
}
}})
;
}
);
</
script
>
<!--点击生成文章按钮-->
<
script
>
$("#updateArticle").click(function()
{
var
articleId
=
0
;
if
(
$
(
"input[name='articleId']"
)
.val
()
!=
""
){
articleId
=
$
(
"input[name='articleId']"
)
.val
()
;
}
var
URL
=
"${managerPath}/cms/generate/"
+
articleId
+
"/generateArticle.do"
;
var
DATA
=
"dateTime="
+
$
(
"input[name='dateTime']"
)
.val
()
;
$
(
this
)
.html
(
"更新中.."
)
.attr
(
"disabled"
,
"disabled"
)
;
$
(
this
)
.request
({
url
:
URL
,
data
:
DATA
,
type
:
"json"
,
method
:
"post"
,
func
:
function
(
msg
)
{
$
(
"#updateArticle"
)
.html
(
"更新文档"
)
.removeAttr
(
"disabled"
)
;
//回调处理方式
if
(
msg
.result
){
<@
ms
.notify
msg
=
"更新成功"
type
=
"success"
/>
}
else
{
$
(
'
.ms-notifications
'
)
.offset
({
top
:
43
})
.notify
({
type
:
'
warning
'
,
message
:
{
text
:
msg
.resultMsg
}
})
.show
()
;
}
}})
;
}
);
</
script
>
src/main/webapp/WEB-INF/manager/login.ftl
deleted
100644 → 0
View file @
111333f7
<!
DOCTYPE
html>
<
html
lang="zh">
<head>
<title>$
{
app
.appName
}
</title>
<#include "/include/head-file.ftl"/>
<script src="$
{
base
}
/static/plugins/jquery/3.2.1/jquery.min.js"></script>
<script src="$
{
base
}
/static/plugins/jquery.cookie/1.4.1/jquery.cookie.min.js"></script>
<link rel="stylesheet" href="$
{
base
}
/static/ms-admin/4.7.0/css/login.css">
</head>
<body>
<div id="login" class="login">
<el-container class="ms-admin-login-container">
<el-main class="ms-admin-login-main">
<div class="ms-admin-login-warp" @keydown.13='checkLogin'>
<img style="height: 360px" :src="ms.base+'/static/ms-admin/4.7.0/images/login-slogn.png'">
<el-form :model="loginForm" status-icon :rules="loginFormRule" style="height: 360px" ref="loginForm" label-width="100px" class="ms-admin-login-form">
<el-alert
style="margin-bottom: 10px;"
title="演示版部分删除功能已去除"
type="warning"
center
:closable="false"
show-icon>
</el-alert>
<h1>
<span>账户登录 / </span>User login</h1>
<el-form-item class="ms-admin-form-item" prop="managerName">
<el-input type="text" placeholder='用户名/admin' v-model="loginForm.managerName" ></el-input>
</el-form-item>
<el-form-item class="ms-admin-form-item" prop="managerPassword">
<el-input type="password" placeholder='密码/123456' v-model="loginForm.managerPassword"></el-input>
</el-form-item>
<el-form-item class="ms-admin-form-item ms-admin-form-item-code" prop="rand_code">
<el-input type="text" placeholder='验证码' v-model="loginForm.rand_code" autocomplete="off"></el-input>
<img :src="verifCode" class="code-img" @click="code" />
<p>
<span>看不清?</span>
<span @click="code">换一张</span>
</p>
</el-form-item>
<el-form-item class="ms-admin-form-item ms-admin-form-item-checkout">
<el-checkbox v-model="rememberPass">记住密码</el-checkbox>
</el-form-item>
<el-form-item class="ms-admin-form-item">
<el-button type="primary" @click="checkLogin" class="ms-admin-login-btn">登录</el-button>
</el-form-item>
</el-form>
</div>
</el-main>
</el-container>
</div>
</body>
</
html
>
<
script
>
var loginVue = new Vue(
{
el
:
'#
login
'
,
data
:
{
loginForm
:
{
managerName
:
'
admin
'
,
managerPassword
:
"123456"
,
rand_code
:
''
},
verifCode
:
ms
.manager
+
"/code?t="
+
new
D
ate
()
.getTime
(),
rememberPass
:
''
,
loginFormRule
:
{
managerName
:
[
{
required
:
true
,
message
:
'请输入用户名'
,
trigger
:
'
blur
'
},
{
min
:
1
,
max
:
30
,
message
:
'长度在
1
到
30
个字符'
,
trigger
:
'
blur
'
}
]
,
managerPassword
:
[
{
required
:
true
,
message
:
'请输入密码'
,
trigger
:
'
blur
'
},
{
min
:
1
,
max
:
30
,
message
:
'长度在
1
到
30
个字符'
,
trigger
:
'
blur
'
}
]
,
rand_code
:
[
{
required
:
true
,
message
:
'请填写验证码'
,
trigger
:
'
blur
'
},
{
min
:
1
,
max
:
4
,
message
:
'长度在
1
到
4
个字符'
,
trigger
:
'
blur
'
}
]
,
}
},
methods
:
{
//
登录
checkLogin
:
function
()
{
var
that
=
this
;
this
.
$refs
['
loginForm
']
.validate
((
valid
)
=>
{
if
(
valid
)
{
ms
.http.post
(
ms
.manager
+
"/checkLogin.do"
,
that
.loginForm
)
.then
(
function
(
data
)
{
if
(
data
.result
)
{
if
(
that
.rememberPass
)
{
$
.cookie
(
'
managerName
'
,
that
.loginForm.managerName
,
{
expires
:
365
})
;
$
.cookie
(
'
managerPassword
'
,
that
.loginForm.managerPassword
,
{
expires
:
365
})
;
}
else
{
$
.cookie
(
'
managerName
'
,
""
)
;
$
.cookie
(
'
managerPassword
'
,
""
)
;
}
that
.
$notify
({
title
:
'成功'
,
message
:
'登录成功'
,
type
:
'
success
'
})
;
location
.href
=
ms
.manager
+
"/index.do"
;
}
else
{
that
.
$notify
({
title
:
'失败'
,
message
:
data
.resultMsg
,
type
:
'
warning
'
})
;
that
.code
()
;
}
},
(
err
)
=>
{
that
.
$message
.error
(
data
.resultMsg
)
;
})
}
})
;
},
code
:
function
()
{
this
.verifCode
=
ms
.web
+
"/code?t="
+
new
D
ate
()
.getTime
()
;
},
},
mounted
:
function
()
{
this
.verifCode
=
ms
.web
+
"/code?t="
+
new
D
ate
()
.getTime
()
;
if
(
$
.cookie
(
'
managerName
'
)){
this
.loginForm.managerName
=
$
.cookie
(
'
managerName
'
)
;
this
.loginForm.managerPassword
=
$
.cookie
(
'
managerPassword
'
)
;
}
if
(
top
.location
!=
self
.location
){
top
.location
=
self
.location
;
}
}
}
)
</
script
>
\ No newline at end of file
src/main/webapp/WEB-INF/manager/main.ftl
deleted
100644 → 0
View file @
111333f7
<!--主界面-->
<!
DOCTYPE
html>
<
html
lang="en">
<
head
>
<title>铭飞CMS</title>
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<
style
>
body
{
height: 100%;
}
</
style
>
</
head
>
<
body
>
<
div
style="
text-align: center;
color: #555;
background: #FCFCFC;
height: 300px;
padding-top: 200px;
vertical-align: middle;
"><
h2
>欢迎使用铭飞产品</
h2
><
p
>技术交流加群:①242805203
②231212174(满) ③221335098(满) 或到<a href="http://ms.mingsoft.net/mbbs/main.do" target="_blank" style="
text-decoration: none;
">官方论坛进行技术交流</
a
></
p
></
div
>
</
body
>
</
html
>
\ No newline at end of file
src/main/webapp/WEB-INF/sso/login.ftl
deleted
100644 → 0
View file @
111333f7
<!
DOCTYPE
html>
<
html
>
<head>
<meta charset="UTF-8">
<title>登录</title>
<#include "/include/head-file.ftl"/>
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
<link rel="stylesheet" href="$
{
base
}
/static/css/login.css">
</head>
<body>
<div id="app">
<el-container>
<el-header class="ms-header" height="100px">
<img src="$
{
base
}
/static/images/logo.png">
<p>铭飞科技</p>
<em></em>
<span>欢迎登录</span>
</el-header>
<el-main class="ms-body">
<div class="ms-login">
<div class="ms-login-tab">
<span @click="loginActive='1'" :class="
{
'
active
'
:
loginActive
=='
1
'
}
">账号登录</span>
<em></em>
<span @click="loginActive='2'" :class="
{
'
active
'
:
loginActive
=='
2
'
}
">扫码登录</span>
</div>
<!--账号登录-->
<el-form ref="form" :model="form" :rules="loginFormRule" label-width="0px" v-if="loginActive=='1'">
<el-form-item prop="username">
<el-input type="text" v-model="form.username" placeholder="用户名">
<template slot="append">@qq.com</template>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input type="password" v-model="form.password" placeholder="密码"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" width="100%" @click="login()" class="ms-login-but">登录</el-button>
</el-form-item>
</el-form>
<!--扫码登录-->
<div v-show="loginActive=='2'" class="ms-login-code" id="login_container">
<img src="$
{
base
}
/static/images/code.png"/>
<span>请使用微信扫码二维码登录</span>
<a>" 铭飞MS平台 "</a>
</div>
<!--扫码登录成功-->
<div v-if="loginActive=='3'" class="ms-login-code-success">
<img class="phone" src="$
{
base
}
/static/images/phone.png" />
<img class="success" src="$
{
base
}
/static/images/success.png" />
<span>扫码成功!</span>
<span>请在手机上确认登录</span>
<a @click="loginActive='2'">返回二维码</a>
</div>
</div>
</el-main>
<el-footer class="ms-footer">
<div>
<span>关于我们</span>
<em></em>
<span>发展历程</span>
<em></em>
<span>联系我们</span>
</div>
<div>
版权所有 ©铭飞科技有限公司2012-2019 保留一切权利。
</div>
</el-footer>
</el-container>
</div>
</body>
</
html
>
<
script
>
new Vue(
{
el
:
"#app"
,
data
:
{
form
:
{
username
:
""
,
password
:
""
,
},
loginActive
:
"1"
,
//登录方式选中
loginFormRule
:
{
username
:
[
{
required
:
true
,
message
:
'请输入用户名'
,
trigger
:
'
change
'
},
]
,
password
:
[
{
required
:
true
,
message
:
'请输入密码'
,
trigger
:
'
change
'
},
]
,
//表单验证
}
},
methods
:
{
//点击登录
login
:
function
()
{
var
that
=
this
;
//调用表单验证
this
.
$refs
.form.validate
(
function
(
valid
)
{
if
(
valid
)
{
//验证成功
var
people
=
{
username
:
that
.form.username
+
"@qq.com"
,
password
:
that
.form.password
}
ms
.http.post
(
ms
.base
+
"/sso/login.do"
,
people
)
.then
(
function
(
json
)
{
if
(
json
.result
){
window
.location.href
=
decodeURIComponent
(
ms
.util.getParameter
(
"backurl"
))
;
}
else
{
alert
(
"登陆失败,
\n
1、账号或密码错
\n
2、或账号没有设置密码,请先扫描登陆后设置密码后重试"
)
;
}
}),
function
(
err
)
{
console
.log
(
err
)
}
}
else
{
//验证失败
}
})
;
}
},
mounted
:
function
(){
var
obj
=
new
W
xLogin
({
id
:
"login_container"
,
appid
:
"wx8c96aa3db4611395"
,
scope
:
"snsapi_login"
,
redirect_uri
:
"http%3A%2F%2Fms.mingsoft.net%2Fsso%2Fweixin.do%3Fbackurl%3D"
+
decodeURIComponent
(
ms
.util.getParameter
(
"backurl"
)),
state
:
""
,
style
:
"black"
,
href
:
""
})
;
}
}
)
</
script
>
\ No newline at end of file
src/main/webapp/api/ms.people.min.js
deleted
100644 → 0
View file @
111333f7
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment