nyx_server
Version:
Node内容发布
301 lines (276 loc) • 11.2 kB
JavaScript
(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));