article_form.ftl 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <@ms.html5>
  2. <@ms.nav title="文章管理" back=true>
  3. <#if article.basicId == 0>
  4. <@ms.saveButton id="saveUpdate" value="保存"/>
  5. <#else>
  6. <@ms.updateButton id="saveUpdate" value="更新"/>
  7. </#if>
  8. </@ms.nav>
  9. <@ms.panel>
  10. <@ms.form isvalidation=true name="articleForm" action="${managerPath}/cms/article/${action}.do">
  11. <@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":"必填项目"}/>
  12. <@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":"自定义顺序不能为空"}/>
  13. <#if articleType?has_content>
  14. <@ms.checkboxlist colSm="2" name="checkbox" label="文章属性" list=articleType listKey="dictValue" listValue="dictLabel" />
  15. </#if>
  16. <@ms.radio name="basicDisplay"
  17. list=[{"id":"0","value":"是"},{"id":"1","value":"否"}] value="${article.basicDisplay?c?default()}"
  18. listKey="id" listValue="value" label="是否显示" help="选择否后前端将不显示,需要重新生成才有效果"
  19. />
  20. <@ms.formRow colSm="2" label="文章缩略图" width="400" >
  21. <@ms.uploadImg path="${websiteId}/article" inputName="basicThumbnails" size="1" msg="提示:文章缩略图,支持jpg格式" imgs="${article.basicThumbnails?default('')}" />
  22. </@ms.formRow>
  23. <@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个字符以内!"} />
  24. <@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个字符以内!"} />
  25. <#if !isEditCategory><!-- 如果不是单篇 -->
  26. <@ms.formRow colSm="2" label="所属栏目" width="300">
  27. <#if categoryTitle=="">
  28. <@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"/>
  29. <#else>
  30. <@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"/>
  31. </#if>
  32. </@ms.formRow>
  33. </#if>
  34. <@ms.hidden id="basicDateTime" name="basicDateTime" value=""/>
  35. <@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="点击该框选择时间段" />
  36. <@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个字符以内!"}/>
  37. <@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个字符以内!"}/>
  38. <!--新填字段内容开始-->
  39. <div id="addFieldForm">
  40. </div>
  41. <@ms.hidden name="articleTypeJson" />
  42. <@ms.editor colSm="2" name="articleContent" label="文章内容" content="${article.articleContent?default('')}" appId="${appId?default(0)}"/>
  43. <@ms.hidden name="modelId" value="${Session.model_id_session?default('0')}" />
  44. </@ms.form>
  45. </@ms.panel>
  46. </@ms.html5>
  47. <script>
  48. //重写时间控件
  49. $('#articleDateTime').daterangepicker({
  50. format:'YYYY-MM-DD HH:mm',
  51. singleDatePicker: true,
  52. showDropdowns: true,
  53. timePickerIncrement: 1,
  54. timePicker: true,
  55. timePicker12Hour: true,
  56. startDate: moment().hours(0).minutes(0).seconds(0),
  57. showDropdowns: true,
  58. showWeekNumbers: true,
  59. });
  60. $('#articleDateTime').on('apply.daterangepicker', function(ev, picker) {
  61. $('#articleDateTime').parents("form:first").data('bootstrapValidator').revalidateField('articleDateTime');
  62. });
  63. var articleBasicId=0;
  64. $(function(){
  65. //页面标题
  66. var articleTitle="<#if categoryTitle?has_content>${categoryTitle}&nbsp;</#if><#if article.basicId !=0><small>编辑文章</small><#else><small>添加文章</small></#if>";
  67. $(".ms-weixin-content-body-title>span").html(articleTitle);
  68. //隐藏跳转地址
  69. $("input[name='articleUrl']").parent().hide();
  70. //文章属性
  71. var actionUrl="";
  72. <#if article.basicId !=0>
  73. actionUrl = "${managerPath}/cms/article/${article.basicId?c?default(0)}/update.do";
  74. var type="${article.articleType?default('')}";
  75. var articleType = new Array;
  76. //文章属性
  77. $("#articleForm input[name='checkbox']").each(function(){
  78. if(type!=""){
  79. articleType = type.split(",");
  80. for(i=0;i<articleType.length;i++){
  81. if($(this).val()==articleType[i]){
  82. $(this).attr("checked",'true');
  83. }
  84. }
  85. }
  86. });
  87. articleBasicId=${article.basicId?c?default(0)};
  88. <#else>
  89. actionUrl = "${managerPath}/cms/article/save.do";
  90. </#if>
  91. //获取当前栏目的自定义模型
  92. var url="${managerPath}/mdiy/contentModel/contentModelField/"+${categoryId?default(0)}+"/queryField.do";
  93. var articleId="basicId="+${article.basicId?c?default(0)};
  94. $(this).request({url:url,data:articleId,method:"get",func:function(data) {
  95. $("#addFieldForm").html(data);
  96. }});
  97. //显示跳转地址
  98. $("input[name='checkbox']").click(function(){
  99. $("input[name='checkbox']").each(function(){
  100. if( $(this).val() == 'j'){
  101. if($(this).is(":checked") ){
  102. $("input[name='articleUrl']").parent().show();
  103. }else{
  104. $("input[name='articleUrl']").parent().hide();
  105. }
  106. }
  107. });
  108. });
  109. //更新或保存
  110. $("#saveUpdate").click(function(){
  111. //禁用按钮
  112. $("#saveUpdate").attr("disabled",true);
  113. //获取按钮值
  114. var bottonText = $("#saveUpdate").text().trim();
  115. //设置按钮加载状态值
  116. $("#saveUpdate").attr("data-loading-text",bottonText+"中");
  117. var articleDateTimeValue = $("#articleDateTime").val()+":00";//让时间能精确到秒与后台对应
  118. $("#basicDateTime").val(articleDateTimeValue); //给basicDateTime字段赋值
  119. //获取所有栏目属性被选中的值
  120. var typeJson=""
  121. $("#articleTypeField").find("select").each(function(index){
  122. var typeValue=0;
  123. if($(this).find("option:selected").val()==undefined){
  124. return;
  125. }
  126. var typeValue=$(this).find("option:selected").val();
  127. if($("#articleTypeField").find("select").length==index){
  128. typeJson =typeJson+ "{bcCategoryId:\"" + typeValue + "\",bcBasicId:'${article.basicId?default(0)}'}"
  129. }else{
  130. typeJson =typeJson+ "{bcCategoryId:\"" + typeValue + "\",bcBasicId:'${article.basicId?default(0)}'},"
  131. }
  132. })
  133. $("input[name=articleTypeJson]").val("["+typeJson+"]");
  134. var basicCategoryId="";
  135. <#if !isEditCategory><!-- 如果不是单篇 -->
  136. basicCategoryId=$("input[name='basicCategoryId']").val(); //多篇时的文章栏目
  137. <#else>
  138. basicCategoryId=${categoryId}; //单篇时的文章栏目
  139. </#if>
  140. //文章所属栏目是数字且不能为0
  141. if(basicCategoryId !=0 && !isNaN(basicCategoryId) ){
  142. //将表单序列化
  143. var saveArticle = $("#articleForm").serialize();
  144. saveArticle += "&basicCategoryId="+basicCategoryId;
  145. //文章属性
  146. var checkboxType="";
  147. $("input[name='checkbox']").each(function(){
  148. if($(this).is(":checked")){
  149. checkboxType+=$(this).val()+",";
  150. }
  151. });
  152. var dataMsg = saveArticle+"&checkboxType="+checkboxType;
  153. var seeMsg = "";
  154. <#if article.basicId !=0>
  155. seeMsg="更新中....";
  156. <#else>
  157. seeMsg="保存中....";
  158. </#if>
  159. var vobj = $("#articleForm").data('bootstrapValidator').validate();
  160. if(vobj.isValid()){
  161. if(isNaN($("input[name=basicSort]").val())){
  162. <@ms.notify msg="自定义排序必须是数字" type="warning"/>
  163. $("input[name=basicSort]").val(0);
  164. //启用按钮
  165. $("#saveUpdate").button('reset');
  166. return;
  167. }
  168. $(this).request({url:actionUrl,data:dataMsg,loadingText:seeMsg,method:"post",type:"json",func:function(obj) {
  169. //执行加载状态
  170. $("#saveUpdate").button('loading');
  171. if(obj.result){
  172. <#if article.basicId !=0>
  173. <@ms.notify msg="更新文章成功" type="success"/>
  174. <#else>
  175. <@ms.notify msg="保存文章成功" type="success"/>
  176. </#if>
  177. var columnType = ${columnType?default(0)};
  178. if(columnType == 1){
  179. //更新并生成之后路径进行跳转
  180. location.href=managerPath+"/cms/article/${categoryId?default(0)}/main.do";
  181. }else{
  182. var dataId = obj.resultData;
  183. if(dataId!=""){
  184. location.href = "${managerPath}/cms/article/"+dataId+"/edit.do";
  185. }
  186. };
  187. $("#saveUpdate").button('reset');
  188. }else{
  189. $('.ms-notifications').offset({top:43}).notify({
  190. type:'warning',
  191. message: { text:obj.resultMsg }
  192. }).show();
  193. }
  194. }});
  195. }
  196. }else{
  197. <@ms.notify msg="请选择文章所属栏目" type="warning"/>
  198. //启用按钮
  199. $("#saveUpdate").attr("disabled",false);
  200. }
  201. //启用按钮
  202. $("#saveUpdate").button('reset');
  203. $("#saveUpdate").attr("disabled",false);
  204. });
  205. });
  206. //选择栏目后查询自定义模型
  207. function clickZtreeId(event,treeId,treeNode){
  208. if(treeNode.columnType == 2){
  209. <@ms.notify msg="不能选择单篇栏目" />
  210. return false;
  211. }
  212. if(treeNode.isParent==true){
  213. <@ms.notify msg="不能选择父级栏目" />
  214. return false;
  215. }
  216. var url="${managerPath}/mdiy/contentModel/contentModelField/"+treeNode.categoryId+"/queryField.do";
  217. var basicId="basicId=${article.basicId?c?default(0)}";
  218. $(this).request({url:url,data:basicId,method:"get",func:function(data) {
  219. $("#addFieldForm").html("");
  220. $("#addFieldForm").html(data);
  221. }});
  222. }
  223. </script>