diff --git a/apps/common/main/lib/component/CheckBox.js b/apps/common/main/lib/component/CheckBox.js
index fa353ba98..5aaa8a112 100644
--- a/apps/common/main/lib/component/CheckBox.js
+++ b/apps/common/main/lib/component/CheckBox.js
@@ -137,6 +137,9 @@ define([
},
setDisabled: function(disabled) {
+ if (!this.rendered)
+ return;
+
disabled = (disabled===true);
if (disabled !== this.disabled) {
this.$label.toggleClass('disabled', disabled);
diff --git a/apps/common/main/lib/component/RadioBox.js b/apps/common/main/lib/component/RadioBox.js
index 57348aa19..8b7ff4b6f 100644
--- a/apps/common/main/lib/component/RadioBox.js
+++ b/apps/common/main/lib/component/RadioBox.js
@@ -107,6 +107,9 @@ define([
},
setDisabled: function(disabled) {
+ if (!this.rendered)
+ return;
+
if (disabled !== this.disabled) {
this.$radio.toggleClass('disabled', disabled);
(disabled) ? this.$radio.attr({disabled: disabled}) : this.$radio.removeAttr('disabled');
diff --git a/apps/documenteditor/main/app/view/FileMenuPanels.js b/apps/documenteditor/main/app/view/FileMenuPanels.js
index 539eaa81b..16bea8c85 100644
--- a/apps/documenteditor/main/app/view/FileMenuPanels.js
+++ b/apps/documenteditor/main/app/view/FileMenuPanels.js
@@ -673,50 +673,82 @@ define([
this.template = _.template([
'
',
'',
- ' | ',
- ' | ',
- '
',
- '',
- ' | ',
- '- | ',
- '
',
- '',
' | ',
' | ',
'
',
- '',
- ' | ',
- ' | ',
- '
',
- '',
- ' | ',
- ' | ',
- '
',
- '
',
'',
- ' | ',
- '',
+ ' | | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '
',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '
',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ '
',
+ '
',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ '',
' ',
- '',
- ' | ',
- ' | ',
- ' ',
- '',
- ' | ',
- ' | ',
- ' ',
- '',
- ' | ',
- ' | ',
- ' ',
- '',
- ' | ',
- ' | ',
- ' ',
- '',
- ' | ',
- ' | ',
- ' ',
+ '',
+ ' | ',
+ ' ',
' ',
' | ',
'
',
@@ -731,16 +763,84 @@ define([
render: function() {
$(this.el).html(this.template());
- this.lblTitle = $('#id-info-title');
+ var me = this;
+
+ // server info
this.lblPlacement = $('#id-info-placement');
- this.lblDate = $('#id-info-date');
- this.lblAuthor = $('#id-info-author');
- this.lblApplication = $('#id-info-appname');
+ this.lblOwner = $('#id-info-owner');
+ this.lblUploaded = $('#id-info-uploaded');
+
+ // statistic info
this.lblStatPages = $('#id-info-pages');
this.lblStatWords = $('#id-info-words');
this.lblStatParagraphs = $('#id-info-paragraphs');
this.lblStatSymbols = $('#id-info-symbols');
this.lblStatSpaces = $('#id-info-spaces');
+ this.lblEditTime = $('#id-info-edittime');
+
+ // edited info
+ this.inputTitle = new Common.UI.InputField({
+ el : $('#id-info-title'),
+ style : 'width: 200px;',
+ validateOnBlur: false
+ }).on('changed:after', function() {
+ // me.api && me.api.asc_setDocumentTitle(me.inputTitle.getValue());
+ });
+ this.inputSubject = new Common.UI.InputField({
+ el : $('#id-info-subject'),
+ style : 'width: 200px;',
+ validateOnBlur: false
+ }).on('changed:after', function() {
+ // me.api && me.api.asc_setDocumentSubject(me.inputSubject.getValue());
+ });
+ this.inputComment = new Common.UI.InputField({
+ el : $('#id-info-comment'),
+ style : 'width: 200px;',
+ validateOnBlur: false
+ }).on('changed:after', function() {
+ // me.api && me.api.asc_setDocumentComment(me.inputComment.getValue());
+ });
+
+ // modify info
+ this.lblModifyDate = $('#id-info-modify-date');
+ this.lblModifyBy = $('#id-info-modify-by');
+
+ // creation info
+ this.lblDate = $('#id-info-date');
+ this.lblApplication = $('#id-info-appname');
+ this.tblAuthor = $('#id-info-author table');
+ this.trAuthor = $('#id-info-add-author').closest('tr');
+ this.authorTpl = ' |
';
+
+ this.tblAuthor.on('click', function(e) {
+ var btn = $(e.target);
+ if (btn.hasClass('close')) {
+ var el = btn.closest('tr'),
+ idx = me.tblAuthor.find('tr').index(el);
+ el.remove();
+ // remove idx author from info
+ }
+ });
+
+ this.inputAuthor = new Common.UI.InputField({
+ el : $('#id-info-add-author'),
+ style : 'width: 200px;',
+ validateOnBlur: false,
+ placeHolder: this.txtAddAuthor
+ }).on('changed:after', function(input, newValue, oldValue) {
+ var val = newValue.trim();
+ if (!!val && val !== oldValue.trim()) {
+ val.split(/\s*[,;]\s*/).forEach(function(item){
+ var str = item.trim();
+ if (str) {
+ var div = $(Common.Utils.String.format(me.authorTpl, Common.Utils.String.htmlEncode(str)));
+ me.trAuthor.before(div);
+ // add str author to info
+ }
+ });
+ me.inputAuthor.setValue('');
+ }
+ });
this.rendered = true;
@@ -760,6 +860,7 @@ define([
Common.UI.BaseView.prototype.show.call(this,arguments);
this.updateStatisticInfo();
+ this.updateFileInfo();
},
hide: function() {
@@ -773,37 +874,86 @@ define([
if (!this.rendered)
return;
+ var visible = false;
doc = doc || {};
- this.lblTitle.text((doc.title) ? doc.title : '-');
-
if (doc.info) {
- if (doc.info.author)
- this.lblAuthor.text(doc.info.author);
- this._ShowHideInfoItem('author', doc.info.author!==undefined && doc.info.author!==null);
- if (doc.info.created )
- this.lblDate.text( doc.info.created );
- this._ShowHideInfoItem('date', doc.info.created!==undefined && doc.info.created!==null);
+ // server info
if (doc.info.folder )
this.lblPlacement.text( doc.info.folder );
- this._ShowHideInfoItem('placement', doc.info.folder!==undefined && doc.info.folder!==null);
+ visible = visible || this._ShowHideInfoItem(this.lblPlacement, doc.info.folder!==undefined && doc.info.folder!==null);
+ if (doc.info.author)
+ this.lblOwner.text(doc.info.author);
+ visible = visible || this._ShowHideInfoItem(this.lblOwner, doc.info.author!==undefined && doc.info.author!==null);
+ if (doc.info.uploaded)
+ this.lblUploaded.text(doc.info.uploaded.toLocaleString());
+ visible = visible || this._ShowHideInfoItem(this.lblUploaded, doc.info.uploaded!==undefined && doc.info.uploaded!==null);
} else
this._ShowHideDocInfo(false);
+ $('tr.divider.general', this.el)[visible?'show':'hide']();
+
var appname = (this.api) ? this.api.asc_getAppProps() : null;
if (appname) {
appname = (appname.asc_getApplication() || '') + ' ' + (appname.asc_getAppVersion() || '');
this.lblApplication.text(appname);
+ this._ShowHideInfoItem(this.lblApplication, !!appname);
+ }
+ var props = (this.api) ? this.api.asc_getCoreProps() : null;
+ if (props) {
+ var value = props.asc_getCreated();
+ if (value)
+ this.lblDate.text(value.toLocaleString());
+ this._ShowHideInfoItem(this.lblDate, !!value);
}
- this._ShowHideInfoItem('appname', !!appname);
},
- _ShowHideInfoItem: function(cls, visible) {
- $('tr.'+cls, this.el)[visible?'show':'hide']();
+ updateFileInfo: function() {
+ if (!this.rendered)
+ return;
+
+ var me = this,
+ props = (this.api) ? this.api.asc_getCoreProps() : null;
+ if (props) {
+ var visible = false;
+
+ var value = props.asc_getModified();
+ if (value)
+ this.lblModifyDate.text(value.toLocaleString());
+ visible = visible || this._ShowHideInfoItem(this.lblModifyDate, !!value);
+ value = props.asc_getLastModifiedBy();
+ if (value)
+ this.lblModifyBy.text(value);
+ visible = visible || this._ShowHideInfoItem(this.lblModifyBy, !!value);
+ $('tr.divider.modify', this.el)[visible?'show':'hide']();
+
+ value = '';//props.asc_getEditingTime();
+ if (value)
+ this.lblEditTime.text(value);
+ this._ShowHideInfoItem(this.lblEditTime, !!value);
+ value = props.asc_getTitle();
+ this.inputTitle.setValue(value || '');
+ value = props.asc_getSubject();
+ this.inputSubject.setValue(value || '');
+ value = props.asc_getDescription();
+ this.inputComment.setValue(value || '');
+
+ this.tblAuthor.find('tr:not(:last-of-type)').remove();
+ value = ['123"""<>', '456'];//props.asc_getAuthor();
+ value && value.forEach(function(item) {
+ var div = $(Common.Utils.String.format(me.authorTpl, Common.Utils.String.htmlEncode(item)));
+ me.trAuthor.before(div);
+ });
+ }
+ },
+
+ _ShowHideInfoItem: function(el, visible) {
+ el.closest('tr')[visible?'show':'hide']();
+ return visible;
},
_ShowHideDocInfo: function(visible) {
- this._ShowHideInfoItem('date', visible);
- this._ShowHideInfoItem('placement', visible);
- this._ShowHideInfoItem('author', visible);
+ this._ShowHideInfoItem(this.lblPlacement, visible);
+ this._ShowHideInfoItem(this.lblOwner, visible);
+ this._ShowHideInfoItem(this.lblUploaded, visible);
},
updateStatisticInfo: function() {
@@ -824,7 +974,7 @@ define([
this.api.asc_registerCallback('asc_onGetDocInfoStop', _.bind(this._onGetDocInfoEnd, this));
this.api.asc_registerCallback('asc_onDocInfo', _.bind(this._onDocInfo, this));
this.api.asc_registerCallback('asc_onGetDocInfoEnd', _.bind(this._onGetDocInfoEnd, this));
- this.api.asc_registerCallback('asc_onDocumentName', _.bind(this.onDocumentName, this));
+ // this.api.asc_registerCallback('asc_onDocumentName', _.bind(this.onDocumentName, this));
this.updateInfo(this.doc);
return this;
},
@@ -876,18 +1026,25 @@ define([
this.lblTitle.text((name) ? name : '-');
},
- txtTitle: 'Document Title',
- txtAuthor: 'Author',
- txtPlacement: 'Placement',
- txtDate: 'Creation Date',
- txtStatistics: 'Statistics',
+ txtPlacement: 'File Location',
+ txtOwner: 'Owner on cloud',
+ txtUploaded: 'Uploaded',
txtPages: 'Pages',
txtWords: 'Words',
txtParagraphs: 'Paragraphs',
txtSymbols: 'Symbols',
txtSpaces: 'Symbols with spaces',
txtLoading: 'Loading...',
- txtAppName: 'Application'
+ txtAppName: 'Application',
+ txtEditTime: 'Total Editing time',
+ txtTitle: 'Title',
+ txtSubject: 'Subject',
+ txtComment: 'Comment',
+ txtModifyDate: 'Last Modified',
+ txtModifyBy: 'Last Modified By',
+ txtDate: 'Created',
+ txtAuthor: 'Author',
+ txtAddAuthor: 'Add Author'
}, DE.Views.FileMenuPanels.DocumentInfo || {}));
DE.Views.FileMenuPanels.DocumentRights = Common.UI.BaseView.extend(_.extend({
diff --git a/apps/documenteditor/main/resources/less/filemenu.less b/apps/documenteditor/main/resources/less/filemenu.less
index 67712c42c..657fb30f0 100644
--- a/apps/documenteditor/main/resources/less/filemenu.less
+++ b/apps/documenteditor/main/resources/less/filemenu.less
@@ -304,29 +304,31 @@
}
table {
- td {
- padding: 0 20px 5px 0;
+ tr {
+ td {
+ padding: 0 20px 5px 0;
- &.left {
- padding: 5px 10px;
- text-align: right;
- width: 30%;
+ &.left {
+ padding: 5px 10px;
+ text-align: right;
+ width: 30%;
- label {
- font-weight: bold;
+ label {
+ font-weight: bold;
+ }
+ }
+
+ &.right {
+ padding: 5px 10px;
+ width: 70%;
}
}
- &.right {
- padding: 5px 10px;
- width: 70%;
+ &.divider {
+ height: 10px;
}
}
- &.divider {
- height: 10px;
- }
-
&.main {
width: 100%;
margin: 30px 0;
@@ -347,6 +349,22 @@
label, span {
font-size: 12px;
}
+
+ .close {
+ width: 16px;
+ height: 16px;
+ cursor: pointer;
+ display: inline-block;
+ vertical-align: middle;
+ margin-left: 5px;
+
+ background-position: @but-close-offset-x @but-close-offset-y;
+
+ &.over,
+ &:hover {
+ background-position: @but-close-offset-x @but-close-offset-y - 16px;
+ }
+ }
}
#panel-protect {