diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index b5540a3c2..0f8d84ec8 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -74,15 +74,16 @@ recent: [ { title: 'document title', + image: 'recent icon url', url: 'document url', - folder: 'path to document' + folder: 'path to document', }, ... ], templates: [ { - name: 'template name', - icon: 'template icon url', + title: 'template name', // name - is deprecated + image: 'template icon url', url: 'http://...' }, ... @@ -385,8 +386,6 @@ if (!_config.editorConfig.customization) _config.editorConfig.customization = {}; _config.editorConfig.customization.about = false; _config.editorConfig.customization.compactHeader = false; - - if ( window.AscDesktopEditor ) window.AscDesktopEditor.execCommand('webapps:events', 'loading'); } } })(); diff --git a/apps/common/locale.js b/apps/common/locale.js index d954165fc..7990b2c8d 100644 --- a/apps/common/locale.js +++ b/apps/common/locale.js @@ -74,6 +74,9 @@ Common.Locale = new(function() { var res = ''; if (l10n && scope && scope.name) { res = l10n[scope.name + '.' + prop]; + + if ( !res && scope.default ) + res = scope.default; } return res || (scope ? eval(scope.name).prototype[prop] : ''); diff --git a/apps/common/main/lib/component/Button.js b/apps/common/main/lib/component/Button.js index 12eb656b7..50c2c4020 100644 --- a/apps/common/main/lib/component/Button.js +++ b/apps/common/main/lib/component/Button.js @@ -313,7 +313,8 @@ define([ if (me.options.el) { me.render(); - } + } else if (me.options.parentEl) + me.render(me.options.parentEl); }, render: function(parentEl) { @@ -646,8 +647,14 @@ define([ oldCls = this.iconCls; this.iconCls = cls; - btnIconEl.removeClass(oldCls); - btnIconEl.addClass(cls || ''); + if (/svgicon/.test(this.iconCls)) { + var icon = /svgicon\s(\S+)/.exec(this.iconCls); + btnIconEl.find('use.zoom-int').attr('xlink:href', icon && icon.length>1 ? '#' + icon[1]: ''); + btnIconEl.find('use.zoom-grit').attr('xlink:href', icon && icon.length>1 ? '#' + icon[1] + '-150' : ''); + } else { + btnIconEl.removeClass(oldCls); + btnIconEl.addClass(cls || ''); + } }, changeIcon: function(opts) { diff --git a/apps/common/main/lib/component/Calendar.js b/apps/common/main/lib/component/Calendar.js index 71b282a13..2304ab1f5 100644 --- a/apps/common/main/lib/component/Calendar.js +++ b/apps/common/main/lib/component/Calendar.js @@ -91,17 +91,17 @@ define([ me.currentDate = me.options.date || new Date(); me.btnPrev = new Common.UI.Button({ + parentEl: me.cmpEl.find('#prev-arrow'), cls: '', iconCls: 'arrow-prev img-commonctrl' }); - me.btnPrev.render(me.cmpEl.find('#prev-arrow')); me.btnPrev.on('click', _.bind(me.onClickPrev, me)); me.btnNext = new Common.UI.Button({ + parentEl: me.cmpEl.find('#next-arrow'), cls: '', iconCls: 'arrow-next img-commonctrl' }); - me.btnNext.render(me.cmpEl.find('#next-arrow')); me.btnNext.on('click', _.bind(me.onClickNext, me)); me.cmpEl.on('keydown', function(e) { diff --git a/apps/common/main/lib/component/ColorButton.js b/apps/common/main/lib/component/ColorButton.js index da3e9cb64..c01bcd325 100644 --- a/apps/common/main/lib/component/ColorButton.js +++ b/apps/common/main/lib/component/ColorButton.js @@ -34,11 +34,12 @@ if (Common === undefined) var Common = {}; define([ - 'common/main/lib/component/Button' + 'common/main/lib/component/Button', + 'common/main/lib/component/ThemeColorPalette' ], function () { 'use strict'; - Common.UI.ColorButton = Common.UI.Button.extend({ + Common.UI.ColorButton = Common.UI.Button.extend(_.extend({ options : { hint: false, enableToggle: false, @@ -49,25 +50,85 @@ define([ '
', '', '
' ].join('')), + initialize : function(options) { + if (!options.menu && options.menu !== false) {// menu==null or undefined + // set default menu + var me = this; + options.menu = me.getMenu(options); + me.on('render:after', function(btn) { + me.getPicker(options.color); + }); + } + + Common.UI.Button.prototype.initialize.call(this, options); + }, + + render: function(parentEl) { + Common.UI.Button.prototype.render.call(this, parentEl); + + if (this.options.color!==undefined) + this.setColor(this.options.color); + }, + + onColorSelect: function(picker, color) { + this.setColor(color); + this.trigger('color:select', this, color); + }, + setColor: function(color) { - var border_color, clr, - span = $(this.cmpEl).find('button span'); + var span = $(this.cmpEl).find('button span:nth-child(1)'); this.color = color; - if ( color== 'transparent' ) { - border_color = '#BEBEBE'; - clr = color; - span.addClass('color-transparent'); - } else { - border_color = 'transparent'; - clr = (typeof(color) == 'object') ? '#'+color.color : '#'+color; - span.removeClass('color-transparent'); + span.toggleClass('color-transparent', color=='transparent'); + span.css({'background-color': (color=='transparent') ? color : ((typeof(color) == 'object') ? '#'+color.color : '#'+color)}); + }, + + getPicker: function(color) { + if (!this.colorPicker) { + this.colorPicker = new Common.UI.ThemeColorPalette({ + el: this.cmpEl.find('#' + this.menu.id + '-color-menu'), + transparent: this.options.transparent, + value: color + }); + this.colorPicker.on('select', _.bind(this.onColorSelect, this)); + this.cmpEl.find('#' + this.menu.id + '-color-new').on('click', _.bind(this.addNewColor, this)); } - span.css({'background-color': clr, 'border-color': border_color}); - } - }); + return this.colorPicker; + }, + + getMenu: function(options) { + if (typeof this.menu !== 'object') { + options = options || this.options; + var id = Common.UI.getId(), + menu = new Common.UI.Menu({ + id: id, + additionalAlign: options.additionalAlign, + items: (options.additionalItems ? options.additionalItems : []).concat([ + { template: _.template('
') }, + { template: _.template('' + this.textNewColor + '') } + ]) + }); + return menu; + } + return this.menu; + }, + + setMenu: function (m) { + m = m || this.getMenu(); + Common.UI.Button.prototype.setMenu.call(this, m); + this.getPicker(this.options.color); + }, + + addNewColor: function() { + this.colorPicker && this.colorPicker.addNewColor((typeof(this.color) == 'object') ? this.color.color : this.color); + }, + + textNewColor: 'Add New Custom Color' + + }, Common.UI.ColorButton || {})); }); \ No newline at end of file diff --git a/apps/common/main/lib/component/ComboBox.js b/apps/common/main/lib/component/ComboBox.js index 7a19180bb..78a7b0a22 100644 --- a/apps/common/main/lib/component/ComboBox.js +++ b/apps/common/main/lib/component/ComboBox.js @@ -644,7 +644,7 @@ define([ } else { $(this.el).find('ul').html(_.template([ '<% _.each(items, function(item) { %>', - '
  • <%= scope.getDisplayValue(item) %>
  • ', + '
  • <%= scope.getDisplayValue(item) %>
  • ', '<% }); %>' ].join(''))({ items: this.store.toJSON(), diff --git a/apps/common/main/lib/component/Mixtbar.js b/apps/common/main/lib/component/Mixtbar.js index f3e4ba840..74b785c60 100644 --- a/apps/common/main/lib/component/Mixtbar.js +++ b/apps/common/main/lib/component/Mixtbar.js @@ -374,20 +374,67 @@ define([ if ( $active && $active.length ) { var _maxright = $active.parents('.box-controls').width(); var data = $active.data(), - _rightedge = data.rightedge; + _rightedge = data.rightedge, + _btns = data.buttons, + _flex = data.flex; if ( !_rightedge ) { _rightedge = $active.get(0).getBoundingClientRect().right; } + if ( !_btns ) { + _btns = []; + _.each($active.find('.btn-slot .x-huge'), function(item) { + _btns.push($(item).closest('.btn-slot')); + }); + data.buttons = _btns; + } + if (!_flex) { + _flex = []; + _.each($active.find('.group.flex'), function(item) { + _flex.push($(item)); + }); + data.flex = _flex; + } - if ( _rightedge > _maxright ) { - if ( !$active.hasClass('compactwidth') ) { - $active.addClass('compactwidth'); - data.rightedge = _rightedge; + if ( _rightedge > _maxright) { + if (_flex.length>0) { + for (var i=0; i<_flex.length; i++) { + var item = _flex[i]; + if (item.outerWidth() > parseInt(item.css('min-width'))) + return; + else + item.css('width', item.css('min-width')); + } } + for (var i=_btns.length-1; i>=0; i--) { + var btn = _btns[i]; + if ( !btn.hasClass('compactwidth') ) { + btn.addClass('compactwidth'); + _rightedge = $active.get(0).getBoundingClientRect().right; + if (_rightedge <= _maxright) + break; + } + } + data.rightedge = _rightedge; } else { - if ($active.hasClass('compactwidth')) { - $active.removeClass('compactwidth'); + for (var i=0; i<_btns.length; i++) { + var btn = _btns[i]; + if ( btn.hasClass('compactwidth') ) { + btn.removeClass('compactwidth'); + _rightedge = $active.get(0).getBoundingClientRect().right; + if ( _rightedge > _maxright) { + btn.addClass('compactwidth'); + _rightedge = $active.get(0).getBoundingClientRect().right; + break; + } + } + } + data.rightedge = _rightedge; + if (_flex.length>0 && $active.find('.btn-slot.compactwidth').length<1) { + for (var i=0; i<_flex.length; i++) { + var item = _flex[i]; + item.css('width', item.css('max-width')); + } } } } diff --git a/apps/common/main/lib/component/SynchronizeTip.js b/apps/common/main/lib/component/SynchronizeTip.js index 57a203492..022d63193 100644 --- a/apps/common/main/lib/component/SynchronizeTip.js +++ b/apps/common/main/lib/component/SynchronizeTip.js @@ -52,7 +52,7 @@ define([ '
    ', '
    ', '
    ', - '
    <%= scope.text %>
    ', + '
    <%= scope.text %>
    ', '
    ', '
    ', '<% if ( scope.showLink ) { %>', @@ -105,6 +105,10 @@ define([ applyPlacement: function () { var showxy = this.target.offset(), innerHeight = Common.Utils.innerHeight(); + + if (this.placement == 'document') { + // this.cmpEl.css('top', $('#editor_sdk').offset().top); + } else if (this.placement == 'top') this.cmpEl.css({bottom : innerHeight - showxy.top + 'px', right: Common.Utils.innerWidth() - showxy.left - this.target.width()/2 + 'px'}); else {// left or right diff --git a/apps/common/main/lib/component/Tab.js b/apps/common/main/lib/component/Tab.js index 5fa0194b6..e5615f93d 100644 --- a/apps/common/main/lib/component/Tab.js +++ b/apps/common/main/lib/component/Tab.js @@ -52,8 +52,8 @@ define([ this.label = 'Tab'; this.cls = ''; this.index = -1; - this.template = _.template(['
  • ', - '<%- label %>', + this.template = _.template(['
  • ', + '<%- label %>', '
  • '].join('')); this.initialize.call(this, opts); diff --git a/apps/common/main/lib/component/TabBar.js b/apps/common/main/lib/component/TabBar.js index 81b282e7e..31eaddea4 100644 --- a/apps/common/main/lib/component/TabBar.js +++ b/apps/common/main/lib/component/TabBar.js @@ -142,6 +142,7 @@ define([ me.bar.$bar.scrollLeft(me.scrollLeft); me.bar.scrollX = undefined; } + me.bar.checkInvisible(); me.drag = undefined; me.bar.trigger('tab:drop', this); @@ -542,7 +543,7 @@ define([ this.checkInvisible(suppress); } else if ( index >= (this.tabs.length - 1) || index == 'last') { var tab = this.tabs[this.tabs.length-1].$el; - this.$bar.scrollLeft(this.$bar.scrollLeft() + (tab.position().left + parseInt(tab.css('width')) - this.$bar.width()) + 1); + this.$bar.scrollLeft(this.$bar.scrollLeft() + (tab.position().left + parseInt(tab.css('width')) - this.$bar.width()) + (this.$bar.width() > 400 ? 20 : 5)); this.checkInvisible(suppress); } else { var rightbound = this.$bar.width(), @@ -554,7 +555,7 @@ define([ right = tab.position().left + parseInt(tab.css('width')); if (right > rightbound) { - this.$bar.scrollLeft(this.$bar.scrollLeft() + (right - rightbound) + 20); + this.$bar.scrollLeft(this.$bar.scrollLeft() + (right - rightbound) + (this.$bar.width() > 400 ? 20 : 5)); this.checkInvisible(suppress); break; } diff --git a/apps/common/main/lib/component/Window.js b/apps/common/main/lib/component/Window.js index 079b40c0e..0d2a153c8 100644 --- a/apps/common/main/lib/component/Window.js +++ b/apps/common/main/lib/component/Window.js @@ -219,24 +219,34 @@ define([ } } - function _centre() { + function _readDocumetGeometry() { if (window.innerHeight == undefined) { - var main_width = document.documentElement.offsetWidth; - var main_height = document.documentElement.offsetHeight; + var width = document.documentElement.offsetWidth, + height = document.documentElement.offsetHeight; } else { - main_width = Common.Utils.innerWidth(); - main_height = Common.Utils.innerHeight(); + width = Common.Utils.innerWidth(); + height = Common.Utils.innerHeight(); } + height -= Common.Utils.InternalSettings.get('window-inactive-area-top'); + return {width: width, height: height, top: Common.Utils.InternalSettings.get('window-inactive-area-top')}; + } + + function _centre() { + var main_geometry = _readDocumetGeometry(), + main_width = main_geometry.width, + main_height = main_geometry.height; if (this.initConfig.height == 'auto') { var win_height = parseInt(this.$window.find('.body').css('height')); this.initConfig.header && (win_height += parseInt(this.$window.find('.header').css('height'))); - } else + } else { win_height = this.initConfig.height; + win_height > main_height && (win_height = main_height); + } var win_width = (this.initConfig.width=='auto') ? parseInt(this.$window.find('.body').css('width')) : this.initConfig.width; - var top = Math.floor((parseInt(main_height) - parseInt(win_height)) / 2); + var top = main_geometry.top + Math.floor((parseInt(main_height) - parseInt(win_height)) / 2); var left = Math.floor((parseInt(main_width) - parseInt(win_width)) / 2); this.$window.css('left',left); @@ -244,18 +254,21 @@ define([ } function _setVisible() { - if (window.innerHeight == undefined) { - var main_width = document.documentElement.offsetWidth; - var main_height = document.documentElement.offsetHeight; - } else { - main_width = Common.Utils.innerWidth(); - main_height = Common.Utils.innerHeight(); - } + var main_geometry = _readDocumetGeometry(), + main_width = main_geometry.width, + main_height = main_geometry.height; if (this.getLeft() + this.getWidth() > main_width) this.$window.css('left', main_width - this.getWidth()); - if (this.getTop() + this.getHeight() > main_height) - this.$window.css('top', main_height - this.getHeight()); + + if (this.getTop() < main_geometry.top ) + this.$window.css('top', main_geometry.top); + else + if (this.getTop() + this.getHeight() > main_height) { + if (main_height - this.getHeight() < 0) + this.$window.css('top', main_geometry.top); + else this.$window.css('top', main_geometry.top + main_height - this.getHeight()); + } } function _getTransformation(end) { @@ -277,16 +290,15 @@ define([ this.dragging.initx = event.pageX*zoom - this.getLeft(); this.dragging.inity = event.pageY*zoom - this.getTop(); - if (window.innerHeight == undefined) { - var main_width = document.documentElement.offsetWidth; - var main_height = document.documentElement.offsetHeight; - } else { - main_width = Common.Utils.innerWidth(); - main_height = Common.Utils.innerHeight(); - } + var main_geometry = _readDocumetGeometry(), + main_width = main_geometry.width, + main_height = main_geometry.height; this.dragging.maxx = main_width - this.getWidth(); this.dragging.maxy = main_height - this.getHeight(); + if (this.dragging.maxy < 0) + this.dragging.maxy = 0; + this.dragging.maxy += main_geometry.top; $(document).on('mousemove', this.binding.drag); $(document).on('mouseup', this.binding.dragStop); @@ -311,10 +323,11 @@ define([ if (this.dragging.enabled) { var zoom = (event instanceof jQuery.Event) ? Common.Utils.zoom() : 1, left = event.pageX*zoom - this.dragging.initx, - top = event.pageY*zoom - this.dragging.inity; + top = event.pageY*zoom - this.dragging.inity, + topedge = Common.Utils.InternalSettings.get('window-inactive-area-top'); left < 0 ? (left = 0) : left > this.dragging.maxx && (left = this.dragging.maxx); - top < 0 ? (top = 0) : top > this.dragging.maxy && (top = this.dragging.maxy); + top < topedge ? (top = topedge) : top > this.dragging.maxy && (top = this.dragging.maxy); this.$window.css({left: left, top: top}); } @@ -343,9 +356,10 @@ define([ this.resizing.inith = this.getHeight(); this.resizing.type = [el.hasClass('left') ? -1 : (el.hasClass('right') ? 1 : 0), el.hasClass('top') ? -1 : (el.hasClass('bottom') ? 1 : 0)]; - var main_width = (window.innerHeight == undefined) ? document.documentElement.offsetWidth : Common.Utils.innerWidth(), - main_height = (window.innerHeight == undefined) ? document.documentElement.offsetHeight : Common.Utils.innerHeight(), - maxwidth = (this.initConfig.maxwidth) ? this.initConfig.maxwidth : main_width, + var main_geometry = _readDocumetGeometry(), + main_width = main_geometry.width, + main_height = main_geometry.height; + var maxwidth = (this.initConfig.maxwidth) ? this.initConfig.maxwidth : main_width, maxheight = (this.initConfig.maxheight) ? this.initConfig.maxheight : main_height; this.resizing.minw = this.initConfig.minwidth; diff --git a/apps/common/main/lib/controller/Desktop.js b/apps/common/main/lib/controller/Desktop.js index 62a7b9b7b..a5cd5bae3 100644 --- a/apps/common/main/lib/controller/Desktop.js +++ b/apps/common/main/lib/controller/Desktop.js @@ -41,10 +41,16 @@ define([ ], function () { 'use strict'; + var native = window.AscDesktopEditor; + !!native && native.execCommand('webapps:features', JSON.stringify({ + version: '{{PRODUCT_VERSION}}', + eventloading: true, + titlebuttons: true + })); + var Desktop = function () { var config = {version:'{{PRODUCT_VERSION}}'}; - var app = window.AscDesktopEditor, - webapp = window.DE || window.PE || window.SSE; + var webapp = window.DE || window.PE || window.SSE; var titlebuttons; var btnsave_icons = { 'btn-save': 'save', @@ -52,7 +58,7 @@ define([ 'btn-synch': 'synch' }; - if ( !!app ) { + if ( !!native ) { window.on_native_message = function (cmd, param) { if (/^style:change/.test(cmd)) { var obj = JSON.parse(param); @@ -81,6 +87,13 @@ define([ Common.NotificationCenter.trigger('app:config', {canUndock:true}); } } + + if (_.isNumber(obj.skiptoparea)) { + if ( $('.asc-window.modal').length && $('.asc-window.modal').position().top < obj.skiptoparea ) + $('.asc-window.modal').css('top', obj.skiptoparea); + + Common.Utils.InternalSettings.set('window-inactive-area-top', obj.skiptoparea); + } } else if (/window:status/.test(cmd)) { var obj = JSON.parse(param); @@ -104,7 +117,7 @@ define([ } } - app.execCommand('editor:config', JSON.stringify(opts)); + native.execCommand('editor:config', JSON.stringify(opts)); } else if ( !config.callback_editorconfig ) { config.callback_editorconfig = function() { @@ -128,14 +141,19 @@ define([ } }; + window.on_native_message('editor:config', 'request'); if ( !!window.native_message_cmd ) { for ( var c in window.native_message_cmd ) { window.on_native_message(c, window.native_message_cmd[c]); } } - // app.execCommand('window:features', {version: config.version, action: 'request'}); - app.execCommand('webapps:features', {version: config.version, eventloading:true, titlebuttons:true}); + native.execCommand('webapps:features', JSON.stringify({version: config.version, eventloading:true, titlebuttons:true})); + + // hide mask for modal window + var style = document.createElement('style'); + style.appendChild(document.createTextNode('.modals-mask{opacity:0 !important;}')); + document.getElementsByTagName('head')[0].appendChild(style); } var _serializeHeaderButton = function(action, config) { @@ -143,31 +161,30 @@ define([ action: action, icon: config.icon || undefined, hint: config.btn.options.hint, - disabled: config.disabled + disabled: config.btn.isDisabled() }; }; var _onTitleButtonDisabled = function (action, e, status) { - titlebuttons[action].disabled = status; var _buttons = {}; _buttons[action] = status; - app.execCommand('title:button', JSON.stringify({disabled: _buttons})); + native.execCommand('title:button', JSON.stringify({disabled: _buttons})); }; var _onSaveIconChanged = function (e, opts) { - app.execCommand('title:button', JSON.stringify({'icon:changed': {'save': btnsave_icons[opts.next]}})); + native.execCommand('title:button', JSON.stringify({'icon:changed': {'save': btnsave_icons[opts.next]}})); }; var _onModalDialog = function (status) { if ( status == 'open' ) { - app.execCommand('title:button', JSON.stringify({disabled: {'all':true}})); + native.execCommand('title:button', JSON.stringify({disabled: {'all':true}})); } else { var _buttons = {}; for (var i in titlebuttons) { - _buttons[i] = titlebuttons[i].disabled; + _buttons[i] = titlebuttons[i].btn.isDisabled(); } - app.execCommand('title:button', JSON.stringify({'disabled': _buttons})); + native.execCommand('title:button', JSON.stringify({'disabled': _buttons})); } }; @@ -178,13 +195,22 @@ define([ if ( config.isDesktopApp ) { Common.NotificationCenter.on('app:ready', function (opts) { _.extend(config, opts); - !!app && app.execCommand('doc:onready', ''); + !!native && native.execCommand('doc:onready', ''); $('.toolbar').addClass('editor-native-color'); }); + Common.NotificationCenter.on('document:ready', function () { + if ( config.isEdit ) { + var maincontroller = webapp.getController('Main'); + if (maincontroller.api.asc_isReadOnly && maincontroller.api.asc_isReadOnly()) { + maincontroller.warningDocumentIsLocked(); + } + } + }); + Common.NotificationCenter.on('action:undocking', function (opts) { - app.execCommand('editor:event', JSON.stringify({action:'undocking', state: opts == 'dock' ? 'dock' : 'undock'})); + native.execCommand('editor:event', JSON.stringify({action:'undocking', state: opts == 'dock' ? 'dock' : 'undock'})); }); Common.NotificationCenter.on('app:face', function (mode) { @@ -192,32 +218,37 @@ define([ Common.NotificationCenter.trigger('app:config', {canUndock: true}); } - var header = webapp.getController('Viewport').getView('Common.Views.Header'); titlebuttons = {}; - if ( !!header.btnSave ) { - titlebuttons['save'] = {btn: header.btnSave, disabled:false}; + if ( !mode.isEdit ) { + native.execCommand('webapps:features', JSON.stringify( + {version: config.version, eventloading:true, titlebuttons:true, viewmode:true} )); + } else { + var header = webapp.getController('Viewport').getView('Common.Views.Header'); + if (!!header.btnSave) { + titlebuttons['save'] = {btn: header.btnSave}; - var iconname = /\s?([^\s]+)$/.exec(titlebuttons.save.btn.$icon.attr('class')); - !!iconname && iconname.length && (titlebuttons.save.icon = btnsave_icons[iconname]); - } + var iconname = /\s?([^\s]+)$/.exec(titlebuttons.save.btn.$icon.attr('class')); + !!iconname && iconname.length && (titlebuttons.save.icon = btnsave_icons[iconname]); + } - if ( !!header.btnPrint ) - titlebuttons['print'] = {btn: header.btnPrint, disabled:false}; + if (!!header.btnPrint) + titlebuttons['print'] = {btn: header.btnPrint}; - if ( !!header.btnUndo ) - titlebuttons['undo'] = {btn: header.btnUndo, disabled:false}; + if (!!header.btnUndo) + titlebuttons['undo'] = {btn: header.btnUndo}; - if ( !!header.btnRedo ) - titlebuttons['redo'] = {btn: header.btnRedo, disabled:false}; + if (!!header.btnRedo) + titlebuttons['redo'] = {btn: header.btnRedo}; - for (var i in titlebuttons) { - titlebuttons[i].btn.options.signals = ['disabled']; - titlebuttons[i].btn.on('disabled', _onTitleButtonDisabled.bind(this, i)); - } + for (var i in titlebuttons) { + titlebuttons[i].btn.options.signals = ['disabled']; + titlebuttons[i].btn.on('disabled', _onTitleButtonDisabled.bind(this, i)); + } - if (!!titlebuttons.save) { - titlebuttons.save.btn.options.signals.push('icon:changed'); - titlebuttons.save.btn.on('icon:changed', _onSaveIconChanged.bind(this)); + if (!!titlebuttons.save) { + titlebuttons.save.btn.options.signals.push('icon:changed'); + titlebuttons.save.btn.on('icon:changed', _onSaveIconChanged.bind(this)); + } } if ( !!config.callback_editorconfig ) { @@ -233,19 +264,19 @@ define([ } }, process: function (opts) { - if ( config.isDesktopApp && !!app ) { + if ( config.isDesktopApp && !!native ) { if ( opts == 'goback' ) { - app.execCommand('go:folder', + native.execCommand('go:folder', config.isOffline ? 'offline' : config.customization.goback.url); return true; } else if ( opts == 'preloader:hide' ) { - app.execCommand('editor:onready', ''); + native.execCommand('editor:onready', ''); return true; } else if ( opts == 'create:new' ) { if (config.createUrl == 'desktop://create.new') { - app.LocalFileCreate(!!window.SSE ? 2 : !!window.PE ? 1 : 0); + native.LocalFileCreate(!!window.SSE ? 2 : !!window.PE ? 1 : 0); return true; } } @@ -254,8 +285,8 @@ define([ return false; }, requestClose: function () { - if ( config.isDesktopApp && !!app ) { - app.execCommand('editor:event', JSON.stringify({action:'close', url: config.customization.goback.url})); + if ( config.isDesktopApp && !!native ) { + native.execCommand('editor:event', JSON.stringify({action:'close', url: config.customization.goback.url})); } } }; diff --git a/apps/common/main/lib/controller/ExternalDiagramEditor.js b/apps/common/main/lib/controller/ExternalDiagramEditor.js index df8e41e32..de9662b41 100644 --- a/apps/common/main/lib/controller/ExternalDiagramEditor.js +++ b/apps/common/main/lib/controller/ExternalDiagramEditor.js @@ -99,7 +99,7 @@ define([ },this), 'show': _.bind(function(cmp){ var h = this.diagramEditorView.getHeight(), - innerHeight = Common.Utils.innerHeight(); + innerHeight = Common.Utils.innerHeight() - Common.Utils.InternalSettings.get('window-inactive-area-top'); if (innerHeight>h && h<700 || innerHeight
    - +
    diff --git a/apps/common/main/lib/template/Comments.template b/apps/common/main/lib/template/Comments.template index 8fac3d9ad..6bc11c91c 100644 --- a/apps/common/main/lib/template/Comments.template +++ b/apps/common/main/lib/template/Comments.template @@ -14,7 +14,7 @@
    <%=scope.pickLink(comment)%>
    <% } else { %>
    - +
    @@ -42,7 +42,7 @@ <%}%> <% } else { %>
    - +
    @@ -81,7 +81,7 @@ <% if (showReply) { %>
    - +
    diff --git a/apps/common/main/lib/template/CommentsPanel.template b/apps/common/main/lib/template/CommentsPanel.template index e7d93993e..e5caaef49 100644 --- a/apps/common/main/lib/template/CommentsPanel.template +++ b/apps/common/main/lib/template/CommentsPanel.template @@ -5,7 +5,7 @@