/[cvs]/nfo/php/libs/org.netfrag.patches/phphtmllib/widgets/EditDataItem.php
ViewVC logotype

Diff of /nfo/php/libs/org.netfrag.patches/phphtmllib/widgets/EditDataItem.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by jonen, Thu Mar 27 01:18:06 2003 UTC revision 1.6 by joko, Fri Apr 11 00:48:03 2003 UTC
# Line 4  Line 4 
4  ##    $Id$  ##    $Id$
5  ##    -----------------------------------------------------------------------------  ##    -----------------------------------------------------------------------------
6  ##    $Log$  ##    $Log$
7    ##    Revision 1.6  2003/04/11 00:48:03  joko
8    ##    minor fix: calling parent constructor explicitely by name now, transparency seems not be automagically compatible with inheritance in php ,-)    (non-orthogonal)
9    ##
10    ##    Revision 1.5  2003/04/09 09:59:30  joko
11    ##    fixes regarding modification of decode-function-behavior
12    ##
13    ##    Revision 1.4  2003/04/06 01:41:33  jonen
14    ##    - removed duplicated decode functions
15    ##
16    ##    Revision 1.3  2003/04/04 23:58:02  jonen
17    ##    + saving of items sould now work with new 'GenericSource' structure
18    ##
19    ##    Revision 1.2  2003/04/04 00:43:22  jonen
20    ##    + complete rework
21    ##
22  ##    Revision 1.1  2003/03/27 01:18:06  jonen  ##    Revision 1.1  2003/03/27 01:18:06  jonen
23  ##    + inital commit (was orginal 'DataItem.php')  ##    + inital commit (was orginal 'DataItem.php')
24  ##  ##
# Line 36  Line 51 
51    
52  class EditDataItem extends StandardFormContent {  class EditDataItem extends StandardFormContent {
53    
54     /**
55      * holds reference to source object.
56      */
57     var $_datasource = NULL;
58    
59     /**
60      * container for arguments needed for e.g. setting the source object.
61      */
62   var $_options = array();   var $_options = array();
63    
64   var $_confirm_msg = "Die Daten wurden erfolgreich gespeichert!";   var $_confirm_msg = "Die Daten wurden erfolgreich gespeichert!";
65    
66    function EditDataItem($options = array()) {    function EditDataItem($title, $options = array()) {
67      $this->_options = $options;      $this->_options = $options;
68        // prefetch data
69        $this->data_prefetch();
70    
71        // doesn't work if EditDataItem gets inherited
72        //$parent = get_parent_class($this);
73        //$this->$parent($title, $PHP_SELF, 600);
74        
75        $this->StandardFormContent($title, $PHP_SELF, 600);
76    
     $parent =  get_parent_class($this);  
     $this->$parent($this->_options['caption'], $PHP_SELF, 600);  
77    }    }
78    
79    function set_data_source(&$source) {    function set_data_source(&$source) {
80      $this->_source = &$source;      $this->_datasource = &$source;
81    }    }
82    
83    function get_data_source() {    function get_data_source() {
# Line 57  class EditDataItem extends StandardFormC Line 87  class EditDataItem extends StandardFormC
87        $this->set_data_source( &$source );            $this->set_data_source( &$source );    
88    }    }
89    
90      function _check_datasource($function_name) {
91          if ( !is_object($this->_datasource) ) {
92                user_error("DataList::".$function_name."() - DataListSource object is not set");
93                exit;
94          }
95      }
96    
97      function data_prefetch() {
98        $this->get_data_source();
99        $this->_check_datasource("data_prefetch");
100    
101        $this->_datasource->do_query();
102      }
103    
104      /**      /**
105       * This method gets called EVERY time the object is       * This method gets called EVERY time the object is
# Line 68  class EditDataItem extends StandardFormC Line 111  class EditDataItem extends StandardFormC
111          //we want an confirmation page for this form.          //we want an confirmation page for this form.
112          $this->set_confirm();          $this->set_confirm();
113    
114          foreach($this->_source->_result as $key => $value) {           $utils = php::mkComponent('WebExplorer::utils');
115             $hidden = $this->get_hidden_elements();
116             $options = $this->_options['decode_args'];
117    
118            foreach($this->_datasource->_result as $key => $value) {
119            if($value) {            if($value) {
120              $validation = TRUE;              $validation = TRUE;
121            } else {            } else {
122              $validation = FALSE;              $validation = FALSE;
123            }            }
124            if(!$this->decode_item_expr($value, $this->_options) && !$this->decode_item_array($value, $this->_options)) {            if(!$utils->decode_item_expr($value, $hidden, $options) && !$utils->decode_item_array($value, $hidden, $options)) {
125              $this->add_element( new FEText($key, $validation, "350px") );              $this->add_element( new FEText($key, $validation, "350px") );
126            }            }
127          }          }
# Line 92  class EditDataItem extends StandardFormC Line 139  class EditDataItem extends StandardFormC
139          //and set the initial values of some of the          //and set the initial values of some of the
140          //form fields.          //form fields.
141    
142        foreach($this->_source->_result as $key => $value) {           $utils = php::mkComponent('WebExplorer::utils');
143          if(!$this->decode_item_expr($value, $this->_options) && !$this->decode_item_array($value, $this->_options)) {           $hidden = $this->get_hidden_elements();
144             $options = $this->_options['decode_args'];
145    
146          foreach($this->_datasource->_result as $key => $value) {
147            if(!$utils->decode_item_expr($value, $hidden, $options) && !$utils->decode_item_array($value, $hidden, $options)) {
148            $this->set_element_value($key, $value);            $this->set_element_value($key, $value);
149          }          }
150        }        }
151    
152          /* OLD !!
153       $post_vars = array_join_merge($_GET, $_POST);       $post_vars = array_join_merge($_GET, $_POST);
154        foreach ($post_vars as $var => $val) {        foreach ($post_vars as $var => $val) {
155          $this->set_hidden_element_value($var, $val);          $this->set_hidden_element_value($var, $val);
156        }        }
157          */
158    
159      }      }
160    
# Line 113  class EditDataItem extends StandardFormC Line 166  class EditDataItem extends StandardFormC
166      function &_dataitem() {      function &_dataitem() {
167        $table = &html_table($this->_width,0,2);        $table = &html_table($this->_width,0,2);
168                    
169        foreach($this->_source->_result as $key => $value) {        foreach($this->_datasource->_result as $key => $value) {
170          // if item is match by expression we will replace it with an link object            // if item is match by expression we will replace it with an link object  
171          if($this->decode_item_expr($value, $this->_options) && $this->_options['inheritance']) {            if($this->_options['decode']) {
172            $table->add_row($key, $this->decode_item_expr($value, $this->_options));             $utils = php::mkComponent('WebExplorer::utils');
173          }           $hidden = $this->get_hidden_elements();
174          // if item is an Array we will replace it with an selection form object             $options = $this->_options['decode_args'];
175          elseif($this->decode_item_array($value, $this->_options) && $this->_options['inheritance']) {           if($utils->decode_item_expr($value, $hidden, $options)) {  
176            $table->add_row($key, $this->decode_item_array($value, $this->_options));              $table->add_row($key, $value);  
177          }           }  
178          else {           // if item is an Array we will replace it with an selection form object  
179             elseif($utils->decode_item_array($value, $hidden, $options) ) {
180                $table->add_row($key, $value);
181             } else {
182               $table->add_row($this->element_label($key), $this->element_form($key));
183             }
184            } else {
185            $table->add_row($this->element_label($key), $this->element_form($key));            $table->add_row($this->element_label($key), $this->element_form($key));
186          }          }
187        }        }
# Line 178  class EditDataItem extends StandardFormC Line 237  class EditDataItem extends StandardFormC
237          $td = new TDtag(array("colspan" => 2,          $td = new TDtag(array("colspan" => 2,
238                                "class" => "contentnovertical",                                "class" => "contentnovertical",
239                                "align" => "center"),                                "align" => "center"),
240                          $this->add_action("Confirm"),                          form_submit('ecdfe', "Confirm"),
241                          _HTML_SPACE,                          _HTML_SPACE,
242                          $this->add_action("Edit"));                          $this->add_action("Edit"));
243    
# Line 202  class EditDataItem extends StandardFormC Line 261  class EditDataItem extends StandardFormC
261       */       */
262      function confirm_action() {      function confirm_action() {
263    
264          foreach($this->_source->_result as $label => $value_old) {           $utils = php::mkComponent('WebExplorer::utils');
265             $hidden = $this->get_hidden_elements();
266             $options = $this->_options['decode_args'];
267    
268            foreach($this->_datasource->_result as $label => $value_old) {
269              if(!$utils->decode_item_expr($value_old, $hidden, $options) && !$utils->decode_item_array($value_old, $hidden, $options)) {
270              $value_new = $this->_elements[$label]->get_value();              $value_new = $this->_elements[$label]->get_value();
271              $item[$label] = $value_new;              $data[$label] = $value_new;
272              }
273          }          }
274          $error = $this->_source->set($item);          // write new data to datasource
275            $this->_options['data_locator_meta']['action'] = "write";
276            $this->_options['data_locator_meta']['data'] = $data;
277            // TODO: 'data_prefetch()' will never return ANYTHING!
278            //           Implement some error-handling there or somewhere.
279            $error = $this->data_prefetch();
280            
281            //$error = $this->_datasource->set($item);
282          if(!$error) {          if(!$error) {
283              // fetch fresh data
284              $this->_options['data_locator_meta']['action'] = "read";
285              // unset previous initialed 'data' var
286              $this->_options['data_locator_meta']['data'] = NULL;
287              $this->data_prefetch();
288            
289            $this->set_action_message($this->_confirm_msg);            $this->set_action_message($this->_confirm_msg);
290            return TRUE;            return TRUE;
291          } else {          } else {
# Line 215  class EditDataItem extends StandardFormC Line 293  class EditDataItem extends StandardFormC
293          }          }
294      }      }
295    
296        /**
297    function decode_item_array($item, $options=array()) {       * This function is used to build the standard
298      if( is_array($item) ) {       * buttons for a form.
299            //$cur_row_index = $this->_datasource->get_cur_data_index();       *
300            //$parent_guid = $this->_datasource->_data[$cur_row_index]['guid'];       * @return ButtonPanel
301            // build list for selection form       */
302         if($options['form']) {      function form_content_buttons() {
303            foreach($item as $key => $value) {          $div = new DIVtag( array("style" => "background-color: #eeeeee;".
304                  $tmp = split($options['seperator'], $value);                                              "padding-top:5px;padding-bottom:5px",
305                  $ident = $tmp['1'];                                   "align"=>"center", "nowrap"),
306                  $meta = $tmp['2'];                             form_submit('ecdfe', "Save"),
307                  $list[$key] = $ident;                             _HTML_SPACE,
308                  }                             //$this->add_cancel()
309                  if(is_array($list) ) {                             form_submit('ecdfc', "Cancel")
310                $container = container(                             );
311                    form_open( $item[0], $_SERVER["PHP_SELF"], "POST" ),          return $div;
                   form_open("meta", $meta),  
                   form_select("ident", $list),  
                   form_submit("submit","view" ),  
                   form_close()  
                   );  
                foreach($this->_hidden_items as $label => $value) {  
                  $container->add(form_hidden($label, $value));  
                }  
               $item = $container;  
               }  
         } else {  
           $container = container();  
           foreach($item as $key => $value) {  
                 $tmp = split($options['seperator'], $value);  
                 $ident = $tmp['1'];  
                 $meta = $tmp['2'];  
                      foreach($this->_hidden_items as $label => $value) {  
                        $tmp_array[] = $label . "=" . $value;  
                      }  
                      $str_hidden = join("&", $tmp_array);  
                 $container->add("->", html_a($_SERVER["PHP_SELF"] . "?ident=" . $ident . "&meta=" . $meta . $str_hidden, $key . " view"), html_br());                
           }  
           $item = $container;  
         }  
               return $item;  
312      }      }
   }  
313    
314    function decode_item_expr($item, $options=array()) {  
315      if(substr($item, 0, 2) == "o_") {    function get_hidden_elements() {
316            $tmp = split($options['seperator'], $item);      foreach($this->_hidden_elements as $label => $object) {
317            $ident = $tmp['1'];        $value = $this->_hidden_elements[$label]->get_value();
318            $meta = $tmp['2'];        $tmp_array[$label] = $value;
           foreach($this->_hidden_items as $label => $value) {  
              $tmp_array[] = $label . "=" . $value;  
           }  
           $str_hidden = join("&", $tmp_array);  
           $item = html_a($_SERVER["PHP_SELF"] . "?ident=" . $guid . "&meta=" . $meta . $str_hidden, "view");  
           return $item;  
319      }      }
320        return $tmp_array;
321    }    }
322    
   
323  }  }
324    
325    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.6

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed