[common] refactoring Comments view
This commit is contained in:
parent
ae675ba38f
commit
537d84cbcc
|
@ -72,6 +72,99 @@ define([
|
||||||
return tpl;
|
return tpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var CommentsPanelDataView = Common.UI.DataView.extend((function() {
|
||||||
|
return {
|
||||||
|
options : {
|
||||||
|
handleSelect: false,
|
||||||
|
scrollable: true,
|
||||||
|
listenStoreEvents: false,
|
||||||
|
template: _.template('<div class="dataview-ct inner"></div>')
|
||||||
|
},
|
||||||
|
|
||||||
|
getTextBox: function () {
|
||||||
|
var text = $(this.el).find('textarea');
|
||||||
|
return (text && text.length) ? text : undefined;
|
||||||
|
},
|
||||||
|
setFocusToTextBox: function () {
|
||||||
|
var text = $(this.el).find('textarea');
|
||||||
|
if (text && text.length) {
|
||||||
|
var val = text.val();
|
||||||
|
text.focus();
|
||||||
|
text.val('');
|
||||||
|
text.val(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getActiveTextBoxVal: function () {
|
||||||
|
var text = $(this.el).find('textarea');
|
||||||
|
return (text && text.length) ? text.val().trim() : '';
|
||||||
|
},
|
||||||
|
autoHeightTextBox: function () {
|
||||||
|
var view = this,
|
||||||
|
textBox = $(this.el).find('textarea'),
|
||||||
|
domTextBox = null,
|
||||||
|
minHeight = 50,
|
||||||
|
lineHeight = 0,
|
||||||
|
scrollPos = 0,
|
||||||
|
oldHeight = 0,
|
||||||
|
newHeight = 0;
|
||||||
|
|
||||||
|
function updateTextBoxHeight() {
|
||||||
|
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
|
||||||
|
textBox.css({height: (domTextBox.scrollHeight + lineHeight) + 'px'});
|
||||||
|
} else {
|
||||||
|
oldHeight = domTextBox.clientHeight;
|
||||||
|
if (oldHeight >= minHeight) {
|
||||||
|
|
||||||
|
textBox.css({height: minHeight + 'px'});
|
||||||
|
|
||||||
|
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
|
||||||
|
newHeight = Math.max(domTextBox.scrollHeight + lineHeight, minHeight);
|
||||||
|
textBox.css({height: newHeight + 'px'});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
view.autoScrollToEditButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (textBox && textBox.length) {
|
||||||
|
domTextBox = textBox.get(0);
|
||||||
|
|
||||||
|
if (domTextBox) {
|
||||||
|
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
|
||||||
|
updateTextBoxHeight();
|
||||||
|
textBox.bind('input propertychange', updateTextBoxHeight)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.textBox = textBox;
|
||||||
|
},
|
||||||
|
clearTextBoxBind: function () {
|
||||||
|
if (this.textBox) {
|
||||||
|
this.textBox.unbind('input propertychange');
|
||||||
|
this.textBox = undefined;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
autoScrollToEditButtons: function () {
|
||||||
|
var button = $('#id-comments-change'), // TODO: add to cache
|
||||||
|
btnBounds = null,
|
||||||
|
contentBounds = this.el.getBoundingClientRect(),
|
||||||
|
moveY = 0,
|
||||||
|
padding = 7;
|
||||||
|
|
||||||
|
if (button.length) {
|
||||||
|
btnBounds = button.get(0).getBoundingClientRect();
|
||||||
|
if (btnBounds && contentBounds) {
|
||||||
|
moveY = contentBounds.bottom - (btnBounds.bottom + padding);
|
||||||
|
if (moveY < 0) {
|
||||||
|
this.scroller.scrollTop(this.scroller.getScrollTop() - moveY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})());
|
||||||
|
|
||||||
Common.Views.Comments = Common.UI.BaseView.extend(_.extend({
|
Common.Views.Comments = Common.UI.BaseView.extend(_.extend({
|
||||||
el: '#left-panel-comments',
|
el: '#left-panel-comments',
|
||||||
template: _.template(panelTemplate),
|
template: _.template(panelTemplate),
|
||||||
|
@ -81,11 +174,126 @@ define([
|
||||||
textBoxAutoSizeLocked: undefined, // disable autosize textbox
|
textBoxAutoSizeLocked: undefined, // disable autosize textbox
|
||||||
viewmode: false,
|
viewmode: false,
|
||||||
|
|
||||||
|
_commentsViewOnItemClick: function (picker, item, record, e) {
|
||||||
|
var me = this;
|
||||||
|
var btn, showEditBox, showReplyBox, commentId, replyId, hideAddReply;
|
||||||
|
|
||||||
|
function readdresolves() {
|
||||||
|
me.update();
|
||||||
|
}
|
||||||
|
|
||||||
|
btn = $(e.target);
|
||||||
|
if (btn) {
|
||||||
|
showEditBox = record.get('editText');
|
||||||
|
showReplyBox = record.get('showReply');
|
||||||
|
commentId = record.get('uid');
|
||||||
|
replyId = btn.attr('data-value');
|
||||||
|
|
||||||
|
if (btn.hasClass('btn-edit')) {
|
||||||
|
if (!_.isUndefined(replyId)) {
|
||||||
|
me.fireEvent('comment:closeEditing', [commentId]);
|
||||||
|
me.fireEvent('comment:editReply', [commentId, replyId]);
|
||||||
|
|
||||||
|
me.commentsView.reply = replyId;
|
||||||
|
|
||||||
|
this.autoHeightTextBox();
|
||||||
|
|
||||||
|
readdresolves();
|
||||||
|
|
||||||
|
me.hookTextBox();
|
||||||
|
|
||||||
|
this.autoScrollToEditButtons();
|
||||||
|
this.setFocusToTextBox();
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (!showEditBox) {
|
||||||
|
me.fireEvent('comment:closeEditing');
|
||||||
|
record.set('editText', true);
|
||||||
|
|
||||||
|
this.autoHeightTextBox();
|
||||||
|
readdresolves();
|
||||||
|
this.setFocusToTextBox();
|
||||||
|
me.hookTextBox();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (btn.hasClass('btn-delete')) {
|
||||||
|
if (!_.isUndefined(replyId)) {
|
||||||
|
me.fireEvent('comment:removeReply', [commentId, replyId]);
|
||||||
|
} else {
|
||||||
|
me.fireEvent('comment:remove', [commentId]);
|
||||||
|
Common.NotificationCenter.trigger('edit:complete', me);
|
||||||
|
}
|
||||||
|
|
||||||
|
me.fireEvent('comment:closeEditing');
|
||||||
|
readdresolves();
|
||||||
|
} else if (btn.hasClass('user-reply')) {
|
||||||
|
me.fireEvent('comment:closeEditing');
|
||||||
|
record.set('showReply', true);
|
||||||
|
|
||||||
|
readdresolves();
|
||||||
|
|
||||||
|
this.autoHeightTextBox();
|
||||||
|
me.hookTextBox();
|
||||||
|
|
||||||
|
this.autoScrollToEditButtons();
|
||||||
|
this.setFocusToTextBox();
|
||||||
|
} else if (btn.hasClass('btn-reply', false)) {
|
||||||
|
if (showReplyBox) {
|
||||||
|
me.fireEvent('comment:addReply', [commentId, this.getActiveTextBoxVal()]);
|
||||||
|
me.fireEvent('comment:closeEditing');
|
||||||
|
|
||||||
|
readdresolves();
|
||||||
|
}
|
||||||
|
} else if (btn.hasClass('btn-close', false)) {
|
||||||
|
|
||||||
|
me.fireEvent('comment:closeEditing', [commentId]);
|
||||||
|
|
||||||
|
} else if (btn.hasClass('btn-inner-edit', false)) {
|
||||||
|
if (!_.isUndefined(me.commentsView.reply)) {
|
||||||
|
me.fireEvent('comment:changeReply', [commentId, me.commentsView.reply, this.getActiveTextBoxVal()]);
|
||||||
|
me.commentsView.reply = undefined;
|
||||||
|
} else if (showEditBox) {
|
||||||
|
me.fireEvent('comment:change', [commentId, this.getActiveTextBoxVal()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
me.fireEvent('comment:closeEditing');
|
||||||
|
|
||||||
|
readdresolves();
|
||||||
|
|
||||||
|
} else if (btn.hasClass('btn-inner-close', false)) {
|
||||||
|
me.fireEvent('comment:closeEditing');
|
||||||
|
|
||||||
|
me.commentsView.reply = undefined;
|
||||||
|
|
||||||
|
readdresolves();
|
||||||
|
} else if (btn.hasClass('btn-resolve', false)) {
|
||||||
|
var tip = btn.data('bs.tooltip');
|
||||||
|
if (tip) tip.dontShow = true;
|
||||||
|
|
||||||
|
me.fireEvent('comment:resolve', [commentId]);
|
||||||
|
|
||||||
|
readdresolves();
|
||||||
|
} else if (btn.hasClass('btn-resolve-check', false)) {
|
||||||
|
var tip = btn.data('bs.tooltip');
|
||||||
|
if (tip) tip.dontShow = true;
|
||||||
|
|
||||||
|
me.fireEvent('comment:resolve', [commentId]);
|
||||||
|
|
||||||
|
readdresolves();
|
||||||
|
} else if (!btn.hasClass('msg-reply') &&
|
||||||
|
!btn.hasClass('btn-resolve-check') &&
|
||||||
|
!btn.hasClass('btn-resolve')) {
|
||||||
|
me.fireEvent('comment:show', [commentId, false]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
initialize: function (options) {
|
initialize: function (options) {
|
||||||
Common.UI.BaseView.prototype.initialize.call(this, options);
|
Common.UI.BaseView.prototype.initialize.call(this, options);
|
||||||
|
|
||||||
this.store = this.options.store;
|
this.store = this.options.store;
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function () {
|
render: function () {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
|
@ -134,255 +342,51 @@ define([
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
var CommentsPanelDataView = Common.UI.DataView.extend((function() {
|
|
||||||
|
|
||||||
return {
|
if (this.commentsView) {
|
||||||
|
this.commentsView.onResetItems();
|
||||||
|
} else {
|
||||||
|
this.commentsView = new CommentsPanelDataView({
|
||||||
|
el: $('.messages-ct',me.el),
|
||||||
|
store: me.store,
|
||||||
|
itemTemplate: _.template(replaceWords(commentsTemplate, {
|
||||||
|
textAddReply: me.textAddReply,
|
||||||
|
textAdd: me.textAdd,
|
||||||
|
textCancel: me.textCancel,
|
||||||
|
textEdit: me.textEdit,
|
||||||
|
textReply: me.textReply,
|
||||||
|
textClose: me.textClose,
|
||||||
|
maxCommLength: Asc.c_oAscMaxCellOrCommentLength
|
||||||
|
}))
|
||||||
|
});
|
||||||
|
|
||||||
options : {
|
var addtooltip = function (dataview, view, record) {
|
||||||
handleSelect: false,
|
if (view.tipsArray) {
|
||||||
scrollable: true,
|
view.tipsArray.forEach(function(item){
|
||||||
listenStoreEvents: false,
|
item.remove();
|
||||||
template: _.template('<div class="dataview-ct inner"></div>')
|
});
|
||||||
},
|
|
||||||
|
|
||||||
getTextBox: function () {
|
|
||||||
var text = $(this.el).find('textarea');
|
|
||||||
return (text && text.length) ? text : undefined;
|
|
||||||
},
|
|
||||||
setFocusToTextBox: function () {
|
|
||||||
var text = $(this.el).find('textarea');
|
|
||||||
if (text && text.length) {
|
|
||||||
var val = text.val();
|
|
||||||
text.focus();
|
|
||||||
text.val('');
|
|
||||||
text.val(val);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
getActiveTextBoxVal: function () {
|
|
||||||
var text = $(this.el).find('textarea');
|
|
||||||
return (text && text.length) ? text.val().trim() : '';
|
|
||||||
},
|
|
||||||
autoHeightTextBox: function () {
|
|
||||||
var view = this,
|
|
||||||
textBox = $(this.el).find('textarea'),
|
|
||||||
domTextBox = null,
|
|
||||||
minHeight = 50,
|
|
||||||
lineHeight = 0,
|
|
||||||
scrollPos = 0,
|
|
||||||
oldHeight = 0,
|
|
||||||
newHeight = 0;
|
|
||||||
|
|
||||||
function updateTextBoxHeight() {
|
|
||||||
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
|
|
||||||
textBox.css({height: (domTextBox.scrollHeight + lineHeight) + 'px'});
|
|
||||||
} else {
|
|
||||||
oldHeight = domTextBox.clientHeight;
|
|
||||||
if (oldHeight >= minHeight) {
|
|
||||||
|
|
||||||
textBox.css({height: minHeight + 'px'});
|
|
||||||
|
|
||||||
if (domTextBox.scrollHeight > domTextBox.clientHeight) {
|
|
||||||
newHeight = Math.max(domTextBox.scrollHeight + lineHeight, minHeight);
|
|
||||||
textBox.css({height: newHeight + 'px'});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
view.autoScrollToEditButtons();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (textBox && textBox.length) {
|
|
||||||
domTextBox = textBox.get(0);
|
|
||||||
|
|
||||||
if (domTextBox) {
|
|
||||||
lineHeight = parseInt(textBox.css('lineHeight'), 10) * 0.25;
|
|
||||||
updateTextBoxHeight();
|
|
||||||
textBox.bind('input propertychange', updateTextBoxHeight)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.textBox = textBox;
|
|
||||||
},
|
|
||||||
clearTextBoxBind: function () {
|
|
||||||
if (this.textBox) {
|
|
||||||
this.textBox.unbind('input propertychange');
|
|
||||||
this.textBox = undefined;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
autoScrollToEditButtons: function () {
|
|
||||||
var button = $('#id-comments-change'), // TODO: add to cache
|
|
||||||
btnBounds = null,
|
|
||||||
contentBounds = this.el.getBoundingClientRect(),
|
|
||||||
moveY = 0,
|
|
||||||
padding = 7;
|
|
||||||
|
|
||||||
if (button.length) {
|
|
||||||
btnBounds = button.get(0).getBoundingClientRect();
|
|
||||||
if (btnBounds && contentBounds) {
|
|
||||||
moveY = contentBounds.bottom - (btnBounds.bottom + padding);
|
|
||||||
if (moveY < 0) {
|
|
||||||
this.scroller.scrollTop(this.scroller.getScrollTop() - moveY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
})());
|
var arr = [],
|
||||||
if (CommentsPanelDataView) {
|
btns = $(view.el).find('.btn-resolve');
|
||||||
if (this.commentsView) {
|
btns.tooltip({title: me.textResolve, placement: 'cursor'});
|
||||||
this.commentsView.onResetItems();
|
btns.each(function(idx, item){
|
||||||
} else {
|
arr.push($(item).data('bs.tooltip').tip());
|
||||||
this.commentsView = new CommentsPanelDataView({
|
|
||||||
el: $('.messages-ct',me.el),
|
|
||||||
store: me.store,
|
|
||||||
itemTemplate: _.template(replaceWords(commentsTemplate, {
|
|
||||||
textAddReply: me.textAddReply,
|
|
||||||
textAdd: me.textAdd,
|
|
||||||
textCancel: me.textCancel,
|
|
||||||
textEdit: me.textEdit,
|
|
||||||
textReply: me.textReply,
|
|
||||||
textClose: me.textClose,
|
|
||||||
maxCommLength: Asc.c_oAscMaxCellOrCommentLength
|
|
||||||
}))
|
|
||||||
});
|
});
|
||||||
|
btns = $(view.el).find('.btn-resolve-check');
|
||||||
var addtooltip = function (dataview, view, record) {
|
btns.tooltip({title: me.textOpenAgain, placement: 'cursor'});
|
||||||
if (view.tipsArray) {
|
btns.each(function(idx, item){
|
||||||
view.tipsArray.forEach(function(item){
|
arr.push($(item).data('bs.tooltip').tip());
|
||||||
item.remove();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var arr = [],
|
|
||||||
btns = $(view.el).find('.btn-resolve');
|
|
||||||
btns.tooltip({title: me.textResolve, placement: 'cursor'});
|
|
||||||
btns.each(function(idx, item){
|
|
||||||
arr.push($(item).data('bs.tooltip').tip());
|
|
||||||
});
|
|
||||||
btns = $(view.el).find('.btn-resolve-check');
|
|
||||||
btns.tooltip({title: me.textOpenAgain, placement: 'cursor'});
|
|
||||||
btns.each(function(idx, item){
|
|
||||||
arr.push($(item).data('bs.tooltip').tip());
|
|
||||||
});
|
|
||||||
view.tipsArray = arr;
|
|
||||||
};
|
|
||||||
this.commentsView.on('item:add', addtooltip);
|
|
||||||
this.commentsView.on('item:remove', addtooltip);
|
|
||||||
this.commentsView.on('item:change', addtooltip);
|
|
||||||
|
|
||||||
this.commentsView.on('item:click', function (picker, item, record, e) {
|
|
||||||
var btn, showEditBox, showReplyBox, commentId, replyId, hideAddReply;
|
|
||||||
|
|
||||||
function readdresolves() {
|
|
||||||
me.update();
|
|
||||||
}
|
|
||||||
|
|
||||||
btn = $(e.target);
|
|
||||||
if (btn) {
|
|
||||||
showEditBox = record.get('editText');
|
|
||||||
showReplyBox = record.get('showReply');
|
|
||||||
commentId = record.get('uid');
|
|
||||||
replyId = btn.attr('data-value');
|
|
||||||
|
|
||||||
if (btn.hasClass('btn-edit')) {
|
|
||||||
if (!_.isUndefined(replyId)) {
|
|
||||||
me.fireEvent('comment:closeEditing', [commentId]);
|
|
||||||
me.fireEvent('comment:editReply', [commentId, replyId]);
|
|
||||||
|
|
||||||
me.commentsView.reply = replyId;
|
|
||||||
|
|
||||||
this.autoHeightTextBox();
|
|
||||||
|
|
||||||
readdresolves();
|
|
||||||
|
|
||||||
me.hookTextBox();
|
|
||||||
|
|
||||||
this.autoScrollToEditButtons();
|
|
||||||
this.setFocusToTextBox();
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if (!showEditBox) {
|
|
||||||
me.fireEvent('comment:closeEditing');
|
|
||||||
record.set('editText', true);
|
|
||||||
|
|
||||||
this.autoHeightTextBox();
|
|
||||||
readdresolves();
|
|
||||||
this.setFocusToTextBox();
|
|
||||||
me.hookTextBox();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (btn.hasClass('btn-delete')) {
|
|
||||||
if (!_.isUndefined(replyId)) {
|
|
||||||
me.fireEvent('comment:removeReply', [commentId, replyId]);
|
|
||||||
} else {
|
|
||||||
me.fireEvent('comment:remove', [commentId]);
|
|
||||||
Common.NotificationCenter.trigger('edit:complete', me);
|
|
||||||
}
|
|
||||||
|
|
||||||
me.fireEvent('comment:closeEditing');
|
|
||||||
readdresolves();
|
|
||||||
} else if (btn.hasClass('user-reply')) {
|
|
||||||
me.fireEvent('comment:closeEditing');
|
|
||||||
record.set('showReply', true);
|
|
||||||
|
|
||||||
readdresolves();
|
|
||||||
|
|
||||||
this.autoHeightTextBox();
|
|
||||||
me.hookTextBox();
|
|
||||||
|
|
||||||
this.autoScrollToEditButtons();
|
|
||||||
this.setFocusToTextBox();
|
|
||||||
} else if (btn.hasClass('btn-reply', false)) {
|
|
||||||
if (showReplyBox) {
|
|
||||||
me.fireEvent('comment:addReply', [commentId, this.getActiveTextBoxVal()]);
|
|
||||||
me.fireEvent('comment:closeEditing');
|
|
||||||
|
|
||||||
readdresolves();
|
|
||||||
}
|
|
||||||
} else if (btn.hasClass('btn-close', false)) {
|
|
||||||
|
|
||||||
me.fireEvent('comment:closeEditing', [commentId]);
|
|
||||||
|
|
||||||
} else if (btn.hasClass('btn-inner-edit', false)) {
|
|
||||||
if (!_.isUndefined(me.commentsView.reply)) {
|
|
||||||
me.fireEvent('comment:changeReply', [commentId, me.commentsView.reply, this.getActiveTextBoxVal()]);
|
|
||||||
me.commentsView.reply = undefined;
|
|
||||||
} else if (showEditBox) {
|
|
||||||
me.fireEvent('comment:change', [commentId, this.getActiveTextBoxVal()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
me.fireEvent('comment:closeEditing');
|
|
||||||
|
|
||||||
readdresolves();
|
|
||||||
|
|
||||||
} else if (btn.hasClass('btn-inner-close', false)) {
|
|
||||||
me.fireEvent('comment:closeEditing');
|
|
||||||
|
|
||||||
me.commentsView.reply = undefined;
|
|
||||||
|
|
||||||
readdresolves();
|
|
||||||
} else if (btn.hasClass('btn-resolve', false)) {
|
|
||||||
var tip = btn.data('bs.tooltip');
|
|
||||||
if (tip) tip.dontShow = true;
|
|
||||||
|
|
||||||
me.fireEvent('comment:resolve', [commentId]);
|
|
||||||
|
|
||||||
readdresolves();
|
|
||||||
} else if (btn.hasClass('btn-resolve-check', false)) {
|
|
||||||
var tip = btn.data('bs.tooltip');
|
|
||||||
if (tip) tip.dontShow = true;
|
|
||||||
|
|
||||||
me.fireEvent('comment:resolve', [commentId]);
|
|
||||||
|
|
||||||
readdresolves();
|
|
||||||
} else if (!btn.hasClass('msg-reply') &&
|
|
||||||
!btn.hasClass('btn-resolve-check') &&
|
|
||||||
!btn.hasClass('btn-resolve')) {
|
|
||||||
me.fireEvent('comment:show', [commentId, false]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
view.tipsArray = arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.commentsView.on({
|
||||||
|
'item:add': addtooltip,
|
||||||
|
'item:remove': addtooltip,
|
||||||
|
'item:change': addtooltip,
|
||||||
|
'item:click': this._commentsViewOnItemClick.bind(this)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.rendered) this.setupLayout();
|
if (!this.rendered) this.setupLayout();
|
||||||
|
@ -482,7 +486,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
setupLayout: function () {
|
setupLayout: function () {
|
||||||
var me = this, parent = $(me.el);
|
var me = this, parent = me.$el;
|
||||||
|
|
||||||
var add = $('.new-comment-ct', me.el),
|
var add = $('.new-comment-ct', me.el),
|
||||||
to = $('.add-link-ct', me.el),
|
to = $('.add-link-ct', me.el),
|
||||||
|
|
Loading…
Reference in a new issue