diff options
author | Andreas Gohr <gohr@cosmocode.de> | 2016-02-22 17:01:24 +0100 |
---|---|---|
committer | Andreas Gohr <gohr@cosmocode.de> | 2016-02-22 17:01:24 +0100 |
commit | f7f7fb6c2b301fc145bf78687261f89e446e89ae (patch) | |
tree | dc666de7c0298807e8e784f249b055868e8856c2 /lib/scripts/media.js | |
parent | 6723420421f809bba2008fec5f15bf8190216130 (diff) | |
download | dokuwiki-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.js | 37 |
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); |