diff -r e202798d3732 -r 82860da48dbb src/pyams_content/zmi/resources/js/pyams_content.js
--- a/src/pyams_content/zmi/resources/js/pyams_content.js Fri Nov 09 10:41:05 2018 +0100
+++ b/src/pyams_content/zmi/resources/js/pyams_content.js Fri Nov 09 15:22:13 2018 +0100
@@ -49,23 +49,55 @@
icon: 'cloud-check',
tooltip: "Insert internal link",
image: '/--static--/pyams_content/img/internal-link.png',
+ stateSelector: 'a[href^="oid://"]',
onclick: function() {
+ var data = {},
+ dom = editor.dom,
+ selection = editor.selection,
+ selectedElm = selection.getNode(),
+ anchorElm = dom.getParent(selectedElm, 'a[href]');
+ data.text = anchorElm ? (anchorElm.innerText || anchorElm.textContent) : selection.getContent({format: 'text'});
+ data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';
editor.windowManager.open({
title: "Insert internal link",
body: [
{
type: 'textbox',
name: 'oid',
- label:'Internal number'
+ label:'Internal number',
+ value: data.href,
+ onchange: function() {
+ data.href = this.value();
+ }
}, {
type: 'textbox',
name: 'title',
label: 'Link title',
- value: editor.selection.getContent()
+ value: data.text,
+ onchange: function() {
+ data.text = this.value();
+ }
}
],
onsubmit: function(e) {
- editor.insertContent('' + e.data.title + '');
+ editor.focus(); // activate change events
+ var href = data.href;
+ if (href) {
+ if (anchorElm) {
+ if ('innerText' in anchorElm) {
+ anchorElm.innerText = data.text;
+ } else {
+ anchorElm.textContent = data.text;
+ }
+ dom.setAttribs(anchorElm, {href: data.href});
+ selection.select(anchorElm);
+ editor.undoManager.add();
+ } else {
+ editor.insertContent('' + e.data.title + '');
+ }
+ } else {
+ editor.execCommand('unlink');
+ }
}
});
}