nyx_server
Version:
Node内容发布
71 lines (62 loc) • 2.2 kB
JavaScript
(function ($, lib, conf) {
'use strict';
// 对通栏对象进行集中管理
var bannerGroup = {
banners: {},
focusBanner: null,
// @todo 需要将isMove移动到状态管理中
isMove: false,
bodyList: '',
add: function (banner) {
bannerGroup.banners[banner.uid] = banner;
},
createAll: function () {
var comments = lib.getComments('banner:begin');
for (var i = 0, iLen = comments.length; i < iLen; i++) {
bannerGroup.create(comments[i]);
}
},
create: function (commentElm) {
var uid = commentElm.data.split(':')[2];
// 创建前需要先判断该通栏是否存在,因为每次刷重建通栏时,
// 都是基于对整个页面上的通栏注释节点进行重建的。
if (typeof bannerGroup.banners[uid] === 'undefined') {
var banner = new topic.module.Banner(commentElm);
bannerGroup.add(banner);
}
},
// 对所有通栏的蒙层进行重置,主要是对位置和是否显示进行重新计算。
layoutResetAll: function () {
var banners = bannerGroup.banners;
// @todo 命名空间和状态整理
if (topic.state.get('pageModel') !== 'bannerEdit') {
return;
}
for (var key in banners) {
banners[key].layoutReset();
banners[key].show();
}
},
// 隐藏所有通栏蒙层。
layoutHideAll: function () {
var banners = bannerGroup.banners;
for (var key in banners) {
banners[key].hide();
}
},
// 这里删除一个通栏,需要将所有通栏进行一次重置
remove: function (uid) {
var banners = bannerGroup.banners;
if (typeof banners[uid] !== 'undefined') {
// 将此操作移动到自定义事件中
bannerGroup.trigger('beforeRemove', uid);
topic.fragmentGroup.removeByBanner(uid);
banners[uid].destory();
delete banners[uid];
bannerGroup.layoutResetAll();
}
}
};
topic.Events.mixTo(bannerGroup);
lib.ns('topic').bannerGroup = bannerGroup;
}(topicJquery, topic.utils, topic.conf));