Files
OnlineJudge/static/src/js/app/admin/announcement/announcement.js
2015-10-17 12:22:05 +08:00

135 lines
5.5 KiB
JavaScript

require(["jquery", "avalon", "csrfToken", "bsAlert", "editor", "validator", "pager"],
function ($, avalon, csrfTokenHeader, bsAlert, editor) {
avalon.ready(function () {
var createAnnouncementEditor = editor("#create-announcement-editor");
var editAnnouncementEditor = editor("#edit-announcement-editor");
if (avalon.vmodels.announcement){
var vm = avalon.vmodels.announcement;
}
else {
var vm = avalon.define({
$id: "announcement",
announcementList: [],
isEditing: false,
showVisibleOnly: false,
//编辑器同步变量
announcementId: -1,
newTitle: "",
announcementVisible: false,
pager: {
getPage: function(page){
getPage(page);
}
},
editAnnouncement: function (announcement) {
vm.newTitle = announcement.title;
vm.announcementId = announcement.id;
editAnnouncementEditor.setValue(announcement.content);
vm.announcementVisible = announcement.visible;
vm.isEditing = true;
editAnnouncementEditor.focus();
},
cancelEdit: function () {
vm.isEditing = false;
},
submitChange: function () {
var title = vm.newTitle;
var content = editAnnouncementEditor.getValue();
if (content == "" || title == "") {
bsAlert("标题和内容都不能为空");
return false;
}
$.ajax({
url: "/api/admin/announcement/",
contentType: "application/json;charset=UTF-8",
dataType: "json",
method: "put",
data: JSON.stringify({
id: vm.announcementId,
title: title,
content: content,
visible: vm.announcementVisible
}),
success: function (data) {
if (!data.code) {
bsAlert("修改成功");
vm.isEditing = false;
localStorage.removeItem("/admin/autosave/edit-announcement-editor/");
getPage(1);
}
else {
bsAlert(data.data);
}
}
});
}
});
vm.$watch("showVisibleOnly", function () {
getPage(1);
avalon.vmodels.announcementPager.currentPage = 1;
});
}
function getPage(page) {
var url = "/api/admin/announcement/?paging=true&page=" + page + "&page_size=20";
if (vm.showVisibleOnly)
url += "&visible=true";
$.ajax({
url: url,
method: "get",
success: function (data) {
if (!data.code) {
vm.announcementList = data.data.results;
avalon.vmodels.announcementPager.totalPage = data.data.total_page;
}
else {
bsAlert(data.data);
}
}
});
}
//新建公告表单验证与数据提交
$("#announcement-form").validator().on('submit', function (e) {
if (!e.isDefaultPrevented()) {
var title = $("#title").val();
var content = createAnnouncementEditor.getValue();
if (content == "") {
bsAlert("请填写公告内容");
return false;
}
$.ajax({
url: "/api/admin/announcement/",
contentType: "application/json",
data: JSON.stringify({
title: title,
content: content
}),
dataType: "json",
method: "post",
success: function (data) {
if (!data.code) {
bsAlert("提交成功!");
$("#title").val("");
createAnnouncementEditor.setValue("");
localStorage.removeItem("/admin/autosave/create-announcement-editor/");
getPage(1);
} else {
bsAlert(data.data);
}
}
});
return false;
}
})
});
avalon.scan();
});