1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-31 20:00:37 +02:00

MediaPicker Select JS rewrite.

toIcon() fallback set to 'abs' URLs instead of 'full' URLs.
Fix for double-entry of mediapicker into TinyMce.
This commit is contained in:
Cameron
2018-08-13 17:42:06 -07:00
parent a2e082c75d
commit 66210474bd
4 changed files with 170 additions and 10 deletions

View File

@@ -1688,7 +1688,7 @@ class media_admin_ui extends e_admin_ui
<button type='submit' class='btn btn-success submit e-dialog-save' data-bbcode='".$options['bbcode']."' data-target='".$this->getQuery('tagid')."' name='save_image' value='Save it' >
<span>".LAN_SAVE."</span>
</button>
<button type='submit' class=' btn btn-default btn-secondary submit e-dialog-close' name='cancel_image' value='Cancel' >
<button type='submit' class=' btn btn-default btn-secondary submit e-dialog-close' name='cancel_image' value='Cancel' data-close='true'>
<span>".LAN_CANCEL."</span>
</button>
</div>";
@@ -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(

View File

@@ -4315,7 +4315,7 @@ class e_parser
}
elseif($icon[0] === '{')
{
$path = $this->replaceConstants($icon,'full');
$path = $this->replaceConstants($icon,'abs');
}
elseif(!empty($parm['legacy']))
{

View File

@@ -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']) : '';

View File

@@ -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.
*
@@ -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);