From 7375bda40c8eef0886e9b49be6da8747c060ddc6 Mon Sep 17 00:00:00 2001 From: sxw Date: Fri, 7 Aug 2015 19:20:19 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=89=8D=E7=AB=AF]:=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=86admin=E5=85=AC=E5=91=8A=E7=AE=A1=E7=90=86=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=BB=A5=E5=8F=8A=E7=9B=B8=E5=BA=94=E7=9A=84js?= =?UTF-8?q?=EF=BC=8C=E5=8C=85=E5=90=AB=E5=85=AC=E5=91=8A=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=96=B0=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/app/admin/announcement/announcement.js | 191 +++++++++--------- template/admin/admin.html | 2 +- template/admin/index/announcement.html | 65 ++++++ 3 files changed, 162 insertions(+), 96 deletions(-) create mode 100644 template/admin/index/announcement.html diff --git a/static/src/js/app/admin/announcement/announcement.js b/static/src/js/app/admin/announcement/announcement.js index 115873cd..1d3cc28d 100644 --- a/static/src/js/app/admin/announcement/announcement.js +++ b/static/src/js/app/admin/announcement/announcement.js @@ -1,53 +1,96 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], function ($, avalon, csrfHeader, bs_alert, editor) { - annoumcementEditor = editor("#editor"); - editAnnoumcementEditor = null; - if (!avalon.vmodels.announcement) - avalon.vmodels.announcement = null; - vm = avalon.define({ - $id: "announcement", - announcement: [], - previous_page: 0, - next_page: 0, - page: 1, - isEditing: false, - getState: function (el) { - if (el.visible) - return "可见"; - else - return "隐藏"; - }, - getNext: function (el) { - getPageData(++(vm.page), function (data) { - }); - }, - getPrevious: function (el) { - getPageData(--(vm.page), function (data) { - }); - }, - getBtnClass: function (btn) { - if (btn) { - return vm.next_page ? "btn btn-primary" : "btn btn-primary disabled"; - } - else { - return vm.previous_page ? "btn btn-primary" : "btn btn-primary disabled"; + announcementEditor = editor("#editor"); //创建新建公告的内容编辑器 + editAnnouncementEditor = null; + + if (!avalon.vmodels.announcement) // 防止模式重新定义 + { + // avalon:定义模式 announcement + vm = avalon.define({ + $id: "announcement", + announcement: [], // 公告列表数据项 + previous_page: 0, // 之前的页数 + next_page: 0, // 之后的页数 + page: 1, // 当前页数 + isEditing: 0, // 正在编辑的公告的ID, 为零说明未在编辑 + getState: function (el) { //获取公告当前状态,显示 + if (el.visible) + return "可见"; + else + return "隐藏"; + }, + getNext: function (el) { + if (!vm.next_page) + return; + getPageData(++(vm.page)); + }, + getPrevious: function (el) { + if (!vm.previous_page) + return; + getPageData(--(vm.page)); + }, + getBtnClass: function (btn) { + if (btn) { + return vm.next_page ? "btn btn-primary" : "btn btn-primary disabled"; + } + else { + return vm.previous_page ? "btn btn-primary" : "btn btn-primary disabled"; + } + + }, + enEdit: function (el) { //点击编辑按钮的事件,显示/隐藏编辑区 + $("#newTitle").val(el.title); + if (!editAnnouncementEditor) //初始化编辑器 + editAnnouncementEditor = editor("#editAnnouncementEditor"); + editAnnouncementEditor.setValue(el.content); + if (el.visible == false) + $("#hidden").attr("checked", true); + if (vm.isEditing == el.id) + vm.isEditing = 0; + else + vm.isEditing = el.id; + editAnnouncementEditor.focus(); + }, + disEdit: function () { //收起编辑框 + vm.isEditing = 0; + }, + submitChange: function () { // 处理编辑公告提交事件,顺便验证字段为空 + var title = $("#newTitle").val(), content = editAnnouncementEditor.getValue(), visible = true; + if ($("#hidden").attr("checked") == true) + visible = false; + if (title != "") { + if (content != "") { + $.ajax({ //发送修改公告请求 + beforeSend: csrfHeader, + url: "/api/edit_announcements/", + dataType: "json", + method: "post", + data: {id: vm.isEditing, title: title, content: content, visible: visible}, + success: function (data) { + if (!data.code) { + bs_alert("修改成功"); + vm.isEditing = 0; + } + else { + bs_alert(data.data); + } + } + }); + } + else + bs_alert("公告内容不得为空"); + } + else + bs_alert("公告标题不能为空"); } + }); + } - }, - enEdit: function(el){ - $("#newTitle").val(el.title); - if (!editAnnoumcementEditor) - editAnnoumcementEditor = editor("#editAnnoumcementEditor"); - editAnnoumcementEditor.setValue(el.content); - vm.isEditing = true; - editAnnoumcementEditor.focus(); - } - }); - - getPageData(1, function (data) { - avalon.scan(); - }); - - function getPageData(page, callback) { + avalon.scan(); + getPageData(1); //公告列表初始化 + vm.page = 1; + vm.isEditing = 0; + //Ajax get数据 + function getPageData(page) { $.ajax({ beforeSend: csrfHeader, url: "/api/announcements/?paging=true&page=" + page + "&page_size=10", @@ -58,7 +101,6 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi vm.announcement = data.data.results; vm.previous_page = data.data.previous_page; vm.next_page = data.data.next_page; - callback(data); } else { bs_alert(data.data); @@ -67,48 +109,7 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi }); } - - $("#announcement-edit-form") - .formValidation({ - framework: "bootstrap", - fields: { - title: { - validators: { - notEmpty: { - message: "请填写公告标题" - } - } - } - } - } - ).on('success.form.fv', function (e) { - e.preventDefault(); - var title = $("#newTitle").val(); - var content = editor1.getValue(); - if (content == "") { - bs_alert("请填写公告内容") - return; - } - $.ajax({ - beforeSend: csrfHeader, - url: "/api/admin/announcement/", - data: {title: title, content: content}, - dataType: "json", - method: "post", - success: function (data) { - if (!data.code) { - bs_alert("提交成功!"); - $("#title").val(""); - editor1.setValue(""); - getPageData(1, function (data) {}); - } else { - bs_alert(data.data); - } - } - - }) - }); - + //新建公告表单验证与数据提交 $("#announcement-form") .formValidation({ framework: "bootstrap", @@ -125,9 +126,9 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi ).on('success.form.fv', function (e) { e.preventDefault(); var title = $("#title").val(); - var content = editor1.getValue(); + var content = announcementEditor.getValue(); if (content == "") { - bs_alert("请填写公告内容") + bs_alert("请填写公告内容"); return; } $.ajax({ @@ -140,13 +141,13 @@ require(["jquery", "avalon", "csrf", "bs_alert", "editor", "validation"], functi if (!data.code) { bs_alert("提交成功!"); $("#title").val(""); - editor1.setValue(""); - getPageData(1, function (data) {}); + announcementEditor.setValue(""); + getPageData(1, function (data) { + }); } else { bs_alert(data.data); } } - }) }); diff --git a/template/admin/admin.html b/template/admin/admin.html index c7120847..3672a359 100644 --- a/template/admin/admin.html +++ b/template/admin/admin.html @@ -83,7 +83,7 @@ -
+
diff --git a/template/admin/index/announcement.html b/template/admin/index/announcement.html new file mode 100644 index 00000000..c93b7609 --- /dev/null +++ b/template/admin/index/announcement.html @@ -0,0 +1,65 @@ + +

Announcement

+
+ + + + + + + + + + + + + + + + + + + +
编号标题创建时间更新时间创建者状态操作
{{el.id}}{{el.title}}{{el.create_time|date("yyyy-MM-dd HH:mm:ss")}}{{el.last_update_time|date("yyyy-MM-dd HH:mm:ss")}}{{el.created_by.username}}{{getState(el)}} + +
+
+ 页数:{{page}}/{{page+next_page}} + 上一页 + 下一页 +
+ +
+

编辑公告

+ +
+
+
+ + +
+
+ + +
+
+ +
+
+

添加公告

+ +
+
+
+
+ + +
+
+ +
+
+
+ \ No newline at end of file