Merge pull request #762 from ONLYOFFICE/feature/comment-permissions
Feature/comment permissions
This commit is contained in:
commit
c744b0896d
|
@ -51,6 +51,11 @@
|
||||||
editCommentAuthorOnly: <can edit your own comments only> // default = false
|
editCommentAuthorOnly: <can edit your own comments only> // default = false
|
||||||
deleteCommentAuthorOnly: <can delete your own comments only> // default = false,
|
deleteCommentAuthorOnly: <can delete your own comments only> // default = false,
|
||||||
reviewGroups: ["Group1", ""] // current user can accept/reject review changes made by users from Group1 and users without a group. [] - use groups, but can't change any group's changes
|
reviewGroups: ["Group1", ""] // current user can accept/reject review changes made by users from Group1 and users without a group. [] - use groups, but can't change any group's changes
|
||||||
|
commentGroups: { // {} - use groups, but can't view/edit/delete any group's comments
|
||||||
|
view: ["Group1", ""] // current user can view comments made by users from Group1 and users without a group.
|
||||||
|
edit: ["Group1", ""] // current user can edit comments made by users from Group1 and users without a group.
|
||||||
|
remove: ["Group1", ""] // current user can remove comments made by users from Group1 and users without a group.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
editorConfig: {
|
editorConfig: {
|
||||||
|
|
|
@ -216,7 +216,7 @@ define([
|
||||||
comment.asc_putTime(this.utcDateToString(new Date()));
|
comment.asc_putTime(this.utcDateToString(new Date()));
|
||||||
comment.asc_putOnlyOfficeTime(this.ooDateToString(new Date()));
|
comment.asc_putOnlyOfficeTime(this.ooDateToString(new Date()));
|
||||||
comment.asc_putUserId(this.currentUserId);
|
comment.asc_putUserId(this.currentUserId);
|
||||||
comment.asc_putUserName(Common.Utils.UserInfoParser.getCurrentName());
|
comment.asc_putUserName(AscCommon.UserInfoParser.getCurrentName());
|
||||||
comment.asc_putSolved(false);
|
comment.asc_putSolved(false);
|
||||||
|
|
||||||
if (!_.isUndefined(comment.asc_putDocumentFlag)) {
|
if (!_.isUndefined(comment.asc_putDocumentFlag)) {
|
||||||
|
@ -354,7 +354,7 @@ define([
|
||||||
ascComment.asc_putTime(t.utcDateToString(new Date(comment.get('time'))));
|
ascComment.asc_putTime(t.utcDateToString(new Date(comment.get('time'))));
|
||||||
ascComment.asc_putOnlyOfficeTime(t.ooDateToString(new Date(comment.get('time'))));
|
ascComment.asc_putOnlyOfficeTime(t.ooDateToString(new Date(comment.get('time'))));
|
||||||
ascComment.asc_putUserId(t.currentUserId);
|
ascComment.asc_putUserId(t.currentUserId);
|
||||||
ascComment.asc_putUserName(Common.Utils.UserInfoParser.getCurrentName());
|
ascComment.asc_putUserName(AscCommon.UserInfoParser.getCurrentName());
|
||||||
ascComment.asc_putSolved(comment.get('resolved'));
|
ascComment.asc_putSolved(comment.get('resolved'));
|
||||||
ascComment.asc_putGuid(comment.get('guid'));
|
ascComment.asc_putGuid(comment.get('guid'));
|
||||||
ascComment.asc_putUserData(comment.get('userdata'));
|
ascComment.asc_putUserData(comment.get('userdata'));
|
||||||
|
@ -431,7 +431,7 @@ define([
|
||||||
if (reply.get('id') === replyId && !_.isUndefined(replyVal)) {
|
if (reply.get('id') === replyId && !_.isUndefined(replyVal)) {
|
||||||
addReply.asc_putText(replyVal);
|
addReply.asc_putText(replyVal);
|
||||||
addReply.asc_putUserId(me.currentUserId);
|
addReply.asc_putUserId(me.currentUserId);
|
||||||
addReply.asc_putUserName(Common.Utils.UserInfoParser.getCurrentName());
|
addReply.asc_putUserName(AscCommon.UserInfoParser.getCurrentName());
|
||||||
} else {
|
} else {
|
||||||
addReply.asc_putText(reply.get('reply'));
|
addReply.asc_putText(reply.get('reply'));
|
||||||
addReply.asc_putUserId(reply.get('userid'));
|
addReply.asc_putUserId(reply.get('userid'));
|
||||||
|
@ -511,7 +511,7 @@ define([
|
||||||
addReply.asc_putTime(me.utcDateToString(new Date()));
|
addReply.asc_putTime(me.utcDateToString(new Date()));
|
||||||
addReply.asc_putOnlyOfficeTime(me.ooDateToString(new Date()));
|
addReply.asc_putOnlyOfficeTime(me.ooDateToString(new Date()));
|
||||||
addReply.asc_putUserId(me.currentUserId);
|
addReply.asc_putUserId(me.currentUserId);
|
||||||
addReply.asc_putUserName(Common.Utils.UserInfoParser.getCurrentName());
|
addReply.asc_putUserName(AscCommon.UserInfoParser.getCurrentName());
|
||||||
|
|
||||||
ascComment.asc_addReply(addReply);
|
ascComment.asc_addReply(addReply);
|
||||||
|
|
||||||
|
@ -776,8 +776,9 @@ define([
|
||||||
comment.set('userdata', data.asc_getUserData());
|
comment.set('userdata', data.asc_getUserData());
|
||||||
comment.set('time', date.getTime());
|
comment.set('time', date.getTime());
|
||||||
comment.set('date', t.dateToLocaleTimeString(date));
|
comment.set('date', t.dateToLocaleTimeString(date));
|
||||||
comment.set('editable', t.mode.canEditComments || (data.asc_getUserId() == t.currentUserId));
|
comment.set('editable', (t.mode.canEditComments || (data.asc_getUserId() == t.currentUserId)) && AscCommon.UserInfoParser.canEditComment(data.asc_getUserName()));
|
||||||
comment.set('removable', t.mode.canDeleteComments || (data.asc_getUserId() == t.currentUserId));
|
comment.set('removable', (t.mode.canDeleteComments || (data.asc_getUserId() == t.currentUserId)) && AscCommon.UserInfoParser.canDeleteComment(data.asc_getUserName()));
|
||||||
|
comment.set('hide', !AscCommon.UserInfoParser.canViewComment(data.asc_getUserName()));
|
||||||
|
|
||||||
replies = _.clone(comment.get('replys'));
|
replies = _.clone(comment.get('replys'));
|
||||||
|
|
||||||
|
@ -803,13 +804,18 @@ define([
|
||||||
editTextInPopover : false,
|
editTextInPopover : false,
|
||||||
showReplyInPopover : false,
|
showReplyInPopover : false,
|
||||||
scope : t.view,
|
scope : t.view,
|
||||||
editable : t.mode.canEditComments || (data.asc_getReply(i).asc_getUserId() == t.currentUserId),
|
editable : (t.mode.canEditComments || (data.asc_getReply(i).asc_getUserId() == t.currentUserId)) && AscCommon.UserInfoParser.canEditComment(data.asc_getReply(i).asc_getUserName()),
|
||||||
removable : t.mode.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == t.currentUserId)
|
removable : (t.mode.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == t.currentUserId)) && AscCommon.UserInfoParser.canDeleteComment(data.asc_getReply(i).asc_getUserName()),
|
||||||
|
hide : !AscCommon.UserInfoParser.canViewComment(data.asc_getReply(i).asc_getUserName())
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
comment.set('replys', replies);
|
comment.set('replys', replies);
|
||||||
|
|
||||||
|
if (!this.popoverComments.findWhere({hide: false})) {
|
||||||
|
this.getPopover() && this.getPopover().hideComments();
|
||||||
|
}
|
||||||
|
|
||||||
if (!silentUpdate) {
|
if (!silentUpdate) {
|
||||||
this.updateComments(false, true);
|
this.updateComments(false, true);
|
||||||
|
|
||||||
|
@ -924,12 +930,15 @@ define([
|
||||||
});
|
});
|
||||||
this.popoverComments.reset(comments);
|
this.popoverComments.reset(comments);
|
||||||
|
|
||||||
|
if (this.popoverComments.findWhere({hide: false})) {
|
||||||
if (popover.isVisible()) {
|
if (popover.isVisible()) {
|
||||||
popover.hide();
|
popover.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
popover.setLeftTop(posX, posY, leftX);
|
popover.setLeftTop(posX, posY, leftX);
|
||||||
popover.showComments(animate, false, true, text);
|
popover.showComments(animate, false, true, text);
|
||||||
|
} else
|
||||||
|
popover.hideComments();
|
||||||
}
|
}
|
||||||
this.isModeChanged = false;
|
this.isModeChanged = false;
|
||||||
},
|
},
|
||||||
|
@ -1007,9 +1016,12 @@ define([
|
||||||
});
|
});
|
||||||
this.popoverComments.reset(comments);
|
this.popoverComments.reset(comments);
|
||||||
|
|
||||||
|
if (this.popoverComments.findWhere({hide: false})) {
|
||||||
useAnimation = true;
|
useAnimation = true;
|
||||||
this.getPopover().showComments(useAnimation, undefined, undefined, text);
|
this.getPopover().showComments(useAnimation, undefined, undefined, text);
|
||||||
} else if (!this.getPopover().isVisible()) {
|
} else
|
||||||
|
this.getPopover().hideComments();
|
||||||
|
} else if (!this.getPopover().isVisible() && this.popoverComments.findWhere({hide: false})) {
|
||||||
this.getPopover().showComments(false, undefined, undefined, text);
|
this.getPopover().showComments(false, undefined, undefined, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1243,8 +1255,9 @@ define([
|
||||||
showReplyInPopover : false,
|
showReplyInPopover : false,
|
||||||
hideAddReply : !_.isUndefined(this.hidereply) ? this.hidereply : (this.showPopover ? true : false),
|
hideAddReply : !_.isUndefined(this.hidereply) ? this.hidereply : (this.showPopover ? true : false),
|
||||||
scope : this.view,
|
scope : this.view,
|
||||||
editable : this.mode.canEditComments || (data.asc_getUserId() == this.currentUserId),
|
editable : (this.mode.canEditComments || (data.asc_getUserId() == this.currentUserId)) && AscCommon.UserInfoParser.canEditComment(data.asc_getUserName()),
|
||||||
removable : this.mode.canDeleteComments || (data.asc_getUserId() == this.currentUserId),
|
removable : (this.mode.canDeleteComments || (data.asc_getUserId() == this.currentUserId)) && AscCommon.UserInfoParser.canDeleteComment(data.asc_getUserName()),
|
||||||
|
hide : !AscCommon.UserInfoParser.canViewComment(data.asc_getUserName()),
|
||||||
hint : !this.mode.canComments,
|
hint : !this.mode.canComments,
|
||||||
groupName : (groupname && groupname.length>1) ? groupname[1] : null
|
groupName : (groupname && groupname.length>1) ? groupname[1] : null
|
||||||
});
|
});
|
||||||
|
@ -1281,8 +1294,9 @@ define([
|
||||||
editTextInPopover : false,
|
editTextInPopover : false,
|
||||||
showReplyInPopover : false,
|
showReplyInPopover : false,
|
||||||
scope : this.view,
|
scope : this.view,
|
||||||
editable : this.mode.canEditComments || (data.asc_getReply(i).asc_getUserId() == this.currentUserId),
|
editable : (this.mode.canEditComments || (data.asc_getReply(i).asc_getUserId() == this.currentUserId)) && AscCommon.UserInfoParser.canEditComment(data.asc_getReply(i).asc_getUserName()),
|
||||||
removable : this.mode.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == this.currentUserId)
|
removable : (this.mode.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == this.currentUserId)) && AscCommon.UserInfoParser.canDeleteComment(data.asc_getReply(i).asc_getUserName()),
|
||||||
|
hide : !AscCommon.UserInfoParser.canViewComment(data.asc_getReply(i).asc_getUserName())
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1312,7 +1326,7 @@ define([
|
||||||
time: date.getTime(),
|
time: date.getTime(),
|
||||||
date: this.dateToLocaleTimeString(date),
|
date: this.dateToLocaleTimeString(date),
|
||||||
userid: this.currentUserId,
|
userid: this.currentUserId,
|
||||||
username: Common.Utils.UserInfoParser.getCurrentName(),
|
username: AscCommon.UserInfoParser.getCurrentName(),
|
||||||
usercolor: (user) ? user.get('color') : null,
|
usercolor: (user) ? user.get('color') : null,
|
||||||
editTextInPopover: true,
|
editTextInPopover: true,
|
||||||
showReplyInPopover: false,
|
showReplyInPopover: false,
|
||||||
|
@ -1376,7 +1390,7 @@ define([
|
||||||
comment.asc_putTime(this.utcDateToString(new Date()));
|
comment.asc_putTime(this.utcDateToString(new Date()));
|
||||||
comment.asc_putOnlyOfficeTime(this.ooDateToString(new Date()));
|
comment.asc_putOnlyOfficeTime(this.ooDateToString(new Date()));
|
||||||
comment.asc_putUserId(this.currentUserId);
|
comment.asc_putUserId(this.currentUserId);
|
||||||
comment.asc_putUserName(Common.Utils.UserInfoParser.getCurrentName());
|
comment.asc_putUserName(AscCommon.UserInfoParser.getCurrentName());
|
||||||
comment.asc_putSolved(false);
|
comment.asc_putSolved(false);
|
||||||
|
|
||||||
if (!_.isUndefined(comment.asc_putDocumentFlag))
|
if (!_.isUndefined(comment.asc_putDocumentFlag))
|
||||||
|
@ -1443,13 +1457,13 @@ define([
|
||||||
for (i = 0; i < comments.length; ++i) {
|
for (i = 0; i < comments.length; ++i) {
|
||||||
comment = this.findComment(comments[i].asc_getId());
|
comment = this.findComment(comments[i].asc_getId());
|
||||||
if (comment) {
|
if (comment) {
|
||||||
comment.set('editTextInPopover', t.mode.canEditComments);// dont't edit comment when customization->commentAuthorOnly is true or when permissions.editCommentAuthorOnly is true
|
comment.set('editTextInPopover', t.mode.canEditComments && AscCommon.UserInfoParser.canEditComment(comment.username));// dont't edit comment when customization->commentAuthorOnly is true or when permissions.editCommentAuthorOnly is true
|
||||||
comment.set('hint', false);
|
comment.set('hint', false);
|
||||||
this.popoverComments.push(comment);
|
this.popoverComments.push(comment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.getPopover() && this.popoverComments.length>0) {
|
if (this.getPopover() && this.popoverComments.length>0 && this.popoverComments.findWhere({hide: false})) {
|
||||||
if (this.getPopover().isVisible()) {
|
if (this.getPopover().isVisible()) {
|
||||||
this.getPopover().hide();
|
this.getPopover().hide();
|
||||||
}
|
}
|
||||||
|
|
|
@ -464,7 +464,7 @@ define([
|
||||||
scope : me.view,
|
scope : me.view,
|
||||||
hint : !me.appConfig.canReview,
|
hint : !me.appConfig.canReview,
|
||||||
goto : (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom),
|
goto : (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom),
|
||||||
editable : me.appConfig.isReviewOnly && (item.get_UserId() == me.currentUserId) || !me.appConfig.isReviewOnly && (!me.appConfig.canUseReviewPermissions || me.checkUserGroups(item.get_UserName()))
|
editable : me.appConfig.isReviewOnly && (item.get_UserId() == me.currentUserId) || !me.appConfig.isReviewOnly && (!me.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()))
|
||||||
});
|
});
|
||||||
|
|
||||||
arr.push(change);
|
arr.push(change);
|
||||||
|
@ -472,15 +472,10 @@ define([
|
||||||
return arr;
|
return arr;
|
||||||
},
|
},
|
||||||
|
|
||||||
checkUserGroups: function(username) {
|
|
||||||
var groups = Common.Utils.UserInfoParser.getParsedGroups(username);
|
|
||||||
return Common.Utils.UserInfoParser.getCurrentGroups() && groups && (_.intersection(Common.Utils.UserInfoParser.getCurrentGroups(), (groups.length>0) ? groups : [""]).length>0);
|
|
||||||
},
|
|
||||||
|
|
||||||
getUserName: function(id){
|
getUserName: function(id){
|
||||||
if (this.userCollection && id!==null){
|
if (this.userCollection && id!==null){
|
||||||
var rec = this.userCollection.findUser(id);
|
var rec = this.userCollection.findUser(id);
|
||||||
if (rec) return Common.Utils.UserInfoParser.getParsedName(rec.get('username'));
|
if (rec) return AscCommon.UserInfoParser.getParsedName(rec.get('username'));
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
},
|
},
|
||||||
|
@ -581,7 +576,7 @@ define([
|
||||||
this.view.turnChanges(state, global);
|
this.view.turnChanges(state, global);
|
||||||
if (userId && this.userCollection) {
|
if (userId && this.userCollection) {
|
||||||
var rec = this.userCollection.findOriginalUser(userId);
|
var rec = this.userCollection.findOriginalUser(userId);
|
||||||
rec && this.showTips(Common.Utils.String.format(globalFlag ? this.textOnGlobal : this.textOffGlobal, Common.Utils.UserInfoParser.getParsedName(rec.get('username'))));
|
rec && this.showTips(Common.Utils.String.format(globalFlag ? this.textOnGlobal : this.textOffGlobal, AscCommon.UserInfoParser.getParsedName(rec.get('username'))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -98,7 +98,8 @@ define([
|
||||||
editTextInPopover : false,
|
editTextInPopover : false,
|
||||||
scope : null,
|
scope : null,
|
||||||
editable : true,
|
editable : true,
|
||||||
removable : true
|
removable : true,
|
||||||
|
hide : false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -22,9 +22,13 @@
|
||||||
|
|
||||||
<!-- replys elements -->
|
<!-- replys elements -->
|
||||||
|
|
||||||
|
<% var add_arrow = true; %>
|
||||||
<% if (replys.length) { %>
|
<% if (replys.length) { %>
|
||||||
<div class="reply-arrow img-commonctrl"></div>
|
|
||||||
<% _.each(replys, function (item, index) { %>
|
<% _.each(replys, function (item, index) { %>
|
||||||
|
<% if (!item.get("hide")) { %>
|
||||||
|
<% if (add_arrow) { add_arrow = false; %>
|
||||||
|
<div class="reply-arrow img-commonctrl"></div>
|
||||||
|
<% } %>
|
||||||
<div class="reply-item-ct" <% if (scope.viewmode && index==replys.length-1) { %>style="padding-bottom: 0;" <% } %>;>
|
<div class="reply-item-ct" <% if (scope.viewmode && index==replys.length-1) { %>style="padding-bottom: 0;" <% } %>;>
|
||||||
<div class="user-name">
|
<div class="user-name">
|
||||||
<div class="color" style="display: inline-block; background-color: <% if (item.get("usercolor")!==null) { %><%=item.get("usercolor")%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(item.get("username")) %>
|
<div class="color" style="display: inline-block; background-color: <% if (item.get("usercolor")!==null) { %><%=item.get("usercolor")%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(item.get("username")) %>
|
||||||
|
@ -50,13 +54,14 @@
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
|
<% } %>
|
||||||
<% }); %>
|
<% }); %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<!-- add reply button -->
|
<!-- add reply button -->
|
||||||
|
|
||||||
<% if (!showReply && !scope.viewmode) { %>
|
<% if (!showReply && !scope.viewmode) { %>
|
||||||
<% if (replys.length) { %>
|
<% if (replys.length && !add_arrow) { %>
|
||||||
<label class="user-reply" style="margin-left: 20px; margin-top: 5px;" role="presentation" tabindex="-1">textAddReply</label>
|
<label class="user-reply" style="margin-left: 20px; margin-top: 5px;" role="presentation" tabindex="-1">textAddReply</label>
|
||||||
<% } else { %>
|
<% } else { %>
|
||||||
<label class="user-reply" role="presentation" tabindex="-1">textAddReply</label>
|
<label class="user-reply" role="presentation" tabindex="-1">textAddReply</label>
|
||||||
|
@ -73,7 +78,9 @@
|
||||||
<% if (removable) { %>
|
<% if (removable) { %>
|
||||||
<div class="btn-delete img-commonctrl"></div>
|
<div class="btn-delete img-commonctrl"></div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
<% if (editable) { %>
|
||||||
<div class="btn-resolve <% if (resolved) print('comment-resolved') %>" data-toggle="tooltip"></div>
|
<div class="btn-resolve <% if (resolved) print('comment-resolved') %>" data-toggle="tooltip"></div>
|
||||||
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
<% if (!hide) { %>
|
||||||
<div id="<%=id%>" class="user-comment-item">
|
<div id="<%=id%>" class="user-comment-item">
|
||||||
|
|
||||||
<!-- comment block -->
|
<!-- comment block -->
|
||||||
|
@ -22,9 +23,13 @@
|
||||||
|
|
||||||
<!-- replys elements -->
|
<!-- replys elements -->
|
||||||
|
|
||||||
|
<% var add_arrow = true; %>
|
||||||
<% if (replys.length) { %>
|
<% if (replys.length) { %>
|
||||||
<div class="reply-arrow img-commonctrl"></div>
|
|
||||||
<% _.each(replys, function (item) { %>
|
<% _.each(replys, function (item) { %>
|
||||||
|
<% if (!item.get("hide")) { %>
|
||||||
|
<% if (add_arrow) { add_arrow = false; %>
|
||||||
|
<div class="reply-arrow img-commonctrl"></div>
|
||||||
|
<% } %>
|
||||||
<div class="reply-item-ct">
|
<div class="reply-item-ct">
|
||||||
<div class="user-name">
|
<div class="user-name">
|
||||||
<div class="color" style="display: inline-block; background-color: <% if (item.get("usercolor")!==null) { %><%=item.get("usercolor")%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(item.get("username")) %>
|
<div class="color" style="display: inline-block; background-color: <% if (item.get("usercolor")!==null) { %><%=item.get("usercolor")%><% } else { %> #cfcfcf <% } %>; " ></div><%= scope.getUserName(item.get("username")) %>
|
||||||
|
@ -50,14 +55,14 @@
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
|
<% } %>
|
||||||
<% }); %>
|
<% }); %>
|
||||||
|
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<!-- add reply button -->
|
<!-- add reply button -->
|
||||||
|
|
||||||
<% if (!showReplyInPopover && !hideAddReply && !hint) { %>
|
<% if (!showReplyInPopover && !hideAddReply && !hint) { %>
|
||||||
<% if (replys.length) { %>
|
<% if (replys.length && !add_arrow) { %>
|
||||||
<label class="user-reply" style="margin-left: 20px; margin-top: 5px;" role="presentation" tabindex="-1">textAddReply</label>
|
<label class="user-reply" style="margin-left: 20px; margin-top: 5px;" role="presentation" tabindex="-1">textAddReply</label>
|
||||||
<% } else { %>
|
<% } else { %>
|
||||||
<label class="user-reply" role="presentation" tabindex="-1">textAddReply</label>
|
<label class="user-reply" role="presentation" tabindex="-1">textAddReply</label>
|
||||||
|
@ -74,7 +79,9 @@
|
||||||
<% if (removable) { %>
|
<% if (removable) { %>
|
||||||
<div class="btn-delete img-commonctrl"></div>
|
<div class="btn-delete img-commonctrl"></div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
<% if (editable) { %>
|
||||||
<div class="btn-resolve <% if (resolved) print('comment-resolved') %>" data-toggle="tooltip"></div>
|
<div class="btn-resolve <% if (resolved) print('comment-resolved') %>" data-toggle="tooltip"></div>
|
||||||
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
|
@ -96,3 +103,4 @@
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<% } %>
|
|
@ -724,7 +724,7 @@ Common.Utils.fillUserInfo = function(info, lang, defname) {
|
||||||
var _user = info || {};
|
var _user = info || {};
|
||||||
!_user.id && (_user.id = ('uid-' + Date.now()));
|
!_user.id && (_user.id = ('uid-' + Date.now()));
|
||||||
_user.fullname = _.isEmpty(_user.name) ? defname : _user.name;
|
_user.fullname = _.isEmpty(_user.name) ? defname : _user.name;
|
||||||
_user.group && (_user.fullname = (_user.group).toString() + Common.Utils.UserInfoParser.getSeparator() + _user.fullname);
|
_user.group && (_user.fullname = (_user.group).toString() + AscCommon.UserInfoParser.getSeparator() + _user.fullname);
|
||||||
_user.guest = _.isEmpty(_user.name);
|
_user.guest = _.isEmpty(_user.name);
|
||||||
return _user;
|
return _user;
|
||||||
};
|
};
|
||||||
|
@ -982,64 +982,108 @@ Common.Utils.UserInfoParser = new(function() {
|
||||||
var parse = false,
|
var parse = false,
|
||||||
separator = String.fromCharCode(160),
|
separator = String.fromCharCode(160),
|
||||||
username = '',
|
username = '',
|
||||||
usergroups,
|
_reviewPermissions,
|
||||||
reviewPermissions,
|
reviewGroups,
|
||||||
reviewGroups;
|
commentGroups;
|
||||||
|
|
||||||
|
var _intersection = function (arr1, arr2) {
|
||||||
|
if (arr1 && arr2) {
|
||||||
|
for (var i=0; i<arr2.length; i++) {
|
||||||
|
if (arr1.indexOf(arr2[i])>-1)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
var _getParsedGroups = function(username) {
|
||||||
|
if (parse && username) {
|
||||||
|
var idx = username.indexOf(separator),
|
||||||
|
groups = (idx>-1) ? username.substring(0, idx).split(',') : [];
|
||||||
|
for (var i=0; i<groups.length; i++)
|
||||||
|
groups[i] = groups[i].trim();
|
||||||
|
return groups;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
setParser: function(value) {
|
setParser: function(value) {
|
||||||
parse = !!value;
|
parse = !!value;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setCurrentName: function(name) {
|
||||||
|
username = name;
|
||||||
|
_reviewPermissions && this.setReviewPermissions(null, _reviewPermissions); // old version of review permissions
|
||||||
|
},
|
||||||
|
|
||||||
|
getCurrentName: function() {
|
||||||
|
return username;
|
||||||
|
},
|
||||||
|
|
||||||
getSeparator: function() {
|
getSeparator: function() {
|
||||||
return separator;
|
return separator;
|
||||||
},
|
},
|
||||||
|
|
||||||
getParsedName: function(username) {
|
getParsedName: function(username) {
|
||||||
if (parse && username) {
|
return (parse && username) ? username.substring(username.indexOf(separator)+1) : username;
|
||||||
return username.substring(username.indexOf(separator)+1);
|
|
||||||
} else
|
|
||||||
return username;
|
|
||||||
},
|
|
||||||
|
|
||||||
getParsedGroups: function(username) {
|
|
||||||
if (parse && username) {
|
|
||||||
var idx = username.indexOf(separator),
|
|
||||||
groups = (idx>-1) ? username.substring(0, idx).split(',') : [];
|
|
||||||
for (var i=0; i<groups.length; i++)
|
|
||||||
groups[i] = groups[i].trim();
|
|
||||||
return groups;
|
|
||||||
} else
|
|
||||||
return undefined;
|
|
||||||
},
|
|
||||||
|
|
||||||
setCurrentName: function(name) {
|
|
||||||
username = name;
|
|
||||||
this.setReviewPermissions(reviewGroups, reviewPermissions);
|
|
||||||
},
|
|
||||||
|
|
||||||
getCurrentName: function() {
|
|
||||||
return username;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
setReviewPermissions: function(groups, permissions) {
|
setReviewPermissions: function(groups, permissions) {
|
||||||
if (groups) {
|
if (groups) {
|
||||||
if (typeof groups == 'object' && groups.length>0)
|
if (typeof groups == 'object' && groups.length>0)
|
||||||
usergroups = groups;
|
|
||||||
reviewGroups = groups;
|
reviewGroups = groups;
|
||||||
} else if (permissions) {
|
} else if (permissions) { // old version of review permissions
|
||||||
var arr = [],
|
var arr = [],
|
||||||
arrgroups = this.getParsedGroups(username);
|
arrgroups = _getParsedGroups(username);
|
||||||
arrgroups && arrgroups.forEach(function(group) {
|
arrgroups && arrgroups.forEach(function(group) {
|
||||||
var item = permissions[group.trim()];
|
var item = permissions[group.trim()];
|
||||||
item && (arr = arr.concat(item));
|
item && (arr = arr.concat(item));
|
||||||
});
|
});
|
||||||
usergroups = arr;
|
reviewGroups = arr;
|
||||||
reviewPermissions = permissions;
|
_reviewPermissions = permissions;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getCurrentGroups: function() {
|
setCommentPermissions: function(groups) {
|
||||||
return usergroups;
|
if (groups && typeof groups == 'object') {
|
||||||
|
commentGroups = {
|
||||||
|
view: (typeof groups.view == 'object' && groups.view.length>0) ? groups.view : null,
|
||||||
|
edit: (typeof groups.edit == 'object' && groups.edit.length>0) ? groups.edit : null,
|
||||||
|
remove: (typeof groups.remove == 'object' && groups.remove.length>0) ? groups.remove : null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
canEditReview: function(username) {
|
||||||
|
if (!parse || !reviewGroups) return true;
|
||||||
|
|
||||||
|
var groups = _getParsedGroups(username);
|
||||||
|
groups && (groups.length==0) && (groups = [""]);
|
||||||
|
return _intersection(reviewGroups, groups);
|
||||||
|
},
|
||||||
|
|
||||||
|
canViewComment: function(username) {
|
||||||
|
if (!parse || !commentGroups || !commentGroups.view) return true;
|
||||||
|
|
||||||
|
var groups = _getParsedGroups(username);
|
||||||
|
groups && (groups.length==0) && (groups = [""]);
|
||||||
|
return _intersection(commentGroups.view, groups);
|
||||||
|
},
|
||||||
|
|
||||||
|
canEditComment: function(username) {
|
||||||
|
if (!parse || !commentGroups || !commentGroups.edit) return true;
|
||||||
|
|
||||||
|
var groups = _getParsedGroups(username);
|
||||||
|
groups && (groups.length==0) && (groups = [""]);
|
||||||
|
return _intersection(commentGroups.edit, groups);
|
||||||
|
},
|
||||||
|
|
||||||
|
canDeleteComment: function(username) {
|
||||||
|
if (!parse || !commentGroups || !commentGroups.remove) return true;
|
||||||
|
|
||||||
|
var groups = _getParsedGroups(username);
|
||||||
|
groups && (groups.length==0) && (groups = [""]);
|
||||||
|
return _intersection(commentGroups.remove, groups);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})();
|
})();
|
|
@ -267,7 +267,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserName: function (username) {
|
getUserName: function (username) {
|
||||||
return Common.Utils.String.htmlEncode(Common.Utils.UserInfoParser.getParsedName(username));
|
return Common.Utils.String.htmlEncode(AscCommon.UserInfoParser.getParsedName(username));
|
||||||
},
|
},
|
||||||
|
|
||||||
hide: function () {
|
hide: function () {
|
||||||
|
|
|
@ -664,7 +664,7 @@ define([
|
||||||
return Common.Utils.String.ellipsis(Common.Utils.String.htmlEncode(quote), 120, true);
|
return Common.Utils.String.ellipsis(Common.Utils.String.htmlEncode(quote), 120, true);
|
||||||
},
|
},
|
||||||
getUserName: function (username) {
|
getUserName: function (username) {
|
||||||
return Common.Utils.String.htmlEncode(Common.Utils.UserInfoParser.getParsedName(username));
|
return Common.Utils.String.htmlEncode(AscCommon.UserInfoParser.getParsedName(username));
|
||||||
},
|
},
|
||||||
|
|
||||||
pickLink: function (message) {
|
pickLink: function (message) {
|
||||||
|
|
|
@ -136,7 +136,7 @@ define([
|
||||||
users: collection.chain().filter(function(item){return item.get('online') && !item.get('view')}).groupBy(function(item) {return item.get('idOriginal');}).value(),
|
users: collection.chain().filter(function(item){return item.get('online') && !item.get('view')}).groupBy(function(item) {return item.get('idOriginal');}).value(),
|
||||||
usertpl: _.template(templateUserItem),
|
usertpl: _.template(templateUserItem),
|
||||||
fnEncode: function(username) {
|
fnEncode: function(username) {
|
||||||
return Common.Utils.String.htmlEncode(Common.Utils.UserInfoParser.getParsedName(username));
|
return Common.Utils.String.htmlEncode(AscCommon.UserInfoParser.getParsedName(username));
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ define([
|
||||||
'<% } %>',
|
'<% } %>',
|
||||||
'<div class="user-name">',
|
'<div class="user-name">',
|
||||||
'<div class="color" style="display: inline-block; background-color:' + '<%=usercolor%>;' + '" >',
|
'<div class="color" style="display: inline-block; background-color:' + '<%=usercolor%>;' + '" >',
|
||||||
'</div><%= Common.Utils.String.htmlEncode(Common.Utils.UserInfoParser.getParsedName(username)) %>',
|
'</div><%= Common.Utils.String.htmlEncode(AscCommon.UserInfoParser.getParsedName(username)) %>',
|
||||||
'</div>',
|
'</div>',
|
||||||
'<% if (canRestore && selected) { %>',
|
'<% if (canRestore && selected) { %>',
|
||||||
'<label class="revision-restore" role="presentation" tabindex="-1">' + this.textRestore + '</label>',
|
'<label class="revision-restore" role="presentation" tabindex="-1">' + this.textRestore + '</label>',
|
||||||
|
|
|
@ -670,7 +670,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserName: function (username) {
|
getUserName: function (username) {
|
||||||
return Common.Utils.String.htmlEncode(Common.Utils.UserInfoParser.getParsedName(username));
|
return Common.Utils.String.htmlEncode(AscCommon.UserInfoParser.getParsedName(username));
|
||||||
},
|
},
|
||||||
|
|
||||||
turnChanges: function(state, global) {
|
turnChanges: function(state, global) {
|
||||||
|
|
|
@ -114,6 +114,7 @@ define([
|
||||||
if (editor === 'DE') {
|
if (editor === 'DE') {
|
||||||
_fileKey = mode.fileKey;
|
_fileKey = mode.fileKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -254,7 +255,7 @@ define([
|
||||||
var me = this;
|
var me = this;
|
||||||
var usersArray = [];
|
var usersArray = [];
|
||||||
_.each(editUsers, function(item){
|
_.each(editUsers, function(item){
|
||||||
var name = Common.Utils.UserInfoParser.getParsedName(item.asc_getUserName());
|
var name = AscCommon.UserInfoParser.getParsedName(item.asc_getUserName());
|
||||||
var initials = me.getInitials(name);
|
var initials = me.getInitials(name);
|
||||||
if((item.asc_getState()!==false) && !item.asc_getView()) {
|
if((item.asc_getState()!==false) && !item.asc_getView()) {
|
||||||
var userAttr = {
|
var userAttr = {
|
||||||
|
@ -698,7 +699,7 @@ define([
|
||||||
userColor = item.get_UserColor(),
|
userColor = item.get_UserColor(),
|
||||||
goto = (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom);
|
goto = (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom);
|
||||||
date = me.dateToLocaleTimeString(date);
|
date = me.dateToLocaleTimeString(date);
|
||||||
var editable = me.appConfig.isReviewOnly && (item.get_UserId() == _userId) || !me.appConfig.isReviewOnly && (!me.appConfig.canUseReviewPermissions || me.checkUserGroups(item.get_UserName()));
|
var editable = me.appConfig.isReviewOnly && (item.get_UserId() == _userId) || !me.appConfig.isReviewOnly && (!me.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()));
|
||||||
arr.push({date: date, user: user, usercolor: userColor, changetext: changetext, goto: goto, editable: editable});
|
arr.push({date: date, user: user, usercolor: userColor, changetext: changetext, goto: goto, editable: editable});
|
||||||
});
|
});
|
||||||
arrChangeReview = arr;
|
arrChangeReview = arr;
|
||||||
|
@ -710,11 +711,6 @@ define([
|
||||||
this.updateInfoChange();
|
this.updateInfoChange();
|
||||||
},
|
},
|
||||||
|
|
||||||
checkUserGroups: function(username) {
|
|
||||||
var groups = Common.Utils.UserInfoParser.getParsedGroups(username);
|
|
||||||
return Common.Utils.UserInfoParser.getCurrentGroups() && groups && (_.intersection(Common.Utils.UserInfoParser.getCurrentGroups(), (groups.length>0) ? groups : [""]).length>0);
|
|
||||||
},
|
|
||||||
|
|
||||||
dateToLocaleTimeString: function (date) {
|
dateToLocaleTimeString: function (date) {
|
||||||
function format(date) {
|
function format(date) {
|
||||||
var strTime,
|
var strTime,
|
||||||
|
@ -774,7 +770,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitials: function(name) {
|
getInitials: function(name) {
|
||||||
var fio = Common.Utils.UserInfoParser.getParsedName(name).split(' ');
|
var fio = AscCommon.UserInfoParser.getParsedName(name).split(' ');
|
||||||
var initials = fio[0].substring(0, 1).toUpperCase();
|
var initials = fio[0].substring(0, 1).toUpperCase();
|
||||||
for (var i=fio.length-1; i>0; i--) {
|
for (var i=fio.length-1; i>0; i--) {
|
||||||
if (fio[i][0]!=='(' && fio[i][0]!==')') {
|
if (fio[i][0]!=='(' && fio[i][0]!==')') {
|
||||||
|
@ -795,6 +791,16 @@ define([
|
||||||
return comment;
|
return comment;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
findVisibleComment: function(uid) {
|
||||||
|
var comment;
|
||||||
|
if (this.groupCollectionFilter.length !== 0) {
|
||||||
|
comment = this.findVisibleCommentInGroup(uid);
|
||||||
|
} else if (this.collectionComments.length !== 0) {
|
||||||
|
comment = _.findWhere(this.collectionComments, {uid: uid, hide: false});
|
||||||
|
}
|
||||||
|
return comment;
|
||||||
|
},
|
||||||
|
|
||||||
apiShowComments: function(uid) {
|
apiShowComments: function(uid) {
|
||||||
var comments,
|
var comments,
|
||||||
me = this;
|
me = this;
|
||||||
|
@ -992,12 +998,15 @@ define([
|
||||||
|
|
||||||
onViewPrevComment: function() {
|
onViewPrevComment: function() {
|
||||||
if (this.showComments && this.showComments.length > 0) {
|
if (this.showComments && this.showComments.length > 0) {
|
||||||
|
for (var i=0; i<this.showComments.length; i++) {
|
||||||
if (this.indexCurrentComment - 1 < 0) {
|
if (this.indexCurrentComment - 1 < 0) {
|
||||||
this.indexCurrentComment = this.showComments.length - 1;
|
this.indexCurrentComment = this.showComments.length - 1;
|
||||||
} else {
|
} else {
|
||||||
this.indexCurrentComment -= 1;
|
this.indexCurrentComment -= 1;
|
||||||
}
|
}
|
||||||
this.view.renderViewComments(this.showComments, this.indexCurrentComment);
|
if (this.view.renderViewComments(this.showComments, this.indexCurrentComment))
|
||||||
|
break;
|
||||||
|
}
|
||||||
var me = this;
|
var me = this;
|
||||||
_.defer(function () {
|
_.defer(function () {
|
||||||
$('.comment-menu').single('click', _.buffered(me.initMenuComments, 100, me));
|
$('.comment-menu').single('click', _.buffered(me.initMenuComments, 100, me));
|
||||||
|
@ -1009,12 +1018,15 @@ define([
|
||||||
|
|
||||||
onViewNextComment: function() {
|
onViewNextComment: function() {
|
||||||
if (this.showComments && this.showComments.length > 0) {
|
if (this.showComments && this.showComments.length > 0) {
|
||||||
|
for (var i=0; i<this.showComments.length; i++) {
|
||||||
if (this.indexCurrentComment + 1 === this.showComments.length) {
|
if (this.indexCurrentComment + 1 === this.showComments.length) {
|
||||||
this.indexCurrentComment = 0;
|
this.indexCurrentComment = 0;
|
||||||
} else {
|
} else {
|
||||||
this.indexCurrentComment += 1;
|
this.indexCurrentComment += 1;
|
||||||
}
|
}
|
||||||
this.view.renderViewComments(this.showComments, this.indexCurrentComment);
|
if (this.view.renderViewComments(this.showComments, this.indexCurrentComment))
|
||||||
|
break;
|
||||||
|
}
|
||||||
var me = this;
|
var me = this;
|
||||||
_.defer(function () {
|
_.defer(function () {
|
||||||
$('.comment-menu').single('click', _.buffered(me.initMenuComments, 100, me));
|
$('.comment-menu').single('click', _.buffered(me.initMenuComments, 100, me));
|
||||||
|
@ -1135,6 +1147,7 @@ define([
|
||||||
caption: me.textEdit,
|
caption: me.textEdit,
|
||||||
event: 'edit'
|
event: 'edit'
|
||||||
});
|
});
|
||||||
|
if (comment.editable) {
|
||||||
if (!comment.resolved) {
|
if (!comment.resolved) {
|
||||||
_menuItems.push({
|
_menuItems.push({
|
||||||
caption: me.textResolve,
|
caption: me.textResolve,
|
||||||
|
@ -1146,6 +1159,7 @@ define([
|
||||||
event: 'resolve'
|
event: 'resolve'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if ($('.container-collaboration').length > 0) {
|
if ($('.container-collaboration').length > 0) {
|
||||||
_menuItems.push({
|
_menuItems.push({
|
||||||
caption: me.textAddReply,
|
caption: me.textAddReply,
|
||||||
|
@ -1544,8 +1558,9 @@ define([
|
||||||
reply : data.asc_getReply(i).asc_getText(),
|
reply : data.asc_getReply(i).asc_getText(),
|
||||||
time : date.getTime(),
|
time : date.getTime(),
|
||||||
userInitials : this.getInitials(username),
|
userInitials : this.getInitials(username),
|
||||||
editable : this.appConfig.canEditComments || (data.asc_getReply(i).asc_getUserId() == _userId),
|
editable : (this.appConfig.canEditComments || (data.asc_getReply(i).asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canEditComment(username),
|
||||||
removable : this.appConfig.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == _userId)
|
removable : (this.appConfig.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canDeleteComment(username),
|
||||||
|
hide : !AscCommon.UserInfoParser.canViewComment(data.asc_getReply(i).asc_getUserName())
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1574,8 +1589,9 @@ define([
|
||||||
replys : [],
|
replys : [],
|
||||||
groupName : (groupname && groupname.length>1) ? groupname[1] : null,
|
groupName : (groupname && groupname.length>1) ? groupname[1] : null,
|
||||||
userInitials : this.getInitials(username),
|
userInitials : this.getInitials(username),
|
||||||
editable : this.appConfig.canEditComments || (data.asc_getUserId() == _userId),
|
editable : (this.appConfig.canEditComments || (data.asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canEditComment(username),
|
||||||
removable : this.appConfig.canDeleteComments || (data.asc_getUserId() == _userId)
|
removable : (this.appConfig.canDeleteComments || (data.asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canDeleteComment(username),
|
||||||
|
hide : !AscCommon.UserInfoParser.canViewComment(username)
|
||||||
};
|
};
|
||||||
if (comment) {
|
if (comment) {
|
||||||
var replies = this.readSDKReplies(data);
|
var replies = this.readSDKReplies(data);
|
||||||
|
@ -1611,8 +1627,9 @@ define([
|
||||||
comment.quote = data.asc_getQuoteText();
|
comment.quote = data.asc_getQuoteText();
|
||||||
comment.time = date.getTime();
|
comment.time = date.getTime();
|
||||||
comment.date = me.dateToLocaleTimeString(date);
|
comment.date = me.dateToLocaleTimeString(date);
|
||||||
comment.editable = me.appConfig.canEditComments || (data.asc_getUserId() == _userId);
|
comment.editable = (me.appConfig.canEditComments || (data.asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canEditComment(data.asc_getUserName());
|
||||||
comment.removable = me.appConfig.canDeleteComments || (data.asc_getUserId() == _userId);
|
comment.removable = (me.appConfig.canDeleteComments || (data.asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canDeleteComment(data.asc_getUserName());
|
||||||
|
comment.hide = !AscCommon.UserInfoParser.canViewComment(data.asc_getUserName());
|
||||||
|
|
||||||
replies = _.clone(comment.replys);
|
replies = _.clone(comment.replys);
|
||||||
|
|
||||||
|
@ -1637,8 +1654,9 @@ define([
|
||||||
reply : data.asc_getReply(i).asc_getText(),
|
reply : data.asc_getReply(i).asc_getText(),
|
||||||
time : dateReply.getTime(),
|
time : dateReply.getTime(),
|
||||||
userInitials : me.getInitials(username),
|
userInitials : me.getInitials(username),
|
||||||
editable : me.appConfig.canEditComments || (data.asc_getReply(i).asc_getUserId() == _userId),
|
editable : (me.appConfig.canEditComments || (data.asc_getReply(i).asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canEditComment(username),
|
||||||
removable : me.appConfig.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == _userId)
|
removable : (me.appConfig.canDeleteComments || (data.asc_getReply(i).asc_getUserId() == _userId)) && AscCommon.UserInfoParser.canDeleteComment(username),
|
||||||
|
hide : !AscCommon.UserInfoParser.canViewComment(username)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
comment.replys = replies;
|
comment.replys = replies;
|
||||||
|
@ -1710,6 +1728,15 @@ define([
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
findVisibleCommentInGroup: function (id) {
|
||||||
|
for (var name in this.groupCollectionComments) {
|
||||||
|
var store = this.groupCollectionComments[name];
|
||||||
|
var id = _.isArray(id) ? id[0] : id;
|
||||||
|
var model = _.findWhere(store, {uid: id, hide: false});
|
||||||
|
if (model) return model;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
onApiRemoveComment: function (id, silentUpdate) {
|
onApiRemoveComment: function (id, silentUpdate) {
|
||||||
function remove (collection, key) {
|
function remove (collection, key) {
|
||||||
if(collection instanceof Array) {
|
if(collection instanceof Array) {
|
||||||
|
|
|
@ -165,12 +165,15 @@ define([
|
||||||
renderViewComments: function(comments, indCurComment) {
|
renderViewComments: function(comments, indCurComment) {
|
||||||
var isAndroid = Framework7.prototype.device.android === true;
|
var isAndroid = Framework7.prototype.device.android === true;
|
||||||
var me = this;
|
var me = this;
|
||||||
|
var res = false;
|
||||||
if ($('.page-view-comments .page-content').length > 0) {
|
if ($('.page-view-comments .page-content').length > 0) {
|
||||||
var template = '';
|
var template = '';
|
||||||
if (comments && comments.length > 0) {
|
if (comments && comments.length > 0) {
|
||||||
|
var comment = comments[indCurComment];
|
||||||
|
res = !comment.hide;
|
||||||
|
if (res) {
|
||||||
template = '<div class="list-block">' +
|
template = '<div class="list-block">' +
|
||||||
'<ul id="comments-list">';
|
'<ul id="comments-list">';
|
||||||
var comment = comments[indCurComment];
|
|
||||||
template += '<li class="comment item-content" data-uid="' + comment.uid + '">' +
|
template += '<li class="comment item-content" data-uid="' + comment.uid + '">' +
|
||||||
'<div class="item-inner">' +
|
'<div class="item-inner">' +
|
||||||
'<div class="header-comment"><div class="comment-left">';
|
'<div class="header-comment"><div class="comment-left">';
|
||||||
|
@ -196,6 +199,7 @@ define([
|
||||||
if (comment.replys.length > 0) {
|
if (comment.replys.length > 0) {
|
||||||
template += '<ul class="list-reply">';
|
template += '<ul class="list-reply">';
|
||||||
_.each(comment.replys, function (reply) {
|
_.each(comment.replys, function (reply) {
|
||||||
|
if (!reply.hide) {
|
||||||
template += '<li class="reply-item" data-ind="' + reply.ind + '">' +
|
template += '<li class="reply-item" data-ind="' + reply.ind + '">' +
|
||||||
'<div class="header-reply">' +
|
'<div class="header-reply">' +
|
||||||
'<div class="reply-left">';
|
'<div class="reply-left">';
|
||||||
|
@ -214,6 +218,7 @@ define([
|
||||||
template += '</div>' +
|
template += '</div>' +
|
||||||
'<div class="reply-text"><pre>' + reply.reply + '</pre></div>' +
|
'<div class="reply-text"><pre>' + reply.reply + '</pre></div>' +
|
||||||
'</li>';
|
'</li>';
|
||||||
|
}
|
||||||
});
|
});
|
||||||
template += '</ul>'
|
template += '</ul>'
|
||||||
}
|
}
|
||||||
|
@ -224,7 +229,9 @@ define([
|
||||||
$('.page-view-comments .page-content').html(template);
|
$('.page-view-comments .page-content').html(template);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
Common.Utils.addScrollIfNeed('.page-view-comments.page', '.page-view-comments .page-content');
|
Common.Utils.addScrollIfNeed('.page-view-comments.page', '.page-view-comments .page-content');
|
||||||
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
renderComments: function (comments) {
|
renderComments: function (comments) {
|
||||||
|
@ -245,6 +252,7 @@ define([
|
||||||
items = [];
|
items = [];
|
||||||
_.each(sortComments, function (comment) {
|
_.each(sortComments, function (comment) {
|
||||||
var itemTemplate = [
|
var itemTemplate = [
|
||||||
|
'<% if (!item.hide) { %>',
|
||||||
'<li class="comment item-content" data-uid="<%= item.uid %>">',
|
'<li class="comment item-content" data-uid="<%= item.uid %>">',
|
||||||
'<div class="item-inner">',
|
'<div class="item-inner">',
|
||||||
'<div class="header-comment"><div class="comment-left">',
|
'<div class="header-comment"><div class="comment-left">',
|
||||||
|
@ -267,6 +275,7 @@ define([
|
||||||
'<% if(replys > 0) {%>',
|
'<% if(replys > 0) {%>',
|
||||||
'<ul class="list-reply">',
|
'<ul class="list-reply">',
|
||||||
'<% _.each(item.replys, function (reply) { %>',
|
'<% _.each(item.replys, function (reply) { %>',
|
||||||
|
'<% if (!reply.hide) { %>',
|
||||||
'<li class="reply-item" data-ind="<%= reply.ind %>">',
|
'<li class="reply-item" data-ind="<%= reply.ind %>">',
|
||||||
'<div class="header-reply">',
|
'<div class="header-reply">',
|
||||||
'<div class="reply-left">',
|
'<div class="reply-left">',
|
||||||
|
@ -281,11 +290,13 @@ define([
|
||||||
'</div>',
|
'</div>',
|
||||||
'<div class="reply-text"><pre><%= reply.reply %></pre></div>',
|
'<div class="reply-text"><pre><%= reply.reply %></pre></div>',
|
||||||
'</li>',
|
'</li>',
|
||||||
|
'<% } %>',
|
||||||
'<% }); %>',
|
'<% }); %>',
|
||||||
'</ul>',
|
'</ul>',
|
||||||
'<% } %>',
|
'<% } %>',
|
||||||
'</div>',
|
'</div>',
|
||||||
'</li>'
|
'</li>',
|
||||||
|
'<% } %>'
|
||||||
].join('');
|
].join('');
|
||||||
items.push(_.template(itemTemplate)({
|
items.push(_.template(itemTemplate)({
|
||||||
android: Framework7.prototype.device.android,
|
android: Framework7.prototype.device.android,
|
||||||
|
@ -451,7 +462,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserName: function (username) {
|
getUserName: function (username) {
|
||||||
return Common.Utils.String.htmlEncode(Common.Utils.UserInfoParser.getParsedName(username));
|
return Common.Utils.String.htmlEncode(AscCommon.UserInfoParser.getParsedName(username));
|
||||||
},
|
},
|
||||||
|
|
||||||
textCollaboration: 'Collaboration',
|
textCollaboration: 'Collaboration',
|
||||||
|
|
|
@ -1333,10 +1333,12 @@ define([
|
||||||
|
|
||||||
this.appOptions.canUseReviewPermissions = this.appOptions.canLicense && (!!this.permissions.reviewGroups ||
|
this.appOptions.canUseReviewPermissions = this.appOptions.canLicense && (!!this.permissions.reviewGroups ||
|
||||||
this.editorConfig.customization && this.editorConfig.customization.reviewPermissions && (typeof (this.editorConfig.customization.reviewPermissions) == 'object'));
|
this.editorConfig.customization && this.editorConfig.customization.reviewPermissions && (typeof (this.editorConfig.customization.reviewPermissions) == 'object'));
|
||||||
Common.Utils.UserInfoParser.setParser(this.appOptions.canUseReviewPermissions);
|
this.appOptions.canUseCommentPermissions = this.appOptions.canLicense && !!this.permissions.commentGroups;
|
||||||
Common.Utils.UserInfoParser.setCurrentName(this.appOptions.user.fullname);
|
AscCommon.UserInfoParser.setParser(this.appOptions.canUseReviewPermissions || this.appOptions.canUseCommentPermissions);
|
||||||
this.appOptions.canUseReviewPermissions && Common.Utils.UserInfoParser.setReviewPermissions(this.permissions.reviewGroups, this.editorConfig.customization.reviewPermissions);
|
AscCommon.UserInfoParser.setCurrentName(this.appOptions.user.fullname);
|
||||||
appHeader.setUserName(Common.Utils.UserInfoParser.getParsedName(Common.Utils.UserInfoParser.getCurrentName()));
|
this.appOptions.canUseReviewPermissions && AscCommon.UserInfoParser.setReviewPermissions(this.permissions.reviewGroups, this.editorConfig.customization.reviewPermissions);
|
||||||
|
this.appOptions.canUseCommentPermissions && AscCommon.UserInfoParser.setCommentPermissions(this.permissions.commentGroups);
|
||||||
|
appHeader.setUserName(AscCommon.UserInfoParser.getParsedName(AscCommon.UserInfoParser.getCurrentName()));
|
||||||
|
|
||||||
this.appOptions.canRename && appHeader.setCanRename(true);
|
this.appOptions.canRename && appHeader.setCanRename(true);
|
||||||
this.appOptions.canBrandingExt = params.asc_getCanBranding() && (typeof this.editorConfig.customization == 'object' || this.editorConfig.plugins);
|
this.appOptions.canBrandingExt = params.asc_getCanBranding() && (typeof this.editorConfig.customization == 'object' || this.editorConfig.plugins);
|
||||||
|
@ -2232,10 +2234,10 @@ define([
|
||||||
onUserConnection: function(change){
|
onUserConnection: function(change){
|
||||||
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
||||||
var name = change.asc_getUserName();
|
var name = change.asc_getUserName();
|
||||||
if (name && name !== Common.Utils.UserInfoParser.getCurrentName() ) {
|
if (name && name !== AscCommon.UserInfoParser.getCurrentName() ) {
|
||||||
this._renameDialog && this._renameDialog.close();
|
this._renameDialog && this._renameDialog.close();
|
||||||
Common.Utils.UserInfoParser.setCurrentName(name);
|
AscCommon.UserInfoParser.setCurrentName(name);
|
||||||
appHeader.setUserName(Common.Utils.UserInfoParser.getParsedName(name));
|
appHeader.setUserName(AscCommon.UserInfoParser.getParsedName(name));
|
||||||
|
|
||||||
var idx1 = name.lastIndexOf('('),
|
var idx1 = name.lastIndexOf('('),
|
||||||
idx2 = name.lastIndexOf(')'),
|
idx2 = name.lastIndexOf(')'),
|
||||||
|
|
|
@ -359,7 +359,7 @@ define([
|
||||||
if (usersStore){
|
if (usersStore){
|
||||||
var rec = usersStore.findUser(id);
|
var rec = usersStore.findUser(id);
|
||||||
if (rec)
|
if (rec)
|
||||||
return Common.Utils.UserInfoParser.getParsedName(rec.get('username'));
|
return AscCommon.UserInfoParser.getParsedName(rec.get('username'));
|
||||||
}
|
}
|
||||||
return me.guestText;
|
return me.guestText;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1206,7 +1206,7 @@ define([
|
||||||
visible = this._ShowHideInfoItem(this.lblModifyDate, !!value) || visible;
|
visible = this._ShowHideInfoItem(this.lblModifyDate, !!value) || visible;
|
||||||
value = props.asc_getLastModifiedBy();
|
value = props.asc_getLastModifiedBy();
|
||||||
if (value)
|
if (value)
|
||||||
this.lblModifyBy.text(Common.Utils.UserInfoParser.getParsedName(value));
|
this.lblModifyBy.text(AscCommon.UserInfoParser.getParsedName(value));
|
||||||
visible = this._ShowHideInfoItem(this.lblModifyBy, !!value) || visible;
|
visible = this._ShowHideInfoItem(this.lblModifyBy, !!value) || visible;
|
||||||
$('tr.divider.modify', this.el)[visible?'show':'hide']();
|
$('tr.divider.modify', this.el)[visible?'show':'hide']();
|
||||||
|
|
||||||
|
|
|
@ -355,7 +355,7 @@ define([
|
||||||
if (usersStore){
|
if (usersStore){
|
||||||
var rec = usersStore.findUser(id);
|
var rec = usersStore.findUser(id);
|
||||||
if (rec)
|
if (rec)
|
||||||
return Common.Utils.UserInfoParser.getParsedName(rec.get('username'));
|
return AscCommon.UserInfoParser.getParsedName(rec.get('username'));
|
||||||
}
|
}
|
||||||
return me.textGuest;
|
return me.textGuest;
|
||||||
};
|
};
|
||||||
|
@ -454,7 +454,15 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
onApiShowComment: function(comments) {
|
onApiShowComment: function(comments) {
|
||||||
_isComments = comments && comments.length>0;
|
_isComments = false;
|
||||||
|
if (comments && comments.length > 0) {
|
||||||
|
for (var i = 0; i < comments.length; ++i) {
|
||||||
|
if (this.getApplication().getController('Common.Controllers.Collaboration').findVisibleComment(comments[i])) {
|
||||||
|
_isComments = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onApiHideComment: function() {
|
onApiHideComment: function() {
|
||||||
|
|
|
@ -839,9 +839,11 @@ define([
|
||||||
|
|
||||||
me.appOptions.canUseReviewPermissions = me.appOptions.canLicense && (!!me.permissions.reviewGroups ||
|
me.appOptions.canUseReviewPermissions = me.appOptions.canLicense && (!!me.permissions.reviewGroups ||
|
||||||
me.editorConfig.customization && me.editorConfig.customization.reviewPermissions && (typeof (me.editorConfig.customization.reviewPermissions) == 'object'));
|
me.editorConfig.customization && me.editorConfig.customization.reviewPermissions && (typeof (me.editorConfig.customization.reviewPermissions) == 'object'));
|
||||||
Common.Utils.UserInfoParser.setParser(me.appOptions.canUseReviewPermissions);
|
me.appOptions.canUseCommentPermissions = me.appOptions.canLicense && !!me.permissions.commentGroups;
|
||||||
Common.Utils.UserInfoParser.setCurrentName(me.appOptions.user.fullname);
|
AscCommon.UserInfoParser.setParser(me.appOptions.canUseReviewPermissions || me.appOptions.canUseCommentPermissions);
|
||||||
me.appOptions.canUseReviewPermissions && Common.Utils.UserInfoParser.setReviewPermissions(me.permissions.reviewGroups, me.editorConfig.customization.reviewPermissions);
|
AscCommon.UserInfoParser.setCurrentName(me.appOptions.user.fullname);
|
||||||
|
me.appOptions.canUseReviewPermissions && AscCommon.UserInfoParser.setReviewPermissions(me.permissions.reviewGroups, me.editorConfig.customization.reviewPermissions);
|
||||||
|
me.appOptions.canUseCommentPermissions && AscCommon.UserInfoParser.setCommentPermissions(me.permissions.commentGroups);
|
||||||
|
|
||||||
me.applyModeCommonElements();
|
me.applyModeCommonElements();
|
||||||
me.applyModeEditorElements();
|
me.applyModeEditorElements();
|
||||||
|
@ -1386,8 +1388,8 @@ define([
|
||||||
onUserConnection: function(change){
|
onUserConnection: function(change){
|
||||||
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
||||||
var name = change.asc_getUserName();
|
var name = change.asc_getUserName();
|
||||||
if (name && name !== Common.Utils.UserInfoParser.getCurrentName() ) {
|
if (name && name !== AscCommon.UserInfoParser.getCurrentName() ) {
|
||||||
Common.Utils.UserInfoParser.setCurrentName(name);
|
AscCommon.UserInfoParser.setCurrentName(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -458,7 +458,7 @@ define([
|
||||||
value = props.asc_getModified();
|
value = props.asc_getModified();
|
||||||
value ? $('#settings-doc-last-mod').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-last-mode').remove();
|
value ? $('#settings-doc-last-mod').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-last-mode').remove();
|
||||||
value = props.asc_getLastModifiedBy();
|
value = props.asc_getLastModifiedBy();
|
||||||
value ? $('#settings-doc-mod-by').html(Common.Utils.UserInfoParser.getParsedName(value)) : $('.display-mode-by').remove();
|
value ? $('#settings-doc-mod-by').html(AscCommon.UserInfoParser.getParsedName(value)) : $('.display-mode-by').remove();
|
||||||
value = props.asc_getCreated();
|
value = props.asc_getCreated();
|
||||||
value ? $('#settings-doc-date').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-created-date').remove();
|
value ? $('#settings-doc-date').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-created-date').remove();
|
||||||
value = props.asc_getCreator();
|
value = props.asc_getCreator();
|
||||||
|
|
|
@ -209,7 +209,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserName: function (username) {
|
getUserName: function (username) {
|
||||||
return Common.Utils.String.htmlEncode(Common.Utils.UserInfoParser.getParsedName(username));
|
return Common.Utils.String.htmlEncode(AscCommon.UserInfoParser.getParsedName(username));
|
||||||
},
|
},
|
||||||
|
|
||||||
renderNumFormat: function (dataFormat, selectFormat) {
|
renderNumFormat: function (dataFormat, selectFormat) {
|
||||||
|
|
|
@ -1048,10 +1048,12 @@ define([
|
||||||
|
|
||||||
this.appOptions.canUseReviewPermissions = this.appOptions.canLicense && (!!this.permissions.reviewGroups ||
|
this.appOptions.canUseReviewPermissions = this.appOptions.canLicense && (!!this.permissions.reviewGroups ||
|
||||||
this.appOptions.canLicense && this.editorConfig.customization && this.editorConfig.customization.reviewPermissions && (typeof (this.editorConfig.customization.reviewPermissions) == 'object'));
|
this.appOptions.canLicense && this.editorConfig.customization && this.editorConfig.customization.reviewPermissions && (typeof (this.editorConfig.customization.reviewPermissions) == 'object'));
|
||||||
Common.Utils.UserInfoParser.setParser(this.appOptions.canUseReviewPermissions);
|
this.appOptions.canUseCommentPermissions = this.appOptions.canLicense && !!this.permissions.commentGroups;
|
||||||
Common.Utils.UserInfoParser.setCurrentName(this.appOptions.user.fullname);
|
AscCommon.UserInfoParser.setParser(this.appOptions.canUseReviewPermissions || this.appOptions.canUseCommentPermissions);
|
||||||
this.appOptions.canUseReviewPermissions && Common.Utils.UserInfoParser.setReviewPermissions(this.permissions.reviewGroups, this.editorConfig.customization.reviewPermissions);
|
AscCommon.UserInfoParser.setCurrentName(this.appOptions.user.fullname);
|
||||||
appHeader.setUserName(Common.Utils.UserInfoParser.getParsedName(Common.Utils.UserInfoParser.getCurrentName()));
|
this.appOptions.canUseReviewPermissions && AscCommon.UserInfoParser.setReviewPermissions(this.permissions.reviewGroups, this.editorConfig.customization.reviewPermissions);
|
||||||
|
this.appOptions.canUseCommentPermissions && AscCommon.UserInfoParser.setCommentPermissions(this.permissions.commentGroups);
|
||||||
|
appHeader.setUserName(AscCommon.UserInfoParser.getParsedName(AscCommon.UserInfoParser.getCurrentName()));
|
||||||
|
|
||||||
this.appOptions.canRename && appHeader.setCanRename(true);
|
this.appOptions.canRename && appHeader.setCanRename(true);
|
||||||
this.appOptions.canBrandingExt = params.asc_getCanBranding() && (typeof this.editorConfig.customization == 'object' || this.editorConfig.plugins);
|
this.appOptions.canBrandingExt = params.asc_getCanBranding() && (typeof this.editorConfig.customization == 'object' || this.editorConfig.plugins);
|
||||||
|
@ -1892,10 +1894,10 @@ define([
|
||||||
onUserConnection: function(change){
|
onUserConnection: function(change){
|
||||||
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
||||||
var name = change.asc_getUserName();
|
var name = change.asc_getUserName();
|
||||||
if (name && name !== Common.Utils.UserInfoParser.getCurrentName() ) {
|
if (name && name !== AscCommon.UserInfoParser.getCurrentName() ) {
|
||||||
this._renameDialog && this._renameDialog.close();
|
this._renameDialog && this._renameDialog.close();
|
||||||
Common.Utils.UserInfoParser.setCurrentName(name);
|
AscCommon.UserInfoParser.setCurrentName(name);
|
||||||
appHeader.setUserName(Common.Utils.UserInfoParser.getParsedName(name));
|
appHeader.setUserName(AscCommon.UserInfoParser.getParsedName(name));
|
||||||
|
|
||||||
var idx1 = name.lastIndexOf('('),
|
var idx1 = name.lastIndexOf('('),
|
||||||
idx2 = name.lastIndexOf(')'),
|
idx2 = name.lastIndexOf(')'),
|
||||||
|
|
|
@ -363,7 +363,7 @@ define([
|
||||||
if (usersStore){
|
if (usersStore){
|
||||||
var rec = usersStore.findUser(id);
|
var rec = usersStore.findUser(id);
|
||||||
if (rec)
|
if (rec)
|
||||||
return Common.Utils.UserInfoParser.getParsedName(rec.get('username'));
|
return AscCommon.UserInfoParser.getParsedName(rec.get('username'));
|
||||||
}
|
}
|
||||||
return me.guestText;
|
return me.guestText;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1074,7 +1074,7 @@ define([
|
||||||
visible = this._ShowHideInfoItem(this.lblModifyDate, !!value) || visible;
|
visible = this._ShowHideInfoItem(this.lblModifyDate, !!value) || visible;
|
||||||
value = props.asc_getLastModifiedBy();
|
value = props.asc_getLastModifiedBy();
|
||||||
if (value)
|
if (value)
|
||||||
this.lblModifyBy.text(Common.Utils.UserInfoParser.getParsedName(value));
|
this.lblModifyBy.text(AscCommon.UserInfoParser.getParsedName(value));
|
||||||
visible = this._ShowHideInfoItem(this.lblModifyBy, !!value) || visible;
|
visible = this._ShowHideInfoItem(this.lblModifyBy, !!value) || visible;
|
||||||
$('tr.divider.modify', this.el)[visible?'show':'hide']();
|
$('tr.divider.modify', this.el)[visible?'show':'hide']();
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,15 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
onApiShowComment: function(comments) {
|
onApiShowComment: function(comments) {
|
||||||
_isComments = comments && comments.length>0;
|
_isComments = false;
|
||||||
|
if (comments && comments.length > 0) {
|
||||||
|
for (var i = 0; i < comments.length; ++i) {
|
||||||
|
if (this.getApplication().getController('Common.Controllers.Collaboration').findVisibleComment(comments[i])) {
|
||||||
|
_isComments = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onApiHideComment: function() {
|
onApiHideComment: function() {
|
||||||
|
|
|
@ -762,9 +762,11 @@ define([
|
||||||
|
|
||||||
me.appOptions.canUseReviewPermissions = me.appOptions.canLicense && (!!me.permissions.reviewGroups ||
|
me.appOptions.canUseReviewPermissions = me.appOptions.canLicense && (!!me.permissions.reviewGroups ||
|
||||||
me.editorConfig.customization && me.editorConfig.customization.reviewPermissions && (typeof (me.editorConfig.customization.reviewPermissions) == 'object'));
|
me.editorConfig.customization && me.editorConfig.customization.reviewPermissions && (typeof (me.editorConfig.customization.reviewPermissions) == 'object'));
|
||||||
Common.Utils.UserInfoParser.setParser(me.appOptions.canUseReviewPermissions);
|
me.appOptions.canUseCommentPermissions = me.appOptions.canLicense && !!me.permissions.commentGroups;
|
||||||
Common.Utils.UserInfoParser.setCurrentName(me.appOptions.user.fullname);
|
AscCommon.UserInfoParser.setParser(me.appOptions.canUseReviewPermissions || me.appOptions.canUseCommentPermissions);
|
||||||
me.appOptions.canUseReviewPermissions && Common.Utils.UserInfoParser.setReviewPermissions(me.permissions.reviewGroups, me.editorConfig.customization.reviewPermissions);
|
AscCommon.UserInfoParser.setCurrentName(me.appOptions.user.fullname);
|
||||||
|
me.appOptions.canUseReviewPermissions && AscCommon.UserInfoParser.setReviewPermissions(me.permissions.reviewGroups, me.editorConfig.customization.reviewPermissions);
|
||||||
|
me.appOptions.canUseCommentPermissions && AscCommon.UserInfoParser.setCommentPermissions(me.permissions.commentGroups);
|
||||||
|
|
||||||
me.applyModeCommonElements();
|
me.applyModeCommonElements();
|
||||||
me.applyModeEditorElements();
|
me.applyModeEditorElements();
|
||||||
|
@ -1276,8 +1278,8 @@ define([
|
||||||
onUserConnection: function(change){
|
onUserConnection: function(change){
|
||||||
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
||||||
var name = change.asc_getUserName();
|
var name = change.asc_getUserName();
|
||||||
if (name && name !== Common.Utils.UserInfoParser.getCurrentName() ) {
|
if (name && name !== AscCommon.UserInfoParser.getCurrentName() ) {
|
||||||
Common.Utils.UserInfoParser.setCurrentName(name);
|
AscCommon.UserInfoParser.setCurrentName(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -239,7 +239,7 @@ define([
|
||||||
value = props.asc_getModified();
|
value = props.asc_getModified();
|
||||||
value ? $('#settings-pe-last-mod').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-last-mode').remove();
|
value ? $('#settings-pe-last-mod').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-last-mode').remove();
|
||||||
value = props.asc_getLastModifiedBy();
|
value = props.asc_getLastModifiedBy();
|
||||||
value ? $('#settings-pe-mod-by').html(Common.Utils.UserInfoParser.getParsedName(value)) : $('.display-mode-by').remove();
|
value ? $('#settings-pe-mod-by').html(AscCommon.UserInfoParser.getParsedName(value)) : $('.display-mode-by').remove();
|
||||||
value = props.asc_getCreated();
|
value = props.asc_getCreated();
|
||||||
value ? $('#settings-pe-date').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-created-date').remove();
|
value ? $('#settings-pe-date').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-created-date').remove();
|
||||||
value = props.asc_getCreator();
|
value = props.asc_getCreator();
|
||||||
|
|
|
@ -175,7 +175,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserName: function (username) {
|
getUserName: function (username) {
|
||||||
return Common.Utils.String.htmlEncode(Common.Utils.UserInfoParser.getParsedName(username));
|
return Common.Utils.String.htmlEncode(AscCommon.UserInfoParser.getParsedName(username));
|
||||||
},
|
},
|
||||||
|
|
||||||
showPageTable: function() {
|
showPageTable: function() {
|
||||||
|
|
|
@ -1088,7 +1088,7 @@ define([
|
||||||
if (usersStore){
|
if (usersStore){
|
||||||
var rec = usersStore.findUser(id);
|
var rec = usersStore.findUser(id);
|
||||||
if (rec)
|
if (rec)
|
||||||
return Common.Utils.UserInfoParser.getParsedName(rec.get('username'));
|
return AscCommon.UserInfoParser.getParsedName(rec.get('username'));
|
||||||
}
|
}
|
||||||
return me.guestText;
|
return me.guestText;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1081,10 +1081,12 @@ define([
|
||||||
this.appOptions.canRename && this.headerView.setCanRename(true);
|
this.appOptions.canRename && this.headerView.setCanRename(true);
|
||||||
this.appOptions.canUseReviewPermissions = this.appOptions.canLicense && (!!this.permissions.reviewGroups ||
|
this.appOptions.canUseReviewPermissions = this.appOptions.canLicense && (!!this.permissions.reviewGroups ||
|
||||||
this.appOptions.canLicense && this.editorConfig.customization && this.editorConfig.customization.reviewPermissions && (typeof (this.editorConfig.customization.reviewPermissions) == 'object'));
|
this.appOptions.canLicense && this.editorConfig.customization && this.editorConfig.customization.reviewPermissions && (typeof (this.editorConfig.customization.reviewPermissions) == 'object'));
|
||||||
Common.Utils.UserInfoParser.setParser(this.appOptions.canUseReviewPermissions);
|
this.appOptions.canUseCommentPermissions = this.appOptions.canLicense && !!this.permissions.commentGroups;
|
||||||
Common.Utils.UserInfoParser.setCurrentName(this.appOptions.user.fullname);
|
AscCommon.UserInfoParser.setParser(this.appOptions.canUseReviewPermissions || this.appOptions.canUseCommentPermissions);
|
||||||
this.appOptions.canUseReviewPermissions && Common.Utils.UserInfoParser.setReviewPermissions(this.permissions.reviewGroups, this.editorConfig.customization.reviewPermissions);
|
AscCommon.UserInfoParser.setCurrentName(this.appOptions.user.fullname);
|
||||||
this.headerView.setUserName(Common.Utils.UserInfoParser.getParsedName(Common.Utils.UserInfoParser.getCurrentName()));
|
this.appOptions.canUseReviewPermissions && AscCommon.UserInfoParser.setReviewPermissions(this.permissions.reviewGroups, this.editorConfig.customization.reviewPermissions);
|
||||||
|
this.appOptions.canUseCommentPermissions && AscCommon.UserInfoParser.setCommentPermissions(this.permissions.commentGroups);
|
||||||
|
this.headerView.setUserName(AscCommon.UserInfoParser.getParsedName(AscCommon.UserInfoParser.getCurrentName()));
|
||||||
} else
|
} else
|
||||||
this.appOptions.canModifyFilter = true;
|
this.appOptions.canModifyFilter = true;
|
||||||
|
|
||||||
|
@ -2265,10 +2267,10 @@ define([
|
||||||
onUserConnection: function(change){
|
onUserConnection: function(change){
|
||||||
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
||||||
var name = change.asc_getUserName();
|
var name = change.asc_getUserName();
|
||||||
if (name && name !== Common.Utils.UserInfoParser.getCurrentName() ) {
|
if (name && name !== AscCommon.UserInfoParser.getCurrentName() ) {
|
||||||
this._renameDialog && this._renameDialog.close();
|
this._renameDialog && this._renameDialog.close();
|
||||||
Common.Utils.UserInfoParser.setCurrentName(name);
|
AscCommon.UserInfoParser.setCurrentName(name);
|
||||||
this.headerView.setUserName(Common.Utils.UserInfoParser.getParsedName(name));
|
this.headerView.setUserName(AscCommon.UserInfoParser.getParsedName(name));
|
||||||
|
|
||||||
var idx1 = name.lastIndexOf('('),
|
var idx1 = name.lastIndexOf('('),
|
||||||
idx2 = name.lastIndexOf(')'),
|
idx2 = name.lastIndexOf(')'),
|
||||||
|
|
|
@ -1932,7 +1932,7 @@ define([
|
||||||
visible = this._ShowHideInfoItem(this.lblModifyDate, !!value) || visible;
|
visible = this._ShowHideInfoItem(this.lblModifyDate, !!value) || visible;
|
||||||
value = props.asc_getLastModifiedBy();
|
value = props.asc_getLastModifiedBy();
|
||||||
if (value)
|
if (value)
|
||||||
this.lblModifyBy.text(Common.Utils.UserInfoParser.getParsedName(value));
|
this.lblModifyBy.text(AscCommon.UserInfoParser.getParsedName(value));
|
||||||
visible = this._ShowHideInfoItem(this.lblModifyBy, !!value) || visible;
|
visible = this._ShowHideInfoItem(this.lblModifyBy, !!value) || visible;
|
||||||
$('tr.divider.modify', this.el)[visible?'show':'hide']();
|
$('tr.divider.modify', this.el)[visible?'show':'hide']();
|
||||||
|
|
||||||
|
|
|
@ -832,7 +832,7 @@ define([ 'text!spreadsheeteditor/main/app/template/FormatRulesManagerDlg.templa
|
||||||
if (usersStore){
|
if (usersStore){
|
||||||
var rec = usersStore.findUser(id);
|
var rec = usersStore.findUser(id);
|
||||||
if (rec)
|
if (rec)
|
||||||
return Common.Utils.UserInfoParser.getParsedName(rec.get('username'));
|
return AscCommon.UserInfoParser.getParsedName(rec.get('username'));
|
||||||
}
|
}
|
||||||
return this.guestText;
|
return this.guestText;
|
||||||
},
|
},
|
||||||
|
|
|
@ -381,7 +381,7 @@ define([ 'text!spreadsheeteditor/main/app/template/NameManagerDlg.template',
|
||||||
if (usersStore){
|
if (usersStore){
|
||||||
var rec = usersStore.findUser(id);
|
var rec = usersStore.findUser(id);
|
||||||
if (rec)
|
if (rec)
|
||||||
return Common.Utils.UserInfoParser.getParsedName(rec.get('username'));
|
return AscCommon.UserInfoParser.getParsedName(rec.get('username'));
|
||||||
}
|
}
|
||||||
return this.guestText;
|
return this.guestText;
|
||||||
},
|
},
|
||||||
|
|
|
@ -300,7 +300,7 @@ define([
|
||||||
if (usersStore){
|
if (usersStore){
|
||||||
var rec = usersStore.findUser(id);
|
var rec = usersStore.findUser(id);
|
||||||
if (rec)
|
if (rec)
|
||||||
return Common.Utils.UserInfoParser.getParsedName(rec.get('username'));
|
return AscCommon.UserInfoParser.getParsedName(rec.get('username'));
|
||||||
}
|
}
|
||||||
return this.guestText;
|
return this.guestText;
|
||||||
},
|
},
|
||||||
|
|
|
@ -54,7 +54,8 @@ define([
|
||||||
var _actionSheets = [],
|
var _actionSheets = [],
|
||||||
_isEdit = false,
|
_isEdit = false,
|
||||||
_canViewComments = true,
|
_canViewComments = true,
|
||||||
_isComments = false;
|
_isComments = false,
|
||||||
|
_isVisibleComments = false;
|
||||||
|
|
||||||
function openLink(url) {
|
function openLink(url) {
|
||||||
var newDocumentPage = window.open(url, '_blank');
|
var newDocumentPage = window.open(url, '_blank');
|
||||||
|
@ -321,8 +322,18 @@ define([
|
||||||
var iscellmenu, isrowmenu, iscolmenu, isallmenu, ischartmenu, isimagemenu, istextshapemenu, isshapemenu, istextchartmenu;
|
var iscellmenu, isrowmenu, iscolmenu, isallmenu, ischartmenu, isimagemenu, istextshapemenu, isshapemenu, istextchartmenu;
|
||||||
var iscelllocked = cellinfo.asc_getLocked(),
|
var iscelllocked = cellinfo.asc_getLocked(),
|
||||||
seltype = cellinfo.asc_getSelectionType(),
|
seltype = cellinfo.asc_getSelectionType(),
|
||||||
xfs = cellinfo.asc_getXfs();
|
xfs = cellinfo.asc_getXfs(),
|
||||||
_isComments = cellinfo.asc_getComments().length>0; //prohibit adding multiple comments in one cell;
|
comments = cellinfo.asc_getComments();
|
||||||
|
_isComments = comments.length>0; //prohibit adding multiple comments in one cell;
|
||||||
|
_isVisibleComments = false;
|
||||||
|
if (comments && comments.length > 0) {
|
||||||
|
for (var i = 0; i < comments.length; ++i) {
|
||||||
|
if (me.getApplication().getController('Common.Controllers.Collaboration').findVisibleComment(comments[i].asc_getId())) {
|
||||||
|
_isVisibleComments = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (seltype) {
|
switch (seltype) {
|
||||||
case Asc.c_oAscSelectionType.RangeCells: iscellmenu = true; break;
|
case Asc.c_oAscSelectionType.RangeCells: iscellmenu = true; break;
|
||||||
|
@ -350,7 +361,7 @@ define([
|
||||||
event: 'openlink'
|
event: 'openlink'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (_canViewComments && _isComments) {
|
if (_canViewComments && _isVisibleComments) {
|
||||||
arrItems.push({
|
arrItems.push({
|
||||||
caption: me.menuViewComment,
|
caption: me.menuViewComment,
|
||||||
event: 'viewcomment'
|
event: 'viewcomment'
|
||||||
|
@ -463,12 +474,12 @@ define([
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_canViewComments) {
|
if (_canViewComments) {
|
||||||
if (_isComments) {
|
if (_isVisibleComments) {
|
||||||
arrItems.push({
|
arrItems.push({
|
||||||
caption: me.menuViewComment,
|
caption: me.menuViewComment,
|
||||||
event: 'viewcomment'
|
event: 'viewcomment'
|
||||||
});
|
});
|
||||||
} else if (iscellmenu) {
|
} else if (iscellmenu && !_isComments) {
|
||||||
arrItems.push({
|
arrItems.push({
|
||||||
caption: me.menuAddComment,
|
caption: me.menuAddComment,
|
||||||
event: 'addcomment'
|
event: 'addcomment'
|
||||||
|
|
|
@ -774,9 +774,11 @@ define([
|
||||||
|
|
||||||
me.appOptions.canUseReviewPermissions = me.appOptions.canLicense && (!!me.permissions.reviewGroups ||
|
me.appOptions.canUseReviewPermissions = me.appOptions.canLicense && (!!me.permissions.reviewGroups ||
|
||||||
me.editorConfig.customization && me.editorConfig.customization.reviewPermissions && (typeof (me.editorConfig.customization.reviewPermissions) == 'object'));
|
me.editorConfig.customization && me.editorConfig.customization.reviewPermissions && (typeof (me.editorConfig.customization.reviewPermissions) == 'object'));
|
||||||
Common.Utils.UserInfoParser.setParser(me.appOptions.canUseReviewPermissions);
|
me.appOptions.canUseCommentPermissions = me.appOptions.canLicense && !!me.permissions.commentGroups;
|
||||||
Common.Utils.UserInfoParser.setCurrentName(me.appOptions.user.fullname);
|
AscCommon.UserInfoParser.setParser(me.appOptions.canUseReviewPermissions || me.appOptions.canUseCommentPermissions);
|
||||||
me.appOptions.canUseReviewPermissions && Common.Utils.UserInfoParser.setReviewPermissions(me.permissions.reviewGroups, me.editorConfig.customization.reviewPermissions);
|
AscCommon.UserInfoParser.setCurrentName(me.appOptions.user.fullname);
|
||||||
|
me.appOptions.canUseReviewPermissions && AscCommon.UserInfoParser.setReviewPermissions(me.permissions.reviewGroups, me.editorConfig.customization.reviewPermissions);
|
||||||
|
me.appOptions.canUseCommentPermissions && AscCommon.UserInfoParser.setCommentPermissions(me.permissions.commentGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
me.appOptions.canRequestEditRights = me.editorConfig.canRequestEditRights;
|
me.appOptions.canRequestEditRights = me.editorConfig.canRequestEditRights;
|
||||||
|
@ -1481,8 +1483,8 @@ define([
|
||||||
onUserConnection: function(change){
|
onUserConnection: function(change){
|
||||||
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
if (change && this.appOptions.user.guest && this.appOptions.canRenameAnonymous && (change.asc_getIdOriginal() == this.appOptions.user.id)) { // change name of the current user
|
||||||
var name = change.asc_getUserName();
|
var name = change.asc_getUserName();
|
||||||
if (name && name !== Common.Utils.UserInfoParser.getCurrentName() ) {
|
if (name && name !== AscCommon.UserInfoParser.getCurrentName() ) {
|
||||||
Common.Utils.UserInfoParser.setCurrentName(name);
|
AscCommon.UserInfoParser.setCurrentName(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -306,7 +306,7 @@ define([
|
||||||
value = props.asc_getModified();
|
value = props.asc_getModified();
|
||||||
value ? $('#settings-sse-last-mod').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-last-mode').remove();
|
value ? $('#settings-sse-last-mod').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-last-mode').remove();
|
||||||
value = props.asc_getLastModifiedBy();
|
value = props.asc_getLastModifiedBy();
|
||||||
value ? $('#settings-sse-mod-by').html(Common.Utils.UserInfoParser.getParsedName(value)) : $('.display-mode-by').remove();
|
value ? $('#settings-sse-mod-by').html(AscCommon.UserInfoParser.getParsedName(value)) : $('.display-mode-by').remove();
|
||||||
value = props.asc_getCreated();
|
value = props.asc_getCreated();
|
||||||
value ? $('#settings-sse-date').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-created-date').remove();
|
value ? $('#settings-sse-date').html(value.toLocaleString(_lang, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + value.toLocaleTimeString(_lang, {timeStyle: 'short'})) : $('.display-created-date').remove();
|
||||||
value = props.asc_getCreator();
|
value = props.asc_getCreator();
|
||||||
|
|
|
@ -249,7 +249,7 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserName: function (username) {
|
getUserName: function (username) {
|
||||||
return Common.Utils.String.htmlEncode(Common.Utils.UserInfoParser.getParsedName(username));
|
return Common.Utils.String.htmlEncode(AscCommon.UserInfoParser.getParsedName(username));
|
||||||
},
|
},
|
||||||
|
|
||||||
showInsertImage: function () {
|
showInsertImage: function () {
|
||||||
|
|
Loading…
Reference in a new issue