aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/lib/scripts/media.js
diff options
context:
space:
mode:
authorAndreas Gohr <gohr@cosmocode.de>2016-02-22 17:01:24 +0100
committerAndreas Gohr <gohr@cosmocode.de>2016-02-22 17:01:24 +0100
commitf7f7fb6c2b301fc145bf78687261f89e446e89ae (patch)
treedc666de7c0298807e8e784f249b055868e8856c2 /lib/scripts/media.js
parent6723420421f809bba2008fec5f15bf8190216130 (diff)
downloaddokuwiki-f7f7fb6c2b301fc145bf78687261f89e446e89ae.tar.gz
dokuwiki-f7f7fb6c2b301fc145bf78687261f89e446e89ae.zip
make reuse of mediamanager popup easier
This introduces a mechanism to override what happens when a media item is selected in the media manager popup by providing a callback name in the URL. The default implementation just does what dw_mediamanager.insert did before and calls insertTags()
Diffstat (limited to 'lib/scripts/media.js')
-rw-r--r--lib/scripts/media.js37
1 files changed, 28 insertions, 9 deletions
diff --git a/lib/scripts/media.js b/lib/scripts/media.js
index 2995addfd..c52226eaa 100644
--- a/lib/scripts/media.js
+++ b/lib/scripts/media.js
@@ -214,14 +214,12 @@ var dw_mediamanager = {
* @author Pierre Spring <pierre.spring@caillou.ch>
*/
insert: function (id) {
- var opts, alignleft, alignright, edid, s;
+ var opts, cb, edid, s;
// set syntax options
dw_mediamanager.$popup.dialog('close');
opts = '';
- alignleft = '';
- alignright = '';
if ({img: 1, swf: 1}[dw_mediamanager.ext] === 1) {
@@ -254,16 +252,14 @@ var dw_mediamanager = {
}
}
}
- if (dw_mediamanager.align !== '1') {
- alignleft = dw_mediamanager.align === '2' ? '' : ' ';
- alignright = dw_mediamanager.align === '4' ? '' : ' ';
- }
}
}
edid = String.prototype.match.call(document.location, /&edid=([^&]+)/);
- opener.insertTags(edid ? edid[1] : 'wiki__text',
- '{{'+alignleft+id+opts+alignright+'|','}}','');
+ edid = edid ? edid[1] : 'wiki__text';
+ cb = String.prototype.match.call(document.location, /&onselect=([^&]+)/);
+ cb = cb ? cb[1] : 'dw_mediamanager_item_select';
+ opener[cb](edid, id, opts, dw_mediamanager.align);
if(!dw_mediamanager.keepopen) {
window.close();
}
@@ -271,6 +267,8 @@ var dw_mediamanager = {
return false;
},
+
+
/**
* Prefills the wikiname.
*
@@ -921,4 +919,25 @@ var dw_mediamanager = {
}
};
+/**
+ * Default implementation for the media manager's select action
+ *
+ * Can be overriden with the onselect URL parameter. Is called on the opener context
+ *
+ * @param {string} edid
+ * @param {string} mediaid
+ * @param {string} opts
+ * @param {string} align [none, left, center, right]
+ */
+function dw_mediamanager_item_select(edid, mediaid, opts, align) {
+ var alignleft = '';
+ var alignright = '';
+ if (align !== '1') {
+ alignleft = align === '2' ? '' : ' ';
+ alignright = align === '4' ? '' : ' ';
+ }
+
+ insertTags(edid, '{{' + alignleft + mediaid + opts + alignright + '|', '}}', '');
+}
+
jQuery(dw_mediamanager.init);