X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Fui%2Fsimple_crud_class.inc;h=f6375635ebaa6e3bcbac799342b099adbc50241b;hb=bcdfafb67b41c26be1dd0dc01992bdd75bf5e16e;hp=2f0d76711a63253d2d8e28ba8b7d570fe35e1c30;hpb=3665b8d9d8899fbbfa17932423c8d98c8dec8d85;p=fa-stable.git diff --git a/includes/ui/simple_crud_class.inc b/includes/ui/simple_crud_class.inc index 2f0d7671..f6375635 100644 --- a/includes/ui/simple_crud_class.inc +++ b/includes/ui/simple_crud_class.inc @@ -19,14 +19,14 @@ class simple_crud { var $_none = ''; // selector value when no item is selected var $pre_handlers; // control buttons and related methods called before view display var $views; - var $data; + var $data = array(); var $fields; var $tool_buttons; var $options; var $dec; // // - function simple_crud($name, $fields = null) + function __construct($name, $fields = null) { $this->name = $name; $this->pre_handlers = array( @@ -106,19 +106,23 @@ class simple_crud { { global $Ajax; - $sel_name = $this->name.'_id'; - // list controls lookup foreach (array_keys($this->pre_handlers) as $m) { if (isset($_POST[$this->name.$m])) { unset($_POST['_focus']); // focus on first form entry $Ajax->activate($this->name.'_div'); - $val = @key($_POST[$this->name.$m]); + $val = is_array($_POST[$this->name.$m]) ? key($_POST[$this->name.$m]) : null; $this->selected_id = $val!==null ? @quoted_printable_decode($val) : $this->_none; return $m; } } - return get_post($this->name.'Mode', ''); + $mod = get_post($this->name.'Mode', ''); + if ($mod) { + $val = @key($mod); + $this->selected_id = $val!==null ? @quoted_printable_decode($val) : $this->_none; + return $mod[$val]; + } + return ''; } // @@ -137,25 +141,30 @@ class simple_crud { // // Update record after edition // - function _update() + function _update($mode) { $this->get_posts(); if ($this->update_check()) { - if ($this->db_update()) + if ($this->db_update()) { $this->selected_id = $this->_none; $this->Mode = ''; + return; + } } + $this->Mode = $mode; } // // Add new record // - function _add() + function _add($mode) { $this->get_posts(); if ($this->insert_check()) { $this->db_insert(); $this->_cancel(); + return; } + $this->Mode = $mode; } // // Delete selected record @@ -200,9 +209,9 @@ class simple_crud { if ($async === 'both') { $async = 'default'; $cancel = 'cancel'; } - else if ($async === 'default') + elseif ($async === 'default') $cancel = true; - else if ($async === 'cancel') + elseif ($async === 'cancel') $async = true; echo "
"; @@ -245,10 +254,10 @@ class simple_crud { $post = isset($fmt['post']) ? $fmt['post'] : $name; $fld = isset($fmt['fld']) ? $fmt['fld'] : $name; - $value = $this->selected_id == $this->_none ? @$fmt['dflt'] : + $value = $this->selected_id == $this->_none ? (isset($fmt['dflt']) ? $fmt['dflt'] : null) : (is_array($this->data) ? $this->data[$fld]: $this->data->$fld); - $_POST[$post] = $this->_format_output($value, @$fmt['fmt']); + $_POST[$post] = $this->_format_output($value, isset($fmt['fmt']) ? $fmt['fmt'] : null); } } //-------------------------- @@ -264,8 +273,7 @@ class simple_crud { $post = isset($fmt['post']) ? $fmt['post'] : $name; $fld = isset($fmt['fld']) ? $fmt['fld'] : $name; - $value = $this->_format_input($_POST[$post], @$fmt['fmt']); - + $value = $this->_format_input(@$_POST[$post], @$fmt['fmt']); if (is_array($this->data)) $this->data[$fld] = $value; else @@ -286,14 +294,15 @@ class simple_crud { $fun = $this->pre_handlers[$Mode]; $this->$fun($Mode); } - + if (isset($this->views[$this->Mode])) $this->{$this->views[$this->Mode]}(); else $this->{$this->views['']}(); // default view $this->_bottom_controls(); - hidden($this->name.'Mode', $this->Mode.'['.$this->selected_id.']'); + // this is needed only when we use temporary crud object together with ajax screen updates + hidden($this->name.'Mode'.'['.$this->selected_id.']', $this->Mode); div_end(); } @@ -365,4 +374,3 @@ class simple_crud { } }; -?> \ No newline at end of file