diff --git a/apps/common/main/lib/controller/History.js b/apps/common/main/lib/controller/History.js index d8bea90fc9..52cebac6fa 100644 --- a/apps/common/main/lib/controller/History.js +++ b/apps/common/main/lib/controller/History.js @@ -98,11 +98,6 @@ define([ if (e) { var btn = $(e.target); if (btn && btn.hasClass('revision-restore')) { - var tip = item.btnTip; - if (tip) { - tip.dontShow = true; - tip.tip().remove(); - } if (record.get('isRevision')) Common.Gateway.requestRestore(record.get('revision')); else { diff --git a/apps/common/main/lib/model/HistoryVersion.js b/apps/common/main/lib/model/HistoryVersion.js index dc031eb632..088d699d2e 100644 --- a/apps/common/main/lib/model/HistoryVersion.js +++ b/apps/common/main/lib/model/HistoryVersion.js @@ -67,7 +67,12 @@ define([ arrColors: [], // array of user colors for all changes of current version markedAsVersion: false, canRestore: false, - isRevision: true + isRevision: true, + hasChanges: false, + isExpanded: true, + isVisible: true, + allowSelected: true, + selected: false } } }); diff --git a/apps/common/main/lib/view/History.js b/apps/common/main/lib/view/History.js index 10df5799f6..3aa989183a 100644 --- a/apps/common/main/lib/view/History.js +++ b/apps/common/main/lib/view/History.js @@ -76,48 +76,69 @@ define([ store: this.storeHistory, enableKeyEvents: false, itemTemplate: _.template([ - '
', + '
', '
<%= created %>
', '<% if (markedAsVersion) { %>', '
ver.<%=version%>
', '<% } %>', - '<% if (canRestore && selected) { %>', - '
', + '<% if (isRevision && hasChanges) { %>', + '
', '<% } %>', '
', '
', '
<%= Common.Utils.String.htmlEncode(username) %>', '
', + '<% if (canRestore && selected) { %>', + '', + '<% } %>', '
' ].join('')) }); + var me = this; + this.viewHistoryList.onClickItem = function(view, record, e) { + var btn = $(e.target); + if (btn && btn.hasClass('revision-expand')) { + var isExpanded = !record.get('isExpanded'); + record.set('isExpanded', isExpanded); + var rev, revisions = me.storeHistory.findRevisions(record.get('revision')); + if (revisions && revisions.length>1) { + for(var i=1; i0) + view.btnTip = btns.data('bs.tooltip'); + } + }; + this.viewHistoryList.on('item:add', changetooltip); + this.viewHistoryList.on('item:change', changetooltip); + this.btnBackToDocument = new Common.UI.Button({ el: $('#history-btn-back'), enableToggle: false }); - var me = this; - var changetooltip = function (dataview, view, record) { - if (record.get('selected')) { - var btns = $(view.el).find('.revision-restore').tooltip({title: me.textRestore, placement: 'cursor'}); - if (btns) - view.btnTip = btns.data('bs.tooltip'); - } else if (view.btnTip) { - view.btnTip.dontShow = true; - view.btnTip.tip().remove(); - view.btnTip = null; - } - }; - this.viewHistoryList.on('item:add', changetooltip); - this.viewHistoryList.on('item:change', changetooltip); - this.trigger('render:after', this); return this; }, textHistoryHeader: 'Back to Document', - textRestore: 'Restore' - + textRestore: 'Restore', + textShow: 'Show Changes', + textHide: 'Hide Changes' + }, Common.Views.History || {})) }); \ No newline at end of file diff --git a/apps/common/main/resources/less/history.less b/apps/common/main/resources/less/history.less index 6eb6299d44..e60907e011 100644 --- a/apps/common/main/resources/less/history.less +++ b/apps/common/main/resources/less/history.less @@ -56,6 +56,10 @@ .user-date { color: #fff; } + + .revision-expand { + background-position: -74px -149px; + } } } @@ -75,7 +79,7 @@ .user-version { display: inline-block; - width: 36px; + max-width: 60px; height: 18px; color: @primary; font-size: 10px; @@ -83,7 +87,7 @@ overflow: hidden; background-color: #e6e6e6; text-align: center; - padding: 1px 0; + padding: 1px 5px; border-radius: 2px; } @@ -94,6 +98,8 @@ font-size: 12px; cursor: pointer; color: @gray-darker; + max-width: 210px; + text-overflow: ellipsis; } .color { @@ -104,14 +110,28 @@ vertical-align: middle; } - .revision-restore { + .revision-expand { width: 16px; height: 16px; - background-position: -22px -272px; - margin: 0 12px; + background-position: -47px -149px; + margin: 14px 12px; display: inline-block; position: absolute; right: 0; + + &.up { + transform: rotate(180deg); + } + } + + .revision-restore { + color: #fff; + border-bottom: 1px dotted #fff; + height: 16px; + margin-top: 5px; + white-space: pre-wrap; + width: auto; + cursor: pointer; } } } diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 8bc963939c..7ccc2dd4bd 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -420,6 +420,7 @@ define([ if (changes && changes.length>0) { arrVersions[arrVersions.length-1].set('changeid', changes.length-1); arrVersions[arrVersions.length-1].set('docIdPrev', docIdPrev); + arrVersions[arrVersions.length-1].set('hasChanges', changes.length>1); for (i=changes.length-2; i>=0; i--) { change = changes[i];