1
0
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:
Cameron
2014-08-31 14:54:47 -07:00
parent d9cce6e21a
commit bb6ebd1732
2 changed files with 74 additions and 16 deletions

View File

@@ -776,29 +776,53 @@ 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;
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";
$label = "<span id='{$name_id}_prev' class='btn btn-default btn-small'>".basename($default_label)."</span>";
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'])."' />";
$sc_parameters['mode'] = 'main';
$sc_parameters['action'] = 'dialog';
$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['action'] = 'dialog';
// $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' />";
$ret .= $this->mediaUrl($cat, $label,$name_id,$sc_parameters);
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>';

View File

@@ -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,10 +198,36 @@ $(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 !='')
{
$('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
}
}