edit.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. <?php
  2. use common\widgets\UeditorWidget;
  3. use common\components\stringUtil;
  4. ?>
  5. <script src="/js/mobiscroll/mobiscroll.core-2.5.2.js" type="text/javascript"></script>
  6. <script src="/js/mobiscroll/mobiscroll.core-2.5.2-zh.js" type="text/javascript"></script>
  7. <link href="/css/mobiscroll/mobiscroll.core-2.5.2.css" rel="stylesheet" type="text/css" />
  8. <link href="/css/mobiscroll/mobiscroll.animation-2.5.2.css" rel="stylesheet" type="text/css" />
  9. <script src="/js/mobiscroll/mobiscroll.datetime-2.5.1.js" type="text/javascript"></script>
  10. <script src="/js/mobiscroll/mobiscroll.datetime-2.5.1-zh.js" type="text/javascript"></script>
  11. <!-- S 可根据自己喜好引入样式风格文件 -->
  12. <script src="/js/mobiscroll/mobiscroll.android-ics-2.5.2.js" type="text/javascript"></script>
  13. <link href="/css/mobiscroll/mobiscroll.android-ics-2.5.2.css" rel="stylesheet" type="text/css" />
  14. <!-- E 可根据自己喜好引入样式风格文件 -->
  15. <div class="page-title">
  16. <div class="title-env">
  17. <h1 class="title">修改文章</h1>
  18. </div>
  19. <div class="breadcrumb-env">
  20. <ol class="breadcrumb bc-1">
  21. <li>
  22. <a href="/"><i class="fa-home"></i>Home</a>
  23. </li>
  24. <li>
  25. <a href="javascript:void(0)">商城管理</a>
  26. </li>
  27. <li class="active">
  28. <strong>文章管理</strong>
  29. </li>
  30. </ol>
  31. </div>
  32. </div>
  33. <div class="row">
  34. <div class="col-sm-12">
  35. <div class="panel panel-default">
  36. <div class="panel-body">
  37. <form role="form" class="form-horizontal">
  38. <div class="form-group">
  39. <label class="col-sm-2 control-label">*标题:</label>
  40. <input type="hidden" name="id" value="<?= $article['id'] ?>" />
  41. <div class="col-sm-10">
  42. <input type="text" class="form-control" name="title" value="<?= $article['title'] ?>" placeholder="">
  43. <p></p>
  44. </div>
  45. </div>
  46. <div class="form-group">
  47. <label class="col-sm-2 control-label">阅读量:</label>
  48. <div class="col-sm-10">
  49. <input type="tel" class="form-control" name="viewNum" value="<?= stringUtil::calcAdd($article['viewNum'], $article['viewAddNum']) ?>" placeholder="选填,默认为0">
  50. <p></p>
  51. </div>
  52. </div>
  53. <div class="form-group">
  54. <label class="col-sm-2 control-label" for="field-1">创建时间:</label>
  55. <div class="col-sm-10">
  56. <input type="text" class="form-control" id="appDateTime" name="createTime" value="<?= date("Y-m-d H:i",strtotime($article['createTime'])) ?>" placeholder="选填,默认为当前时间">
  57. <p></p>
  58. </div>
  59. </div>
  60. <div class="form-group-separator"></div>
  61. <div class="form-group">
  62. <label class="col-sm-2 control-label">图片:</label>
  63. <div>
  64. <div style="margin-left:16px;width:113px;height:174px;float:left;display:inline-block">
  65. 封面
  66. <div style="width:97px;height:110px;display:inline-block;margin-bottom:3px;">
  67. <img src="<?php if(empty($article['cover'])){ echo '/images/nopicture.png'; }else{ echo Yii::$app->params['imgUrl'].$article['cover']; } ?>" name="cover" style="width:97px;height:110px;" class="img-thumbnail" />
  68. </div>
  69. <a href="javascript:;" class="a-upload">
  70. <input type="file" id="cover" accept="image/*" value="" />选择图片
  71. </a>
  72. <input type="hidden" name="cover" value="<?= $article['cover'] ?>" />
  73. </div>
  74. <div style="clear:both;margin-left:228px;"><p></p></div>
  75. </div>
  76. </div>
  77. <div class="form-group-separator"></div>
  78. <div class="form-group">
  79. <label class="col-sm-2 control-label" for="field-3">*摘要:</label>
  80. <div class="col-sm-10">
  81. <textarea name="summary" class="form-control"><?= $article['summary'] ?></textarea>
  82. <p></p>
  83. </div>
  84. </div>
  85. <div class="form-group-separator"></div>
  86. <div class="form-group">
  87. <label class="col-sm-2 control-label" for="field-3">*内容:</label>
  88. <div class="col-sm-10">
  89. <?= UeditorWidget::widget(['name' => 'content','content' => $article['content']]); ?>
  90. <p></p>
  91. </div>
  92. </div>
  93. <div class="form-group-separator"></div>
  94. <div class="form-group">
  95. <label class="col-sm-2 control-label">*所属分类</label>
  96. <div class="col-sm-10">
  97. <div style="border:1px solid #CCC;padding-left:8px;border-radius:4px;">
  98. <?php
  99. if(!empty($categoryList)){
  100. foreach($categoryList as $clKey => $clVal){
  101. if(!empty($clVal['child'])){
  102. echo '<label class="checkbox-inline" style="padding-left:0px;">'.$clVal['categoryName'].'</label><p>';
  103. foreach($clVal['child'] as $ccKey => $ccVal)
  104. {
  105. echo '&nbsp;&nbsp;&nbsp;|-- <label class="checkbox-inline"><input name="categoryId"';
  106. if(in_array($ccVal['id'],$articleCategory))
  107. echo 'checked ';
  108. echo 'value="'.$ccVal['id'].'" type="checkbox">'.$ccVal['categoryName'].'</label>';
  109. }
  110. echo '</p>';
  111. }else{
  112. echo '<label class="checkbox-inline"><input name="categoryId"';
  113. if(in_array($clVal['id'],$articleCategory))
  114. echo 'checked ';
  115. echo 'value="'.$clVal['id'].'" type="checkbox">'.$clVal['categoryName'].'</label><p></p>';
  116. }
  117. }
  118. }
  119. ?>
  120. </div>
  121. <p name="categoryIdMention"></p>
  122. </div>
  123. </div>
  124. <div class="form-group">
  125. <label class="col-sm-2 control-label" for="field-4">*文章状态</label>
  126. <div class="col-sm-10">
  127. <div class="radio-inline">
  128. <label>
  129. <input type="radio" name="status" checked value="0">
  130. 上线
  131. </label>
  132. </div>
  133. <div class="radio-inline">
  134. <label>
  135. <input type="radio" name="status" value="1">
  136. 下线
  137. </label>
  138. </div>
  139. </div>
  140. </div>
  141. <div class="form-group-separator"></div>
  142. <div class="form-group" style="text-align:center;">
  143. <button type="button" onclick="addSubmit('click',this)" class="btn btn-info btn-single">确认</button>
  144. <button type="button" onclick="history.go(-1);" class="btn btn-info btn-single">返回</button>
  145. </div>
  146. </form>
  147. </div>
  148. </div>
  149. </div>
  150. </div>
  151. <!-- footer -->
  152. <?php
  153. use backend\widgets\FooterWidget;
  154. ?>
  155. <?= FooterWidget::widget()?>
  156. <!-- footer -->
  157. <script src="/js/lrz/dist/lrz.bundle.js"></script>
  158. <script>
  159. //修改文章验证流程
  160. var articleId = $("input[name=id]");
  161. var title = $("input[name=title]");
  162. var viewNum = $("input[name=viewNum]");
  163. var createTime = $("input[name=createTime]");
  164. var cover = $(":input[name=cover]");
  165. var summary = $("textarea[name=summary]");
  166. var content = $("textarea[name=content]");
  167. var needValidate = [title,summary];
  168. //修改文章验证流程
  169. addSubmit();
  170. function addSubmit()
  171. {
  172. setStats(title, '请填写文章标题!', function(val, mess){
  173. var info=[false, mess];
  174. if(val.length <= 0){
  175. info[1] = '请填写文章标题。';
  176. }else if(getLength(val) > 0){
  177. info[0] = true;
  178. info[1] = '填写正确';
  179. }else{
  180. info[0] = false;
  181. }
  182. return info;
  183. });
  184. setStats(summary, '请填写摘要', function(val, mess){
  185. var info=[false, mess];
  186. if(getLength(val) > 0){
  187. info[0] = true;
  188. info[1] = '填写正确';
  189. }else{
  190. info[1] = '请填写摘要';
  191. }
  192. return info;
  193. });
  194. setStats(content, '请填写简介!', function(val, mess){
  195. var info=[false, mess];
  196. if(getLength(val) > 0){
  197. info[0] = true;
  198. info[1] = '填写正确';
  199. }else{
  200. info[1] = '请填写简介!';
  201. }
  202. return info;
  203. });
  204. if(arguments[0] == 'click'){//用户点击提交
  205. var submitButton = arguments[1];//获取提交按钮对象
  206. var submitButtonObj = $(submitButton);
  207. if(submitButtonObj.attr('submitStatus') == 'yes'){
  208. xhPopMsg('提交中……,请稍等',1000);
  209. return;//表单已经提交成功,不允许重复提交
  210. }
  211. var verifyStatus = true;
  212. for(var m=0;m<needValidate.length;m++){
  213. var singleObj = needValidate[m];
  214. if(singleObj.attr('addStatus') == undefined){
  215. singleObj.blur();
  216. }
  217. if(singleObj.attr('addStatus') == 'no'){
  218. verifyStatus = false;
  219. continue;
  220. }
  221. }
  222. //简介的判断
  223. // if(isNotNull(content.val()) == false){
  224. // content.siblings('p').addClass('help-error-mention').html('请填写简介哈');
  225. // verifyStatus = false;
  226. // }else{
  227. // content.siblings('p').removeClass('help-error-mention').html('');
  228. // }
  229. //确认有没选择分类
  230. var checkNum = $(":input[name=categoryId]:checked").length;
  231. if(parseInt(checkNum) < 1){
  232. $("p[name=categoryIdMention]").addClass('help-error-mention').html('请选择分类');
  233. verifyStatus = false;
  234. }else{
  235. $("p[name=categoryIdMention]").removeClass('help-error-mention').html('');
  236. }
  237. if(verifyStatus){
  238. var statusValue = $('input:radio[name=status]:checked').val();//文章状态
  239. var categoryVal = '';
  240. $(":input[name=categoryId]:checked").each(function(){
  241. categoryVal += $(this).val()+',';
  242. });
  243. var data = "title="+title.val()+"&viewNum="+viewNum.val();
  244. data += "&cover="+cover.val()+"&createTime="+createTime.val();
  245. data += "&content="+content.val()+"&summary="+summary.val();
  246. data += "&_csrf=<?= Yii::$app->request->csrfToken ?>&status="+statusValue+"&categoryId="+categoryVal+"&id="+articleId.val();
  247. $.ajax({type:"POST",url:'/article/save-edit',data:data,dataType:'json',async:false,success:function(data){
  248. if(data.code == 'A0001'){
  249. submitButtonObj.attr('submitStatus','yes');
  250. xhPopMsg(data.msg,1300);//调用定时浮层 XXX毫秒后消失
  251. setTimeout(function(){
  252. window.location.href='/article/list';
  253. },1400);
  254. }
  255. }
  256. });
  257. }
  258. }
  259. }
  260. function setStats(obj,mess,check)
  261. {
  262. obj.focus(function(){
  263. $(this).removeAttr('addStatus');
  264. $(this).siblings('p').removeClass('help-error-mention').html('');
  265. $(this).parent().parent().removeClass("has-success").removeClass('has-error');
  266. });
  267. obj.blur(function(){
  268. var objVal = obj.val();
  269. var info = check(objVal,mess);
  270. if(info[0]){
  271. $(this).attr('addStatus','yes');
  272. $(this).siblings('p').removeClass('help-error-mention').html('');
  273. $(this).parent().parent().addClass("has-success").removeClass("has-error");
  274. }else{
  275. $(this).attr('addStatus','no');
  276. $(this).siblings('p').addClass('help-error-mention').html(info[1]);
  277. $(this).parent().parent().addClass("has-error").removeClass("has-success");
  278. }
  279. });
  280. }
  281. document.querySelector('#cover').addEventListener('change', function () {
  282. //参数说明 https://github.com/think2011/localResizeIMG/wiki/2.-%E5%8F%82%E6%95%B0%E6%96%87%E6%A1%A3
  283. lrz(this.files[0],{
  284. width: 500,// 图片最大不超过的宽度,默认为原图宽度,高度不设时会适应宽度。
  285. fieldName:'Filedata',//文件名
  286. quality:1,//图片质量 0.1 - 1
  287. })
  288. .then(function (rst) {
  289. // 处理成功会执行
  290. rst.formData.append('fileLen', rst.fileLen);
  291. rst.formData.append('_csrf', '<?= Yii::$app->request->csrfToken?>');
  292. $.ajax({
  293. //url: '/main/img', // 这个地址做了跨域处理,可以用于实际调试
  294. url: '/upload/upload-file', // 这个地址做了跨域处理,可以用于实际调试
  295. data: rst.formData,
  296. processData: false,
  297. contentType: false,
  298. type: 'POST',
  299. dataType:'json',
  300. success: function (data) {
  301. $("img[name=cover]").attr('src','<?= Yii::$app->params['imgUrl']; ?>'+data.url);
  302. $("input[name='cover']").val(data.url);
  303. }
  304. });
  305. })
  306. .catch(function (err) {
  307. // 处理失败会执行
  308. })
  309. .always(function () {
  310. // 不管是成功失败,都会执行
  311. });
  312. });
  313. //修改创建时间
  314. $(function () {
  315. var currYear = (new Date()).getFullYear();
  316. var opt ={};
  317. opt.date = {preset : 'date'};
  318. opt.datetime = {preset : 'datetime'};
  319. opt.time = {preset : 'time'};
  320. opt.default = {
  321. theme: 'android-ics light', //皮肤样式
  322. display: 'modal', //显示方式
  323. mode: 'scroller', //日期选择模式
  324. lang:'zh',
  325. dateFormat: 'yy-mm-dd',//填写此选项,input有值时才能正常获取
  326. showNow: true,
  327. nowText: "今天",
  328. startYear:currYear - 10, //开始年份
  329. endYear:currYear + 10 //结束年份
  330. };
  331. var optDateTime = $.extend(opt['datetime'], opt['default']);
  332. $("#appDateTime").mobiscroll(optDateTime).datetime(optDateTime);
  333. });
  334. </script>