diff --git a/lib/scripts/media.js b/lib/scripts/media.js index 89925d8c81dbdea6e7e1806f3563809a6a539503..1e9d0328f48b3e5db81dcb5729c1ef77f8c5f203 100644 --- a/lib/scripts/media.js +++ b/lib/scripts/media.js @@ -272,7 +272,8 @@ var dw_mediamanager = { cb = String.prototype.match.call(document.location, /&onselect=([^&]+)/); cb = cb ? cb[1].replace(/[^\w]+/, '') : 'dw_mediamanager_item_select'; - opener[cb](edid, id, opts, dw_mediamanager.align); + // arguments here only match the dw_mediamanager_item_select function, these will need to change if you override cb with onselect GET param + opener[cb](edid, id, opts, dw_mediamanager.align, dw_mediamanager.keepopen); if (!dw_mediamanager.keepopen) { window.close(); } @@ -937,14 +938,28 @@ var dw_mediamanager = { * @param {string} opts * @param {string} align [none, left, center, right] */ -function dw_mediamanager_item_select(edid, mediaid, opts, align) { +function dw_mediamanager_item_select(edid, mediaid, opts, align, keepopen) { var alignleft = ''; var alignright = ''; + + // Get the 2 characters after the cursor to check if we're currently inside an image tag + var cursorInImageTag = false; + var textArea = jQuery('#' + edid)[0]; + var selection = DWgetSelection(textArea); + selection.end = selection.end + 2; + var charsAfterCursor = selection.getText(); + if (charsAfterCursor === '}}') { + cursorInImageTag = true; + } + if (align !== '1') { alignleft = align === '2' ? '' : ' '; alignright = align === '4' ? '' : ' '; } - + if (keepopen && cursorInImageTag) { + selection.start = selection.start + 2; + DWsetSelection(selection); + } insertTags(edid, '{{' + alignleft + mediaid + opts + alignright + '|', '}}', ''); }