mirror of
https://github.com/e107inc/e107.git
synced 2025-08-01 20:30:39 +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:
@@ -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' >
|
<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>
|
<span>".LAN_SAVE."</span>
|
||||||
</button>
|
</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>
|
<span>".LAN_CANCEL."</span>
|
||||||
</button>
|
</button>
|
||||||
</div>";
|
</div>";
|
||||||
@@ -1742,7 +1742,7 @@ class media_admin_ui extends e_admin_ui
|
|||||||
'action' =>'icon', // Used by AJAX to identify correct function.
|
'action' =>'icon', // Used by AJAX to identify correct function.
|
||||||
'perPage' => 80,
|
'perPage' => 80,
|
||||||
'gridClass' => 'media-carousel-item-glyph pull-left',
|
'gridClass' => 'media-carousel-item-glyph pull-left',
|
||||||
'bbcode' => 'image',
|
'bbcode' => 'icon',
|
||||||
'close' => 'true'
|
'close' => 'true'
|
||||||
|
|
||||||
);
|
);
|
||||||
@@ -1756,7 +1756,6 @@ class media_admin_ui extends e_admin_ui
|
|||||||
$images = e107::getMedia()->getIcons('',$frm,$limit);
|
$images = e107::getMedia()->getIcons('',$frm,$limit);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach($images as $val)
|
foreach($images as $val)
|
||||||
{
|
{
|
||||||
$items[] = array(
|
$items[] = array(
|
||||||
|
@@ -4315,7 +4315,7 @@ class e_parser
|
|||||||
}
|
}
|
||||||
elseif($icon[0] === '{')
|
elseif($icon[0] === '{')
|
||||||
{
|
{
|
||||||
$path = $this->replaceConstants($icon,'full');
|
$path = $this->replaceConstants($icon,'abs');
|
||||||
}
|
}
|
||||||
elseif(!empty($parm['legacy']))
|
elseif(!empty($parm['legacy']))
|
||||||
{
|
{
|
||||||
|
@@ -1362,10 +1362,12 @@ class e_media
|
|||||||
|
|
||||||
if(!empty($data['close']) && E107_DEBUG_LEVEL < 1)
|
if(!empty($data['close']) && E107_DEBUG_LEVEL < 1)
|
||||||
{
|
{
|
||||||
$select .= " e-dialog-save e-dialog-close";
|
$select .= "e-dialog-close";
|
||||||
$close = " data-close='true' ";
|
$close = " data-close='true' ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// e-dialog-save
|
||||||
|
|
||||||
$style = varset($data['style'],'');
|
$style = varset($data['style'],'');
|
||||||
$class = varset($data['class'],'');
|
$class = varset($data['class'],'');
|
||||||
$dataPreview = !empty($data['previewHtml']) ? base64_encode($data['previewHtml']) : '';
|
$dataPreview = !empty($data['previewHtml']) ? base64_encode($data['previewHtml']) : '';
|
||||||
|
@@ -49,7 +49,23 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}};
|
|||||||
$(context).on('click', '.e-media-select', function (e)
|
$(context).on('click', '.e-media-select', function (e)
|
||||||
{
|
{
|
||||||
e.preventDefault();
|
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.
|
// 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
|
* @param {object} that
|
||||||
* Element that was clicked.
|
* Element that was clicked.
|
||||||
*
|
*
|
||||||
@@ -451,9 +613,6 @@ var e107 = e107 || {'settings': {}, 'behaviors': {}};
|
|||||||
console.log("Mode: Image");
|
console.log("Mode: Image");
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("Bbpath: " + bbpath);
|
|
||||||
console.log("Preview: "+preview);
|
|
||||||
console.log("Save Path: "+path);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user