diff --git a/e107_admin/image.php b/e107_admin/image.php index 71165be6a..e99ba48e7 100644 --- a/e107_admin/image.php +++ b/e107_admin/image.php @@ -1688,7 +1688,7 @@ class media_admin_ui extends e_admin_ui ".LAN_SAVE." - + ".LAN_CANCEL." "; @@ -1742,7 +1742,7 @@ class media_admin_ui extends e_admin_ui 'action' =>'icon', // Used by AJAX to identify correct function. 'perPage' => 80, 'gridClass' => 'media-carousel-item-glyph pull-left', - 'bbcode' => 'image', + 'bbcode' => 'icon', 'close' => 'true' ); @@ -1756,7 +1756,6 @@ class media_admin_ui extends e_admin_ui $images = e107::getMedia()->getIcons('',$frm,$limit); - foreach($images as $val) { $items[] = array( diff --git a/e107_handlers/e_parse_class.php b/e107_handlers/e_parse_class.php index 04e23a32e..f3abdc9f0 100644 --- a/e107_handlers/e_parse_class.php +++ b/e107_handlers/e_parse_class.php @@ -4315,7 +4315,7 @@ class e_parser } elseif($icon[0] === '{') { - $path = $this->replaceConstants($icon,'full'); + $path = $this->replaceConstants($icon,'abs'); } elseif(!empty($parm['legacy'])) { diff --git a/e107_handlers/media_class.php b/e107_handlers/media_class.php index 9ce55ee6d..1db7e803a 100644 --- a/e107_handlers/media_class.php +++ b/e107_handlers/media_class.php @@ -1362,10 +1362,12 @@ class e_media if(!empty($data['close']) && E107_DEBUG_LEVEL < 1) { - $select .= " e-dialog-save e-dialog-close"; + $select .= "e-dialog-close"; $close = " data-close='true' "; } + // e-dialog-save + $style = varset($data['style'],''); $class = varset($data['class'],''); $dataPreview = !empty($data['previewHtml']) ? base64_encode($data['previewHtml']) : ''; diff --git a/e107_web/js/core/mediaManager.js b/e107_web/js/core/mediaManager.js index 02e1bea7d..14f46d24e 100644 --- a/e107_web/js/core/mediaManager.js +++ b/e107_web/js/core/mediaManager.js @@ -49,7 +49,23 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}}; $(context).on('click', '.e-media-select', function (e) { e.preventDefault(); - e107.mediaManager.eMediaSelect(this); + + var previewHTML = $(this).attr('data-preview-html'); + + // console.log(previewHTML); + + if(previewHTML) // MediaPicker v2.1.9 + { + e107.mediaManager.eMediaSelectProcess(this); + // e107.mediaManager.eMediaSelect(this); + } + else // imagepicker, iconpicker + { + e107.mediaManager.eMediaSelect(this); + } + + + }); // Must be defined after e-media-select. @@ -297,7 +313,153 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}}; } }; + /** + * New in v2.1.9 to eventually replace the eMediaSelect + * Handle Media-Picker selection. + * @param {object} that + * Element that was clicked. + * + * @returns {boolean} + */ + e107.mediaManager.eMediaSelectProcess = function (that) + { + + var $this = $(that); + + var id = $this.attr('data-id'); // ID of the Media Manager Item. + var target = $this.attr('data-target'); // Path of the Media Manager Item. + var path = $this.attr('data-path'); + var preview = $this.attr('data-preview'); + var previewHTML = $this.attr('data-preview-html'); + var src = $this.attr('data-src'); + var bbcode = $this.attr('data-bbcode'); // TinyMce/Textarea insert mode- + var name = $this.attr('data-name'); // Title of the Media Manager Item. + var width = $this.attr('data-width'); + var height = ''; // Disable for now - will be updated by bb parser. $this.attr('data-height'); + var type = $this.attr('data-type'); + var alt = $this.attr('data-alt'); + + var bbpath = ''; + + // variable placeholders. + var $bbcodeHolder = $('#bbcode_holder'); + var $htmlHolder = $('#html_holder'); + var $srcHolder = $('#src'); + var $pathHolder = $('#path'); + var $preview = $('img#preview'); + + + + // Remove "selected" class from elements. + $('.e-media-select').removeClass('media-select-active'); + + // Add "selected" class to clicked element. + $this.addClass('media-select-active'); + $this.closest('img').addClass('active'); + + // convert base64 encoded HTML preview information to HTML. + if(previewHTML) + { + var previewSrc = atob(previewHTML).trim(); + } + + if($htmlHolder.length > 0) + { + $htmlHolder.val(previewSrc); + } + + if($pathHolder.length > 0) + { + $pathHolder.attr('value', path); + } + + switch(type) { + + case 'file': + bbpath = '[file=' + id + ']' + name + '[/file]'; + $bbcodeHolder.val(bbpath); + break; + + case 'video': + case 'glyph': + case 'icon': + case 'audio': + $srcHolder.val(''); + bbpath = '[' + bbcode + ']' + path + '[/' + bbcode + ']'; + $bbcodeHolder.val(bbpath); + break; + + + case 'image': + $srcHolder.attr('value', src); + + // Populate Attributes Tab with Info. + + $('#width').val(width); + $('#height').val(height); + $('#alt').val(alt); + + e107.mediaManager.eMediaAttribute($this, bbcode); + $preview.attr('src',src); + // $preview.val(preview); + $srcHolder.attr('value', src); + + break; + + } + + console.log("Mode: MediaPicker"); + console.log("Src:" + src); + console.log("Bbpath: " + $bbcodeHolder.val()); + console.log("Preview: "+preview); + console.log("Save Path: "+path); + + // Update mediapicker preview with html content. + $('div#' + target + "_prev", window.top.document).html(previewSrc); // set new value + $('span#' + target + "_prev", window.top.document).html(previewSrc); // set new value + + // Update hidden form targets with data that can be saved to the DB. + if(target !== '') + { + if($('input#' + target) !== undefined) + { + $('input#' + target, window.top.document).attr('value', path); // set new value + } + + // Array mode: + var pathTarget = target + '-path'; + var nameTarget = target + '-name'; + var idTarget = target + '-id'; + + if($('input#' + pathTarget) !== undefined) + { + $('input#' + pathTarget, window.top.document).attr('value', path); // set new value + } + + if($('input#' + nameTarget) !== undefined) + { + $('input#' + nameTarget, window.top.document).attr('value', name); // set new value + } + + if($('input#' + idTarget) !== undefined) + { + $('input#' + idTarget, window.top.document).attr('value', id); // set new value + } + } + + return false; + + }; + + + + + + + + /** + * @deprecated - to eventually be replaced by the method above. * @param {object} that * Element that was clicked. * @@ -368,7 +530,7 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}}; if(bbcode === "glyph" && $bbcodeHolder.length > 0) { var $target = $('div#' + target + "_prev", window.top.document); - + // Only if the triggering element is not an icon-picker. if($target.length === 0 || !$target.hasClass('image-selector')) { @@ -451,9 +613,6 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}}; console.log("Mode: Image"); } - console.log("Bbpath: " + bbpath); - console.log("Preview: "+preview); - console.log("Save Path: "+path);