UNPKG

nyx_server

Version:

Node内容发布

301 lines (276 loc) 11.2 kB
(function ($, lib, conf) { 'use strict'; var win = window; var doc = document; var BannerMenu = function (banner) { this.init(banner); }; BannerMenu.prototype = { init: function (banner) { this.initParams(banner); this.initLayout(); this.initEvent(); }, initParams: function (banner) { this.banner = banner; }, initLayout: function () { this.layout = $('<div class="t-banner-layout-tools t_anim_long" data-topicSystem="true">' + '<span data-action="trans" class="t-banner-layout-tools-trans t_anim_long" ' + 'data-topicSystem="true">转换</span>' + '<span data-action="edit" class="t-banner-layout-tools-edit t_anim_long" ' + 'data-topicSystem="true">编辑</span>' + '<span data-action="innsertBefore" class="t-banner-layout-tools-innserBefore t_anim_long" ' + 'data-topicSystem="true">前插</span>' + '<span data-action="innsertAfter" class="t-banner-layout-tools-innsertAfter t_anim_long" ' + 'data-topicSystem="true">后插</span>' + '<span data-action="moveUp" class="t-banner-layout-tools-moveUp t_anim_long" ' + 'data-topicSystem="true">上移</span>' + '<span data-action="moveDown" class="t-banner-layout-tools-moveDown t_anim_long" ' + 'data-topicSystem="true">下移</span>' + '<span data-action="copy" class="t-banner-layout-tools-copy t_anim_long" ' + 'data-topicSystem="true">复制</span>' + '<span data-action="del" class="t-banner-layout-tools-del t_anim_long" ' + 'data-topicSystem="true">删除</span>' + '<span data-action="refresh" class="t-banner-layout-tools-refresh t_anim_long" ' + 'data-topicSystem="true">刷新</span>' + // '<span data-action="cancel" class="t-banner-layout-tools-cancel t_anim_long" ' + // 'data-topicSystem="true">取消</span>' + '<span data-action="replace" class="t-banner-layout-tools-replace t_anim_long" ' + 'data-topicSystem="true">粘贴</span>' + '</div>'); this.mask = $('<div class="t_screenMask t_system" data-topicSystem="true"></div>'); $(doc.body).append(this.layout); $(doc.body).append(this.mask); }, initEvent: function () { var _this = this; this.layout.on('click', 'span', function () { var elm = this; if ($(elm).hasClass('disable')) { return; } var action = $(elm).attr('data-action'); topic.ws.lock('page', topic_global_params.page.id, function (data) { // 这里判断的是系统层面是否有问题 if (data.success) { // 这里判断的是业务方面,该碎片是否被锁定 /* if (data.data.success || data.data.user.domainName == win.__user_id) { _this[action](elm); } else { alert(data.data.user.userName + '正在编辑通栏。'); }*/ _this[action](elm); } else { alert(data.msg); } }); //_this[action](elm); }); this.mask.on('click', function () { _this.cancel(this); }); }, hide: function () { this.layout.removeClass('show'); }, show: function (x, y) { var layout = this.layout; layout.removeClass('t_anim_long'); if (typeof x !== 'undefined' && typeof y !== 'undefined') { this.position(x, y); } this.menuStateRefresh(); this.maskShow(); setTimeout(function () { layout.addClass('t_anim_long'); layout.addClass('show'); }, 100); }, position: function (x, y) { var layout = this.layout; var windowScrollTop = $(win).scrollTop(); var windowScrollLeft = $(win).scrollLeft(); var windowHeight = $(win).height(); var windowWidth = $(win).width(); var boxSizeY = 70; var boxSizeX = 120; var pathbarHeight = 24; if (y < boxSizeY + windowScrollTop) { y = windowScrollTop + boxSizeY; } else if (y + boxSizeY + pathbarHeight > windowScrollTop + windowHeight) { y = windowScrollTop + windowHeight - boxSizeY - pathbarHeight; } if (x < boxSizeX + windowScrollLeft) { x = windowScrollLeft + boxSizeX; } else if (x + boxSizeX > windowScrollLeft + windowWidth) { x = windowScrollLeft + windowWidth - boxSizeX; } layout.css({ top: y + 'px', left: x + 'px' }); }, menuStateRefresh: function () { if (topic.state.get('isSortBanner')) { this.layout.find('.t-banner-layout-tools-edit').addClass('disable'); this.layout.find('.t-banner-layout-tools-innserBefore').addClass('disable'); this.layout.find('.t-banner-layout-tools-innsertAfter').addClass('disable'); this.layout.find('.t-banner-layout-tools-copy').addClass('disable'); this.layout.find('.t-banner-layout-tools-del').addClass('disable'); this.layout.find('.t-banner-layout-tools-refresh').addClass('disable'); this.layout.find('.t-banner-layout-tools-copy').addClass('disable'); this.layout.find('.t-banner-layout-tools-replace').addClass('disable'); this.layout.find('.t-banner-layout-tools-trans').addClass('disable'); } else { this.layout.find('.t-banner-layout-tools-edit').removeClass('disable'); this.layout.find('.t-banner-layout-tools-innserBefore').removeClass('disable'); this.layout.find('.t-banner-layout-tools-innsertAfter').removeClass('disable'); this.layout.find('.t-banner-layout-tools-copy').removeClass('disable'); this.layout.find('.t-banner-layout-tools-del').removeClass('disable'); this.layout.find('.t-banner-layout-tools-refresh').removeClass('disable'); //this.layout.find('.t-banner-layout-tools-replace').removeClass('disable'); //按照前端要求,再时光机上线之前禁止操作该功能20141017 shiyh this.layout.find('.t-banner-layout-tools-trans').removeClass('disable'); if(!this.layout.find('.t-banner-layout-tools-replace').hasClass('disable')){ this.layout.find('.t-banner-layout-tools-replace').addClass('disable'); } } this.checkReplaceButtonState(); this.checkTransButtonState(); }, checkReplaceButtonState: function () { var className = 'disable'; var clipboard = localStorage['clipboard']; if (clipboard !== '') { clipboard = JSON.parse(clipboard); } if (clipboard !== '' && clipboard.type === 'banner' && clipboard.content.id !== this.banner.id) { className = ''; } this.layout.find('.t-banner-layout-tools-replace').addClass(className); }, checkTransButtonState: function () { var currentPageId = topic_global_params.page.id; var bannerPageId = this.banner.data.pageId; var className = 'disable'; if (currentPageId !== bannerPageId) { className = ''; } this.layout.find('.t-banner-layout-tools-trans').addClass(className); }, maskShow: function () { this.mask.show(); }, maskHide: function () { this.mask.hide(); }, edit: function () { var _this = this; topic.ws.lock('page', topic_global_params.page.id, function (data) { if (data.success) { if (data.data.success || data.data.user.domainName == win.__user_id) { _this.banner.edit(); } else { alert(data.data.user.userName + '正在编辑通栏。'); } } else { alert(data.msg); } }); }, innsertBefore: function (elm) { var _this = this; topic.ws.lock('page', topic_global_params.page.id, function (data) { if (data.success) { if (data.data.success || data.data.user.domainName == win.__user_id) { _this.banner.innsertBefore(elm); } else { alert(data.data.user.userName + '正在编辑通栏。'); } } else { alert(data.msg); } }); }, innsertAfter: function (elm) { var _this = this; topic.ws.lock('page', topic_global_params.page.id, function (data) { if (data.success) { if (data.data.success || data.data.user.domainName == win.__user_id) { _this.banner.innsertAfter(elm); } else { alert(data.data.user.userName + '正在编辑通栏。'); } } else { alert(data.msg); } }); }, moveUp: function (elm) { var _this = this; topic.ws.lock('page', topic_global_params.page.id, function (data) { if (data.success) { if (data.data.success || data.data.user.domainName == win.__user_id) { _this.banner.moveUp(elm); } else { alert(data.data.user.userName + '正在编辑通栏。'); } } else { alert(data.msg); } }); }, moveDown: function (elm) { var _this = this; topic.ws.lock('page', topic_global_params.page.id, function (data) { if (data.success) { if (data.data.success || data.data.user.domainName == win.__user_id) { _this.banner.moveDown(elm); } else { alert(data.data.user.userName + '正在编辑通栏。'); } } else { alert(data.msg); } }); }, copy: function (elm) { this.banner.copy(elm); }, replace: function (elm) { this.banner.replace(elm); }, trans: function (elm) { this.banner.trans(elm); }, del: function (elm) { var _this = this; topic.ws.lock('page', topic_global_params.page.id, function (data) { if (data.success) { if (data.data.success || data.data.user.domainName == win.__user_id) { _this.banner.del(elm); } else { alert(data.data.user.userName + '正在编辑通栏。'); } } else { alert(data.msg); } }); }, refresh: function () { this.banner.refresh(); }, cancel: function () { this.hide(); this.maskHide(); }, destroy: function () { this.layout.remove(); this.mask.remove(); } }; topic.Events.mixTo(BannerMenu); lib.ns('topic.module').BannerMenu = BannerMenu; }(topicJquery, topic.utils, topic.conf));