diff --git a/apps/documenteditor/main/app/controller/Links.js b/apps/documenteditor/main/app/controller/Links.js
index 343b79723..2b51b8a5a 100644
--- a/apps/documenteditor/main/app/controller/Links.js
+++ b/apps/documenteditor/main/app/controller/Links.js
@@ -174,7 +174,7 @@ define([
need_disable = in_header;
this.view.btnCaption.setDisabled(need_disable);
- need_disable = paragraph_locked || header_locked || in_image;
+ need_disable = paragraph_locked || header_locked;
this.view.btnCrossRef.setDisabled(need_disable);
},
diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js
index bf4f9871b..1dea0b7a6 100644
--- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js
+++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js
@@ -89,7 +89,7 @@ define([
'
',
'',
'',
- '',
+ '',
' | ',
'
',
'',
@@ -150,15 +150,7 @@ define([
cls : 'input-group-nr',
data : []
});
- this.cmbReference.on('selected', _.bind(function (combo, record) {
- if (this._changedProps) {
- if (!this._changedProps.get_TextPr()) this._changedProps.put_TextPr(new AscCommonWord.CTextPr());
- this._changedProps.get_TextPr().put_FontSize((record.value>0) ? record.value : undefined);
- }
- if (this.api) {
- this.api.SetDrawImagePreviewBullet('bulleted-list-preview', this.props, this.level, this.type==2);
- }
- }, this));
+ this.cmbReference.on('selected', _.bind(this.onReferenceSelected, this));
this.chInsertAs = new Common.UI.CheckBox({
el: $window.find('#id-dlg-cross-insert-as'),
@@ -187,12 +179,17 @@ define([
this.refList = new Common.UI.ListView({
el: $window.find('#id-dlg-cross-list'),
- store: new Common.UI.DataViewStore()
+ store: new Common.UI.DataViewStore(),
+ itemTemplate: _.template('<%= value %>
')
});
- this.refList.on('item:select', _.bind(this.onSelectReference, this));
this.lblWhich = $window.find('#id-dlg-cross-which');
+ this.btnInsert = new Common.UI.Button({
+ el: $window.find('.primary'),
+ disabled: true
+ });
+
this.afterRender();
},
@@ -205,6 +202,7 @@ define([
this.options.handler.call(this, state, {});
}
if (state=='ok') {
+ this.insertReference();
return;
}
this.close();
@@ -226,13 +224,41 @@ define([
}
},
- onSelectReference: function(listView, itemView, record) {
- // record.get('value');
+ insertReference: function() {
+ var record = this.refList.getSelectedRec(),
+ typeRec = this.cmbType.getSelectedRecord(),
+ type = (typeRec.type==1 || typeRec.value>4) ? 5 : typeRec.value,
+ reftype = this.cmbReference.getValue(),
+ link = this.chInsertAs.getValue()=='checked',
+ below = this.chBelowAbove.getValue()=='checked',
+ separator = (this.chSeparator.getValue()=='checked') ? this.inputSeparator.getValue() : undefined;
+
+ switch (type) {
+ case 0: // paragraph
+ case 1: // heading
+ this.api.asc_AddCrossRefToParagraph(record.get('para'), reftype, link, below, separator);
+ break;
+ case 2: // bookmark
+ this.api.asc_AddCrossRefToBookmark(record.get('value'), reftype, link, below, separator);
+ break;
+ case 3: // footnote
+ case 4: // endnote
+ this.api.asc_AddCrossRefToNote(record.get('para'), reftype, link, below);
+ break;
+ case 5: // caption
+ if (reftype==Asc.c_oAscDocumentRefenceToType.OnlyCaptionText && record.get('para').asc_canAddRefToCaptionText()===false) {
+ Common.UI.warning({
+ msg : this.textEmpty
+ });
+ } else
+ this.api.asc_AddCrossRefToCaption(record.get('value'), record.get('para'), reftype, link, below);
+ break;
+ }
},
onTypeSelected: function (combo, record) {
var arr = [],
- str = this.textWhich;
+ str = this.textWhich, type = 5;
if (record.type==1 || record.value > 4) {
// custom labels from caption dialog and Equation, Figure, Table
arr = [
@@ -243,6 +269,7 @@ define([
{ value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow }
];
} else {
+ type = record.value;
switch (record.value) {
case 0: // paragraph
arr = [
@@ -300,6 +327,58 @@ define([
this.cmbReference.setData(arr);
this.cmbReference.setValue(arr[0].value);
this.lblWhich.text(str);
+ this.refreshReferences(type);
+ },
+
+ refreshReferences: function(type) {
+ var store = this.refList.store,
+ arr = [],
+ props;
+ switch (type) {
+ case 0: // paragraph
+ props = this.api.asc_GetAllNumberedParagraphs();
+ break;
+ case 1: // heading
+ props = this.api.asc_GetAllHeadingParagraphs();
+ break;
+ case 2: // bookmark
+ props = this.api.asc_GetBookmarksManager();
+ break;
+ case 3: // footnote
+ props = this.api.asc_GetAllFootNoteParagraphs();
+ break;
+ case 4: // endnote
+ props = this.api.asc_GetAllEndNoteParagraphs();
+ break;
+ case 5: // caption
+ props = this.api.asc_GetAllCaptionParagraphs(this.cmbType.getSelectedRecord().displayValue);
+ break;
+ }
+ if (type==2) { // bookmark
+ var count = props.asc_GetCount();
+ for (var i=0; i0) {
+ var rec = store.at(0);
+ this.refList.selectRecord(rec);
+ this.refList.scrollToRecord(rec);
+ }
+ this.btnInsert.setDisabled(arr.length<1);
+ },
+
+ onReferenceSelected: function(combo, record) {
+
},
txtTitle: 'Cross-reference',
@@ -340,7 +419,8 @@ define([
textWhichBookmark: 'For which bookmark',
textWhichNote: 'For which footnote',
textWhichEndnote: 'For which endnote',
- textWhichPara: 'For which numbered item'
+ textWhichPara: 'For which numbered item',
+ textEmpty: 'The request reference is empty.'
}, DE.Views.CrossReferenceDialog || {}))
});
\ No newline at end of file