{/block}
{block scripts}
-<script type="text/javascript" src="{$ADMIN_MEDIA_URL}js/jquery.tablednd.js"></script>
-<script type="text/javascript">
-{literal}
-$(document).ready(function(){
+<script>{literal}
+$(function(){
$("#id_ipf_referrer").val(document.referrer);
var del_href = $("#id_a_delete").attr("href");
$("#id_a_delete").attr("href", del_href+'?ipf_referrer='+document.referrer);
-
- $('.orderable-inlne').each(function(){
- var $table = $(this);
- $table.tableDnD({
- onDragClass: "ItemsDragClass",
- onDrop: function(table, row) {
- var ids = [];
- $table.find('tr[data-id]').each(function(){
- ids.push($(this).data('id'));
- });
- $.post($table.data('url') + 'reorder/', { 'ids[]': ids }, function(data){});
- }
- });
- });
});
-{/literal}
-</script>
+{/literal}</script>
{foreach $extra_js as $js}
{$js|safe}
{/foreach}
IPF_Utils::makeDirectories($this->getAbsolutePath(''));
if (\PFF\Arr::get($value, 'remove'))
- return $this->removeFile($value['data']);
+ return $this->removeFile($value['file']);
$oldname = \PFF\Arr::get($value, 'name', '');
$newname = \PFF\Arr::get($value, 'rename', '');
if ($oldname != $newname)
return $this->renameFile($oldname, $newname);
- switch (\PFF\Arr::get($value['data'], 'error')) {
+ if (!isset($value['file'])) {
+ return IPF_Utils::cleanFileName($value['name'], $this->getAbsolutePath('')); // initial
+ }
+
+ switch (\PFF\Arr::get($value['file'], 'error')) {
case UPLOAD_ERR_OK:
break;
default:
return $oldname;
}
- $data = $value['data'];
+ $data = $value['file'];
switch ($data['error']) {
case UPLOAD_ERR_OK:
break;
--- /dev/null
+<?php
+
+class IPF_Form_Field_OrderedSet extends IPF_Form_Field_Set
+{
+ public $widget = 'IPF_Form_Widget_OrderedSetTable';
+ public $orderBy;
+
+ public function clean($value)
+ {
+ if (!$value)
+ return $value;
+
+ $reorder = \PFF\Arr::pop($value, 'reorder');
+ $value = parent::clean($value);
+ $value['reorder'] = $reorder;
+
+ return $value;
+ }
+
+ protected function createWidget($args)
+ {
+ $args['orderBy'] = $this->orderBy;
+ return parent::createWidget($args);
+ }
+}
+
if ($this->allow_extended) {
$sim = 'Currently: ' .
- Tag::input(array('name' => "{$name}_name", 'value' => $filename, 'type' => 'hidden')) .
- Tag::input(array('name' => "{$name}_rename", 'value' => $filename, 'id' => "id_{$name}_rename", 'type' => 'text', 'style' => 'width:150px;')) .
+ Tag::input(array('name' => "{$name}[name]", 'value' => $filename, 'type' => 'hidden')) .
+ Tag::input(array('name' => "{$name}[rename]", 'value' => $filename, 'id' => "id_{$name}_rename", 'type' => 'text', 'style' => 'width:150px;')) .
$this->viewCurrentValue($filename);
if ($this->allow_delete)
$sim .= ' | ' .
- Tag::input(array('name' => "{$name}_remove", 'value' => 1, 'id' => "id_{$name}_remove", 'type' => 'checkbox')) .
+ Tag::input(array('name' => "{$name}[remove]", 'value' => 1, 'id' => "id_{$name}_remove", 'type' => 'checkbox')) .
' ' .
Tag::label(array('class' => 'file_remove', 'for' => "id_{$name}_remove"), 'Remove');
{
if (is_string($value) && $value)
$sim = $this->currentValue($name, $value);
- elseif (isset($value['data']) && is_string($value['data']) && $value['data'])
- $sim = $this->currentValue($name, $value['data']);
else
$sim = '';
- return $sim . parent::render($name, '', $extra_attrs);
+ return $sim . parent::render($name.'[file]', '', $extra_attrs);
}
public function valueFromFormData($name, $data)
if (!isset($data[$name]))
return null;
- $remove = isset($data[$name.'_remove']) && $data[$name.'_remove'] == 1;
-
- $res = array(
- 'data' => $data[$name],
- 'remove' => $remove,
- );
-
- if (isset($data[$name.'_rename']))
- $res['rename'] = $data[$name.'_rename'];
-
- if (isset($data[$name.'_name']))
- $res['name'] = $data[$name.'_name'];
-
- return $res;
+ $value = $data[$name];
+ if (!isset($value['file']) && !isset($value['name']))
+ return null;
+ return $value;
}
}
}
}
- return Tag::textarea($final_attrs)
+ return Tag::textarea()
->attr('cols', 70)
->attr('rows', 20)
->attrs($this->attrs)
public function extra_js()
{
return array(
- '<script type="text/javascript" src="'.$this->tiny_mce_url.'tiny_mce.js"></script>',
+ '<script type="text/javascript" src="'.$this->tinymce_url.'tiny_mce.js"></script>',
'<script type="text/javascript">
function ipf_filebrowser(field_name, url, type, win) {
var cmsURL = "/admin/filebrowser/";
--- /dev/null
+<?php
+
+use \PFF\HtmlBuilder\Tag as Tag;
+
+class IPF_Form_Widget_OrderedSetTable extends IPF_Form_Widget_SetTable
+{
+ public $orderBy;
+
+ public function __construct($attrs=array())
+ {
+ $this->orderBy = \PFF\Arr::pop($attrs, 'orderBy');
+ parent::__construct($attrs);
+ }
+
+ public function render($name, $value, $extra_attrs=array())
+ {
+ if (array_key_exists('class', $extra_attrs))
+ $extra_attrs['class'] .= ' orderable-set-table';
+ else
+ $extra_attrs['class'] = 'orderable-set-table';
+
+ $extra_attrs['data-reorder'] = $name.'[reorder]';
+
+ return parent::render($name, $value, $extra_attrs);
+ }
+
+ protected function renderRow($prefix, $obj, $errors, $index)
+ {
+ $tr = parent::renderRow($prefix, $obj, $errors, $index);
+
+ if (array_key_exists('id', $obj))
+ $tr->attr('data-id', $obj['id']);
+ else
+ $tr->addClass('nodrag')->addClass('nodrop');
+
+ return $tr;
+ }
+
+ public function extra_js()
+ {
+ $js = parent::extra_js();
+
+ $js[] = '<script src="'.IPF::get('static_url').'admin/js/jquery.tablednd.js"></script>';
+ $js[] = '<script>
+$(function(){
+ $(\'.orderable-set-table\').each(function(){
+ var $table = $(this), $form = $table.closest("form"), reorder = $table.data("reorder");
+ $table.tableDnD({
+ onDragClass: "ItemsDragClass",
+ onDrop: function(table, row) {
+ var i;
+ $form.find("[name=\'"+reorder+"[]\']").remove();
+ $table.find(\'tr[data-id]\').each(function(){
+ i = $("<input/>").attr("type", "hidden").attr("name", reorder+"[]").attr("value", $(this).data(\'id\'));
+ $form.append(i);
+ });
+ }
+ });
+ });
+});
+</script>';
+ return $js;
+ }
+
+ public function valueFromFormData($name, $data)
+ {
+ if (!isset($data[$name]))
+ return null;
+
+ $value = $data[$name];
+ $reorder = \PFF\Arr::pop($value, 'reorder');
+ $data[$name] = $value;
+
+ $value = parent::valueFromFormData($name, $data);
+ $value['reorder'] = $reorder;
+
+ return $value;
+ }
+}
+