diff --git a/apps/common/main/lib/controller/Comments.js b/apps/common/main/lib/controller/Comments.js
index b8f30b6c4..50348c6ec 100644
--- a/apps/common/main/lib/controller/Comments.js
+++ b/apps/common/main/lib/controller/Comments.js
@@ -126,6 +126,9 @@ define([
'comment:closeEditing': _.bind(this.closeEditing, this),
'comment:disableHint': _.bind(this.disableHint, this),
'comment:addDummyComment': _.bind(this.onAddDummyComment, this)
+ },
+ 'Common.Views.ReviewChanges': {
+ 'comment:removeComments': _.bind(this.onRemoveComments, this)
}
});
@@ -180,7 +183,7 @@ define([
this.api.asc_registerCallback('asc_onAddComments', _.bind(this.onApiAddComments, this));
this.api.asc_registerCallback('asc_onRemoveComment', _.bind(this.onApiRemoveComment, this));
this.api.asc_registerCallback('asc_onChangeComments', _.bind(this.onChangeComments, this));
- this.api.asc_registerCallback('asc_onRemoveComments', _.bind(this.onRemoveComments, this));
+ this.api.asc_registerCallback('asc_onRemoveComments', _.bind(this.onApiRemoveComments, this));
this.api.asc_registerCallback('asc_onChangeCommentData', _.bind(this.onApiChangeCommentData, this));
this.api.asc_registerCallback('asc_onLockComment', _.bind(this.onApiLockComment, this));
this.api.asc_registerCallback('asc_onUnLockComment', _.bind(this.onApiUnLockComment, this));
@@ -233,6 +236,11 @@ define([
this.api.asc_removeComment(id);
}
},
+ onRemoveComments: function (type) {
+ if (this.api) {
+ this.api.asc_removeComments(type!='current', type=='my' || !this.mode.canEditComments);// 1 param = true if remove all comments (not current), 2 param - only my comments
+ }
+ },
onResolveComment: function (uid) {
var t = this,
reply = null,
@@ -725,7 +733,7 @@ define([
this.updateComments(true);
},
- onRemoveComments: function (data) {
+ onApiRemoveComments: function (data) {
for (var i = 0; i < data.length; ++i) {
this.onApiRemoveComment(data[i], true);
}
diff --git a/apps/common/main/lib/view/ReviewChanges.js b/apps/common/main/lib/view/ReviewChanges.js
index 2325f1b31..f1bef9753 100644
--- a/apps/common/main/lib/view/ReviewChanges.js
+++ b/apps/common/main/lib/view/ReviewChanges.js
@@ -64,6 +64,7 @@ define([
'
' +
'' +
'' +
+ '' +
'
' +
'' +
'' +
@@ -161,6 +162,16 @@ define([
this.btnChat && this.btnChat.on('click', function (btn, e) {
me.fireEvent('collaboration:chat', [btn.pressed]);
});
+
+ if (this.btnCommentRemove) {
+ this.btnCommentRemove.on('click', function (e) {
+ me.fireEvent('comment:removeComments', ['current']);
+ });
+
+ this.btnCommentRemove.menu.on('item:click', function (menu, item, e) {
+ me.fireEvent('comment:removeComments', [item.value]);
+ });
+ }
}
return {
@@ -291,6 +302,15 @@ define([
});
}
+ if ( this.appConfig.canCoAuthoring && this.appConfig.canComments ) {
+ this.btnCommentRemove = new Common.UI.Button({
+ cls: 'btn-toolbar x-huge icon-top',
+ caption: this.txtCommentRemove,
+ split: true,
+ iconCls: 'btn-menu-comments'
+ });
+ }
+
var filter = Common.localStorage.getKeysFilter();
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
@@ -397,6 +417,28 @@ define([
me.turnCoAuthMode((value===null || parseInt(value) == 1) && !(config.isDesktopApp && config.isOffline) && config.canCoAuthoring);
}
+ if (me.btnCommentRemove) {
+ var items = [
+ {
+ caption: me.txtCommentRemCurrent,
+ value: 'current'
+ },
+ {
+ caption: me.txtCommentRemMy,
+ value: 'my'
+ }
+ ];
+ if (config.canEditComments)
+ items.push({
+ caption: me.txtCommentRemAll,
+ value: 'all'
+ });
+ me.btnCommentRemove.setMenu(
+ new Common.UI.Menu({items: items})
+ );
+ me.btnCommentRemove.updateHint([me.tipCommentRemCurrent, me.tipCommentRem]);
+ }
+
var separator_sharing = !(me.btnSharing || me.btnCoAuthMode) ? me.$el.find('.separator.sharing') : '.separator.sharing',
separator_comments = !(config.canComments && config.canCoAuthoring) ? me.$el.find('.separator.comments') : '.separator.comments',
separator_review = !(config.canReview || config.canViewReview) ? me.$el.find('.separator.review') : '.separator.review',
@@ -448,6 +490,7 @@ define([
this.btnCoAuthMode && this.btnCoAuthMode.render(this.$el.find('#slot-btn-coauthmode'));
this.btnHistory && this.btnHistory.render(this.$el.find('#slot-btn-history'));
this.btnChat && this.btnChat.render(this.$el.find('#slot-btn-chat'));
+ this.btnCommentRemove && this.btnCommentRemove.render(this.$el.find('#slot-comment-remove'));
return this.$el;
},
@@ -561,6 +604,7 @@ define([
}
}, this);
this.btnChat && this.btnChat.setDisabled(state);
+ this.btnCommentRemove && this.btnCommentRemove.setDisabled(state);
},
onLostEditRights: function() {
@@ -609,7 +653,13 @@ define([
txtFinalCap: 'Final',
txtOriginalCap: 'Original',
strFastDesc: 'Real-time co-editing. All changes are saved automatically.',
- strStrictDesc: 'Use the \'Save\' button to sync the changes you and others make.'
+ strStrictDesc: 'Use the \'Save\' button to sync the changes you and others make.',
+ txtCommentRemove: 'Remove Comments',
+ tipCommentRemCurrent: 'Remove current comments',
+ tipCommentRem: 'Remove comments',
+ txtCommentRemCurrent: 'Remove Current Comments',
+ txtCommentRemMy: 'Remove My Comments',
+ txtCommentRemAll: 'Remove All Comments'
}
}()), Common.Views.ReviewChanges || {}));