mirror of
https://github.com/e107inc/e107.git
synced 2025-08-05 06:07:32 +02:00
Filepicker now saves media-manager id and name of file when array is used.
This commit is contained in:
@@ -776,30 +776,54 @@ class e_form
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* File Picker
|
||||||
|
* @param string name eg. 'myfield' or 'myfield[]'
|
||||||
|
* @param mixed default
|
||||||
|
* @param string label
|
||||||
|
* @param mixed sc_parameters
|
||||||
|
*/
|
||||||
function filepicker($name, $default, $label = '', $sc_parameters = '')
|
function filepicker($name, $default, $label = '', $sc_parameters = '')
|
||||||
{
|
{
|
||||||
$tp = e107::getParser();
|
$tp = e107::getParser();
|
||||||
$name_id = $this->name2id($name);
|
$name_id = $this->name2id($name);
|
||||||
|
|
||||||
if(is_string($sc_parameters))
|
if(is_string($sc_parameters))
|
||||||
{
|
{
|
||||||
if(strpos($sc_parameters, '=') === false) $sc_parameters = 'media='.$sc_parameters;
|
if(strpos($sc_parameters, '=') === false) $sc_parameters = 'media='.$sc_parameters;
|
||||||
parse_str($sc_parameters, $sc_parameters);
|
parse_str($sc_parameters, $sc_parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
$cat = vartrue($sc_parameters['media']) ? $tp->toDB($sc_parameters['media']) : "_common_file";
|
$cat = vartrue($sc_parameters['media']) ? $tp->toDB($sc_parameters['media']) : "_common_file";
|
||||||
|
|
||||||
$default_label = ($default) ? $default : "Choose a file";
|
if($sc_parameters['data'] === 'array')
|
||||||
$label = "<span id='{$name_id}_prev' class='btn btn-default btn-small'>".basename($default_label)."</span>";
|
{
|
||||||
|
// Do not use $this->hidden() method - as it will break 'id' value.
|
||||||
|
$ret .= "<input type='hidden' name='".$name."[path]' id='".$this->name2id($name."[path]")."' value='".varset($default['path'])."' />";
|
||||||
|
$ret .= "<input type='hidden' name='".$name."[name]' id='".$this->name2id($name."[name]")."' value='".varset($default['name'])."' />";
|
||||||
|
$ret .= "<input type='hidden' name='".$name."[id]' id='".$this->name2id($name."[id]")."' value='".varset($default['id'])."' />";
|
||||||
|
|
||||||
|
$default = $default['path'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ret .= "<input type='hidden' name='{$name}' id='{$name_id}' value='{$default}' style='width:400px' />";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$default_label = ($default) ? $default : "Choose a file";
|
||||||
|
$label = "<span id='{$name_id}_prev' class='btn btn-default btn-small'>".basename($default_label)."</span>";
|
||||||
|
|
||||||
$sc_parameters['mode'] = 'main';
|
$sc_parameters['mode'] = 'main';
|
||||||
$sc_parameters['action'] = 'dialog';
|
$sc_parameters['action'] = 'dialog';
|
||||||
|
|
||||||
|
|
||||||
// $ret .= $this->mediaUrl($cat, $label,$name_id,"mode=dialog&action=list");
|
// $ret .= $this->mediaUrl($cat, $label,$name_id,"mode=dialog&action=list");
|
||||||
$ret .= $this->mediaUrl($cat, $label,$name_id,$sc_parameters);
|
$ret .= $this->mediaUrl($cat, $label,$name_id,$sc_parameters);
|
||||||
$ret .= "<input type='hidden' name='{$name}' id='{$name_id}' value='{$default}' style='width:400px' />";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|
||||||
|
|
||||||
@@ -3396,11 +3420,19 @@ class e_form
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'files':
|
case 'files':
|
||||||
|
|
||||||
|
if($attributes['data'] == 'array')
|
||||||
|
{
|
||||||
|
$parms['data'] = 'array';
|
||||||
|
}
|
||||||
|
|
||||||
$ret = '<ol>';
|
$ret = '<ol>';
|
||||||
for ($i=0; $i < 5; $i++)
|
for ($i=0; $i < 5; $i++)
|
||||||
{
|
{
|
||||||
$k = $key.'['.$i.'][path]';
|
// $k = $key.'['.$i.'][path]';
|
||||||
$ival = $value[$i]['path'];
|
// $ival = $value[$i]['path'];
|
||||||
|
$k = $key.'['.$i.']';
|
||||||
|
$ival = $value[$i];
|
||||||
$ret .= '<li>'.$this->filepicker($k, $ival, defset($label, $label), $parms).'</li>';
|
$ret .= '<li>'.$this->filepicker($k, $ival, defset($label, $label), $parms).'</li>';
|
||||||
}
|
}
|
||||||
$ret .= '</ol>';
|
$ret .= '</ol>';
|
||||||
|
@@ -119,13 +119,13 @@ $(document).ready(function()
|
|||||||
// console.log(this);
|
// console.log(this);
|
||||||
|
|
||||||
|
|
||||||
var id = $(this).attr('data-id');
|
var id = $(this).attr('data-id'); // id of the mm item
|
||||||
var target = $(this).attr('data-target');
|
var target = $(this).attr('data-target');
|
||||||
var path = $(this).attr('data-path');
|
var path = $(this).attr('data-path'); // path of the mm item
|
||||||
var preview = $(this).attr('data-preview');
|
var preview = $(this).attr('data-preview');
|
||||||
var src = $(this).attr('data-src');
|
var src = $(this).attr('data-src');
|
||||||
var bbcode = $(this).attr('data-bbcode'); // TinyMce/Textarea insert mode
|
var bbcode = $(this).attr('data-bbcode'); // TinyMce/Textarea insert mode
|
||||||
var name = $(this).attr('data-name');
|
var name = $(this).attr('data-name'); // title of the mm item
|
||||||
var width = $(this).attr('data-width');
|
var width = $(this).attr('data-width');
|
||||||
var height = ''; // disable for now - will be updated by bb parser. // $(this).attr('data-height');
|
var height = ''; // disable for now - will be updated by bb parser. // $(this).attr('data-height');
|
||||||
var type = $(this).attr('data-type');
|
var type = $(this).attr('data-type');
|
||||||
@@ -198,10 +198,36 @@ $(document).ready(function()
|
|||||||
$('div#' + target + "_prev", window.top.document).html(preview); // set new value
|
$('div#' + target + "_prev", window.top.document).html(preview); // set new value
|
||||||
$('span#' + target + "_prev", window.top.document).html(preview); // set new value
|
$('span#' + target + "_prev", window.top.document).html(preview); // set new value
|
||||||
|
|
||||||
// see $frm->filepicker()
|
// @see $frm->filepicker()
|
||||||
if(target !='')
|
if(target !='')
|
||||||
{
|
{
|
||||||
$('input#' + target , window.top.document).attr('value',path); // set new value
|
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
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user