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,11 +776,18 @@ 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 = '')
|
||||
{
|
||||
$tp = e107::getParser();
|
||||
$name_id = $this->name2id($name);
|
||||
|
||||
if(is_string($sc_parameters))
|
||||
{
|
||||
if(strpos($sc_parameters, '=') === false) $sc_parameters = 'media='.$sc_parameters;
|
||||
@@ -789,6 +796,21 @@ class e_form
|
||||
|
||||
$cat = vartrue($sc_parameters['media']) ? $tp->toDB($sc_parameters['media']) : "_common_file";
|
||||
|
||||
if($sc_parameters['data'] === 'array')
|
||||
{
|
||||
// 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>";
|
||||
|
||||
@@ -798,7 +820,9 @@ class e_form
|
||||
|
||||
// $ret .= $this->mediaUrl($cat, $label,$name_id,"mode=dialog&action=list");
|
||||
$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;
|
||||
|
||||
@@ -3396,11 +3420,19 @@ class e_form
|
||||
break;
|
||||
|
||||
case 'files':
|
||||
|
||||
if($attributes['data'] == 'array')
|
||||
{
|
||||
$parms['data'] = 'array';
|
||||
}
|
||||
|
||||
$ret = '<ol>';
|
||||
for ($i=0; $i < 5; $i++)
|
||||
{
|
||||
$k = $key.'['.$i.'][path]';
|
||||
$ival = $value[$i]['path'];
|
||||
// $k = $key.'['.$i.'][path]';
|
||||
// $ival = $value[$i]['path'];
|
||||
$k = $key.'['.$i.']';
|
||||
$ival = $value[$i];
|
||||
$ret .= '<li>'.$this->filepicker($k, $ival, defset($label, $label), $parms).'</li>';
|
||||
}
|
||||
$ret .= '</ol>';
|
||||
|
@@ -119,13 +119,13 @@ $(document).ready(function()
|
||||
// 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 path = $(this).attr('data-path');
|
||||
var path = $(this).attr('data-path'); // path of the mm item
|
||||
var preview = $(this).attr('data-preview');
|
||||
var src = $(this).attr('data-src');
|
||||
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 height = ''; // disable for now - will be updated by bb parser. // $(this).attr('data-height');
|
||||
var type = $(this).attr('data-type');
|
||||
@@ -198,13 +198,39 @@ $(document).ready(function()
|
||||
$('div#' + 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($('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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// $(this).parent('#src').attr('value',preview); // set new value
|
||||
|
Reference in New Issue
Block a user