From daaf87c8844b3c41a8ad25aef26203db4428088b Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Sun, 14 Sep 2014 15:41:36 +0300 Subject: [PATCH] ordered set --- ipf/admin/templates/admin/change.html | 23 +------- ipf/form/field/file.php | 10 +++- ipf/form/field/orderedset.php | 26 +++++++++ ipf/form/widget/fileinput.php | 28 +++------- ipf/form/widget/htmlinput.php | 4 +- ipf/form/widget/orderedsettable.php | 80 +++++++++++++++++++++++++++ 6 files changed, 126 insertions(+), 45 deletions(-) create mode 100644 ipf/form/field/orderedset.php create mode 100644 ipf/form/widget/orderedsettable.php diff --git a/ipf/admin/templates/admin/change.html b/ipf/admin/templates/admin/change.html index 6cb00a0..4a9d4f5 100644 --- a/ipf/admin/templates/admin/change.html +++ b/ipf/admin/templates/admin/change.html @@ -54,30 +54,13 @@ {/block} {block scripts} - - +{/literal} {foreach $extra_js as $js} {$js|safe} {/foreach} diff --git a/ipf/form/field/file.php b/ipf/form/field/file.php index 14c0b2a..18cac33 100644 --- a/ipf/form/field/file.php +++ b/ipf/form/field/file.php @@ -40,14 +40,18 @@ class IPF_Form_Field_File extends IPF_Form_Field 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: @@ -56,7 +60,7 @@ class IPF_Form_Field_File extends IPF_Form_Field return $oldname; } - $data = $value['data']; + $data = $value['file']; switch ($data['error']) { case UPLOAD_ERR_OK: break; diff --git a/ipf/form/field/orderedset.php b/ipf/form/field/orderedset.php new file mode 100644 index 0000000..773e372 --- /dev/null +++ b/ipf/form/field/orderedset.php @@ -0,0 +1,26 @@ +orderBy; + return parent::createWidget($args); + } +} + diff --git a/ipf/form/widget/fileinput.php b/ipf/form/widget/fileinput.php index 4b6a4b5..8c3743f 100644 --- a/ipf/form/widget/fileinput.php +++ b/ipf/form/widget/fileinput.php @@ -24,13 +24,13 @@ class IPF_Form_Widget_FileInput extends IPF_Form_Widget_Input 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'); @@ -46,12 +46,10 @@ class IPF_Form_Widget_FileInput extends IPF_Form_Widget_Input { 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) @@ -59,20 +57,10 @@ class IPF_Form_Widget_FileInput extends IPF_Form_Widget_Input 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; } } diff --git a/ipf/form/widget/htmlinput.php b/ipf/form/widget/htmlinput.php index 197d998..044a036 100644 --- a/ipf/form/widget/htmlinput.php +++ b/ipf/form/widget/htmlinput.php @@ -40,7 +40,7 @@ class IPF_Form_Widget_HTMLInput extends IPF_Form_Widget } } - return Tag::textarea($final_attrs) + return Tag::textarea() ->attr('cols', 70) ->attr('rows', 20) ->attrs($this->attrs) @@ -54,7 +54,7 @@ class IPF_Form_Widget_HTMLInput extends IPF_Form_Widget public function extra_js() { return array( - '', + '', ''; + $js[] = ''; + 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; + } +} + -- 2.49.0