mirror of
https://github.com/silverstripe/silverstripe-dms
synced 2024-10-22 14:05:56 +02:00
119 lines
3.6 KiB
JavaScript
Executable File
119 lines
3.6 KiB
JavaScript
Executable File
(function ($) {
|
|
"use strict";
|
|
|
|
$.entwine('ss', function ($) {
|
|
$('form.htmleditorfield-linkform input[name=LinkType]').entwine({
|
|
onchange: function (e) {
|
|
this._super(e);
|
|
|
|
var form = $('form.htmleditorfield-linkform');
|
|
var show = false;
|
|
|
|
if (this.attr('value') === 'document') {
|
|
if (this.is(':checked')) {
|
|
show = true;
|
|
}
|
|
}
|
|
|
|
// Hide or show the additional document link addition tool
|
|
if (show) {
|
|
form.find('.ss-add').show();
|
|
} else {
|
|
form.find('.ss-add').hide();
|
|
}
|
|
},
|
|
onadd: function (e) {
|
|
this.change();
|
|
}
|
|
});
|
|
|
|
$('form.htmleditorfield-linkform').entwine({
|
|
getShortcodeKey: function () {
|
|
return this.find(':input[name=DMSShortcodeHandlerKey]').val();
|
|
},
|
|
insertLink: function () {
|
|
var href, target = null;
|
|
var checkedValue = this.find(':input[name=LinkType]:checked').val();
|
|
if (checkedValue === 'document') {
|
|
href = '[' + this.getShortcodeKey() + ',id=' + this.find('.selected-document').data('document-id') + ']';
|
|
|
|
// Determine target
|
|
if (this.find(':input[name=TargetBlank]').is(':checked')) {
|
|
target = '_blank';
|
|
}
|
|
|
|
var attributes = {
|
|
href: href,
|
|
target: target,
|
|
class: 'documentLink',
|
|
// Title is the text of the selected document
|
|
title: this.find('.selected-document').text()
|
|
};
|
|
|
|
this.modifySelection(function (ed) {
|
|
ed.insertLink(attributes);
|
|
});
|
|
|
|
this.updateFromEditor();
|
|
return false;
|
|
} else {
|
|
this._super();
|
|
}
|
|
},
|
|
getCurrentLink: function () {
|
|
var selectedEl = this.getSelection(), href = "", target = "", title = "", action = "insert", style_class = "";
|
|
var linkDataSource = null;
|
|
if (selectedEl.length) {
|
|
if (selectedEl.is('a')) {
|
|
linkDataSource = selectedEl;
|
|
} else {
|
|
linkDataSource = selectedEl = selectedEl.parents('a:first');
|
|
}
|
|
}
|
|
|
|
if (linkDataSource && linkDataSource.length) {
|
|
this.modifySelection(function (ed) {
|
|
ed.selectNode(linkDataSource[0]);
|
|
});
|
|
}
|
|
|
|
// Is anchor not a link
|
|
if (!linkDataSource.attr('href')) {
|
|
linkDataSource = null;
|
|
}
|
|
|
|
if (linkDataSource) {
|
|
href = linkDataSource.attr('href');
|
|
target = linkDataSource.attr('target');
|
|
title = linkDataSource.attr('title');
|
|
style_class = linkDataSource.attr('class');
|
|
href = this.getEditor().cleanLink(href, linkDataSource);
|
|
action = "update";
|
|
}
|
|
|
|
// Match a document or call the regular link handling
|
|
if (href.match(new RegExp('^\\[' + this.getShortcodeKey() + '(\s*|%20|,)?id=([0-9]+)\\]?$', 'i'))) {
|
|
var returnArray = {
|
|
LinkType: 'document',
|
|
DocumentID: RegExp.$2,
|
|
Description: title
|
|
};
|
|
|
|
// Show the selected document
|
|
$('.document-add-existing').selectdocument(returnArray.DocumentID,returnArray.Description);
|
|
|
|
// Select the correct radio button
|
|
$('form.htmleditorfield-linkform input[name=LinkType][value=document]').click();
|
|
|
|
return returnArray;
|
|
} else {
|
|
// Clear the selected document
|
|
$('.document-add-existing').selectdocument();
|
|
$('form.htmleditorfield-linkform .ss-add.ss-upload').hide();
|
|
return this._super();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}(jQuery));
|