/[cvs]/nfo/php/libs/org.netfrag.patches/phphtmllib/forms/UploadForm.php
ViewVC logotype

Annotation of /nfo/php/libs/org.netfrag.patches/phphtmllib/forms/UploadForm.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations)
Fri Nov 14 18:04:13 2003 UTC (20 years, 10 months ago) by udo
Branch: MAIN
Changes since 1.2: +19 -11 lines
fixed textArea dependent to _show_items and _set_items

1 udo 1.1 <?
2     /**
3     * This file contains the UploadForm child class.
4     *
5     *
6     * @package org.netfrag.patches
7     * @name UploadForm
8     *
9     */
10    
11     /**
12     * Cvs-Log
13     *
14 udo 1.3 * $Id: UploadForm.php,v 1.2 2003/11/14 17:51:20 udo Exp $
15 udo 1.2 *
16     * $Log: UploadForm.php,v $
17 udo 1.3 * Revision 1.2 2003/11/14 17:51:20 udo
18     * changed label-text
19     *
20 udo 1.2 * Revision 1.1 2003/11/14 17:02:28 udo
21     * initial commit
22 udo 1.1 *
23     *
24     *
25     */
26    
27    
28    
29     // this is an abstract form-class to edit LangText - content.
30     class EditPageForm extends EditDataItem {
31    
32     // _show_lang is the language to be shown readonly
33     var $_show_lang;
34     // _set_lang is the language to be entered and updated in the Langtext-table
35     var $_set_lang;
36     // _show_items are the items that will be shown
37     var $_show_items = array();
38     // _set_items are the items, that will maybe be changed an updated
39     var $_set_items = array();
40     // undone is true, if the user selected to show untranslated items only
41     var $_undone;
42     // all LangText - entries that contain the string _sql_key will be selected.
43     // this is passed dependent on which topic is selected in the page_news - class
44     var $_sql_key;
45    
46     function EditPageForm($title, $width, $whichKey, $show_lang, $set_lang, $undone, $options) {
47     $this->_show_lang = $show_lang;
48     $this->_set_lang = $set_lang;
49     $this->_sql_key = $whichKey;
50     $this->_undone = $undone;
51     $parent = get_parent_class($this);
52     $this->$parent($title, $options);
53     }
54    
55     function form_init_elements() {
56    
57     // hidden element for page control
58     $this->add_hidden_element( 't', 'News' );
59    
60     // used_keys are all lkeys, that contain the _sql_key
61     $used_keys = array();
62    
63     // the _datasource->result - object is parsed and the matching items are
64     // written into the arrays
65     foreach($this->_datasource->_result as $key => $value) {
66     if (strstr ( $value['lkey'], $this->_sql_key)) {
67     if (!in_array($value['lkey'], $used_keys)) {array_push($used_keys, $value['lkey']);}
68     if ($value['lcountrykey'] == $this->_show_lang) {array_push($this->_show_items, $value);}
69     if ($value['lcountrykey'] == $this->_set_lang) {array_push($this->_set_items, $value);}
70     }
71     }
72    
73     // this function is needed, because _set_items and _show_items may contain a
74     // different amount of entries.
75     // the follogwing is all about sorting the both arrays in a way, that the same
76     // entries have the same key and filling up entries, if theres an entry missing because
77     // its not yet translated.
78     function get_nested_array_by_lkey($whichArray=array(), $whichKey) {
79     foreach ($whichArray as $key=>$value) {
80     if ($value['lkey'] == $whichKey) {return $value;}
81     }
82     }
83    
84    
85     // this is needed for sorting
86     $tmp_array = array();
87 udo 1.2 $larger = array();
88 udo 1.1 // this is needed because the arrays may have to be filled with an array
89     $empty_array = array("lvalue" => "", "lkey" => "", "lcountrykey" => "", "guid" => "" );
90    
91     // the smaller array is backuped in tmp_array and then killed.
92     // the larger array is parsed an doing this we reset the smaller array form the
93     // backup in the right order. if there is an entry missing in the smaller
94     // array this key will not be filled here.
95     if (count($this->_set_items) > count($this->_show_items)) {
96     $larger = $this->_set_items;
97     $tmp_array = $this->_show_items;
98     $this->_show_items = array();
99     foreach ($this->_set_items as $key=>$value) {
100     $this->_show_items[$key] = get_nested_array_by_lkey($tmp_array, $value['lkey']);
101     }
102     } else if (count($this->_set_items) < count($this->_show_items)) {
103     $larger = $this->_show_items;
104     $tmp_array = $this->_set_items;
105     $this->_set_items = array();
106     foreach ($this->_show_items as $key=>$value) {
107     $this->_set_items[$key] = get_nested_array_by_lkey($tmp_array, $value['lkey']);
108     }
109     } else {
110     $larger = $this->_show_items;
111     }
112    
113     // both arrays are parsed and missing entries (without a key) are filled
114     // with the empty_array. missing lkeys are filled with the lkey from used_keys,
115     // so that now every key of the arrays has matching entries. this is important,
116     // because otherwise the empty fields could not be named.
117    
118     foreach ($used_keys as $key => $value) {
119     if (!is_array(get_nested_array_by_lkey($this->_set_items, $value))) {
120     $this->_set_items[$key] = $empty_array;
121     $this->_set_items[$key]['lkey'] = $value;
122     }
123     if (!is_array(get_nested_array_by_lkey($this->_show_items, $value))) {
124     $this->_show_items[$key] = $empty_array;
125     $this->_show_items[$key]['lkey'] = $value;
126     }
127     }
128    
129 udo 1.2
130 udo 1.1 // is _undone is selected, that means that the user only wants to see the items that
131     // are not yet translated, every entry, that has lvalues in both arrays, is marked.
132     if ($this->_undone == "yes") {
133     foreach ($used_keys as $key => $value) {
134     if ((strlen($this->_set_items[$key]['lvalue']) > 0) && (strlen($this->_show_items[$key]['lvalue']) > 0)) {
135     $this->_set_items[$key] = "kickedMarkerXXX";
136     $this->_show_items[$key] = "kickedMarkerXXX";
137     }
138     }
139     }
140    
141    
142 udo 1.3 //print "used_keys: " . Dumper($used_keys) . "<br>";
143     //print "_set_items: " . Dumper($this->_set_items) . "<br>";
144     //print "_show_items: " . Dumper($this->_show_items) . "<br>";
145    
146    
147    
148 udo 1.1 // the elements of the form are created
149 udo 1.3 foreach($used_keys as $key => $value) {
150 udo 1.1 // if the entry == kickedMarkerXXX, $value will be no array
151 udo 1.3 if (is_array($this->_set_items[$key])) {
152     $show_element = $value . $this->_show_lang . "s";
153     $set_element = $value . $this->_set_lang . "u";
154 udo 1.1
155 udo 1.3 if ((strlen($this->_set_items[$key]['lvalue']) < 40) && (strlen($this->_show_items[$key]['lvalue']) < 40)) {
156     $this->add_element( new FEText($show_element, true, 40, 60));
157     $this->add_element( new FEText($set_element, true, 40, 60));
158     } else{
159 udo 1.1 $this->add_element( new FETextArea($show_element, true, 10, 40));
160     $this->add_element( new FETextArea($set_element, true, 10, 40));
161 udo 1.3
162 udo 1.1 }
163     $myElement = &$this->get_element($show_element);
164     $myElement->set_attribute("readonly");
165     }
166     }
167     }
168    
169     function form_init_data() {
170    
171    
172     foreach($this->_show_items as $key => $value) {
173     if (is_array($value)) {
174     $show_element = $value['lkey'] . $this->_show_lang . "s";
175     $set_element = $value['lkey'] . $this->_set_lang . "u";
176    
177     $this->set_element_value($show_element, $this->_show_items[$key]['lvalue']);
178     $this->set_element_value($set_element, $this->_set_items[$key]['lvalue']);
179    
180     $myElement = &$this->get_element($show_element);
181 udo 1.2 $myElement->set_label_text($value['lkey']);
182 udo 1.1 $myElement->set_required(false);
183    
184     $myElement = &$this->get_element($set_element);
185 udo 1.2 $myElement->set_label_text($value['lkey']);
186 udo 1.1 $myElement->set_required(false);
187     }
188     }
189     }
190    
191     function form_content() {
192    
193     $table = &html_table(600, 0, 2);
194     switch ($this->_show_lang) {
195     case 'de':
196     $showLanguange = " german";
197     break;
198     case 'en':
199     $showLanguange = " english";
200     break;
201     case 'tr':
202     $showLanguange = " turkish";
203     break;
204     }
205     switch ($this->_set_lang) {
206     case 'de':
207     $setLanguange = " german";
208     break;
209     case 'en':
210     $setLanguange = " english";
211     break;
212     case 'tr':
213     $setLanguange = " turkish";
214     break;
215     }
216     $table->add_row("translate from" . $showLanguange, "translate to" . $setLanguange );
217     $all_elements_translated = 0;
218    
219     foreach($this->_show_items as $key => $value) {
220     if (is_array($value)) {
221     $all_elements_translated++;
222     $show_element = $value['lkey'] . $this->_show_lang . "s";
223     $set_element = $value['lkey'] . $this->_set_lang . "u";
224    
225     $inner_table_left = &html_table();
226     $inner_table_left->add_row($this->element_label($show_element));
227     $inner_table_left->add_row($this->element_form($show_element));
228     $inner_table_right = &html_table();
229     $inner_table_right->add_row($this->element_label($set_element));
230     $inner_table_right->add_row($this->element_form($set_element));
231    
232     $table->add_row($inner_table_left, $inner_table_right );
233     }
234     }
235     if ($all_elements_translated == 0) {
236     $table = &html_table(600, 0, 2);
237     if (count($this->_set_items)>0) {$table->add_row("all items are translated!");}
238     else {$table->add_row("no items found");}
239     }
240     $this->add_form_block("", $table );
241     }
242    
243     function form_action() {
244     $data = array();
245    
246     foreach ($this->_set_items as $key=>$value) {
247     if (is_array($value)) {
248     array_push($data, $this->_set_items[$key]);
249     }
250     }
251    
252     //$this->_options['data_locator_meta']['action'] = "write";
253     //$this->_options['data_locator_meta']['data'] = $data;
254     //$error = $this->data_prefetch();
255    
256     }
257     function form_backend_validation() {
258     $this->set_action("Confirm");
259     return TRUE;
260     }
261     function confirm_action() {
262     return TRUE;
263     }
264     }
265    
266    
267    
268     //class EditTextForm extends StandardFormContent {
269     class EditTextForm extends EditDataItem {
270    
271     var $_whichNews;
272     var $_sql_key_long;
273     var $_sql_key_short;
274     var $_sql_key_title;
275     var $_sql_key_source;
276     var $_language;
277    
278     function EditTextForm($title, $width, $whichNews, $whichLanguage, $options=array()) {
279     // something that has to be executed BEFORE parent constructor
280     //
281    
282     $parent = get_parent_class($this);
283     $this->$parent($title,$options);
284     $this->_whichNews = $whichNews;
285     $this->_sql_key_long = "page/news/feed/" . $whichNews . "/long";
286     $this->_sql_key_short = "page/news/feed/" . $whichNews . "/short";
287     $this->_sql_key_title = "page/news/feed/" . $whichNews . "/title";
288     $this->_sql_key_source = "page/news/feed/" . $whichNews . "/source";
289     $this->_language = $whichLanguage;
290     }
291    
292     function form_init_elements() {
293     //we want an confirmation page for this form.
294    
295     global $app;
296    
297     $this->set_confirm();
298    
299     // add hidden element for page control
300     $this->add_hidden_element( 't', 'News' );
301     $this->add_hidden_element( 'subtopic', $_REQUEST['subtopic'] );
302    
303     $this->add_element( new FEText("Titel", true, 10, 20));
304     $this->add_element( new FETextArea("kurzer Text", true, 10, 20));
305     $this->add_element( new FETextArea("langer Text", true, 10, 20));
306     $this->add_element( new FEText("Quelle", true, 10, 20));
307    
308     $handle=opendir ($app->getConfig("path.news.img.archive"));
309     $myFileList= array();
310     while ($myFile = readdir ($handle)) {
311     if (($myFile <> ".") && ($myFile<> "..") && (strstr($myFile, "."))){$myFileList[$myFile] = $myFile;}
312     }
313     closedir($handle);
314    
315     $this->add_element( new FEListBox("Bilderarchiv", FALSE,"200px", "80px",$myFileList));
316    
317     }
318     function form_init_data() {
319    
320     foreach($this->_datasource->_result as $key => $value) {
321     if ($value['lcountrykey'] == $this->_language) {
322     if ($value['lkey'] == $this->_sql_key_long) {
323     $this->set_element_value("langer Text", $value['lvalue']);
324     }
325     if ($value['lkey'] == $this->_sql_key_short) {
326     $this->set_element_value("kurzer Text", $value['lvalue']);
327     }
328     if ($value['lkey'] == $this->_sql_key_title) {
329     $this->set_element_value("Titel", $value['lvalue']);
330     }
331     if ($value['lkey'] == $this->_sql_key_source) {
332     $this->set_element_value("Quelle", $value['lvalue']);
333     }
334     }
335     }
336    
337     $this->set_element_value("Bilderarchiv", array());
338    
339     }
340    
341    
342     function form_content() {
343     $this->add_form_block("Please enter new text below " . $this->_whichNews, $this->_upload() );
344     }
345    
346     function &_upload() {
347    
348     $table = &html_table($this->_width, 0, 2);
349    
350     $table->add_row($this->element_label("Titel"), $this->element_form("Titel"));
351     $table->add_row($this->element_label("kurzer Text"), $this->element_form("kurzer Text") );
352     $table->add_row($this->element_label("langer Text"), $this->element_form("langer Text") );
353     $table->add_row($this->element_label("Quelle"), $this->element_form("Quelle"));
354     $table->add_row($this->element_label("Bilderarchiv"), $this->element_form("Bilderarchiv"));
355    
356     return $table;
357     }
358    
359    
360     function form_action() {
361    
362     $data = array();
363    
364     foreach($this->_datasource->_result as $key => $value) {
365     if ($value['lcountrykey'] == $this->_language) {
366     if ($value['lkey'] == $this->_sql_key_long) {
367     $data[$key] = $value;
368     $data[$key]['lvalue'] = $this->get_element_value("langer Text");
369     }
370     if ($value['lkey'] == $this->_sql_key_short) {
371     $data[$key] = $value;
372     $data[$key]['lvalue'] = $this->get_element_value("kurzer Text");
373     }
374     if ($value['lkey'] == $this->_sql_key_title) {
375     $data[$key] = $value;
376     $data[$key]['lvalue'] = $this->get_element_value("Titel");
377     }
378     if ($value['lkey'] == $this->_sql_key_source) {
379     $data[$key] = $value;
380     $data[$key]['lvalue'] = $this->get_element_value("Quelle");
381     }
382     }
383     }
384    
385    
386    
387     // write new data to datasource in $data as array (keep old indices, set new values)
388     $this->_options['data_locator_meta']['action'] = "write";
389     $this->_options['data_locator_meta']['data'] = $data;
390     // TODO: 'data_prefetch()' will never return ANYTHING!
391     // Implement some error-handling there or somewhere.
392     $error = $this->data_prefetch();
393    
394    
395    
396    
397     //$error = $this->_datasource->set($item);
398     /* if(!$error) {
399     // fetch fresh data
400     $this->_options['data_locator_meta']['action'] = "read";
401     // unset previous initialed 'data' var
402     $this->_options['data_locator_meta']['data'] = NULL;
403     $this->data_prefetch();
404    
405     $this->set_action_message($this->_confirm_msg);
406     return TRUE;
407     } else {
408     return FALSE;
409     }*/
410    
411     global $app;
412    
413     // This contains the image-file that has to be moved from the archive-dir to the online-dir.
414     // The name of the file has to be changed to the name which is hardcoded in the news-templates.
415     // The online-dir will already contain a file with this name but possibly with a different suffix.
416     // Make sure that this will be removed also, so that there is only one file matching in the online-dir.
417    
418     // prepare to copy selected file from archive-dir to online-dir
419    
420    
421     if ($this->get_element_value("Bilderarchiv")) {
422     $_dest_file_suffix = substr($this->get_element_value("Bilderarchiv"), count($this->get_element_value("Bilderarchiv")) - 4, 4);
423     $_dest_file_name = $app->getConfig("path.news.img.online"). $this->_language ."/img_news_" . $this->_whichNews . "." . $_dest_file_suffix;
424     $_source_file_name = $app->getConfig("path.news.img.archive") . $this->get_element_value("Bilderarchiv");
425    
426     // delete all files in online-dir, which have the current news-number in the filename
427    
428     $handle=opendir ($app->getConfig("path.news.img.online") . $this->_language. "/");
429    
430     while ($myFile = readdir ($handle)) {
431     if (substr($myFile, 9, 1) == $this->_whichNews){unlink($app->getConfig("path.news.img.online") . "de/" . $myFile);}
432     }
433     closedir($handle);
434    
435     copy($_source_file_name, $_dest_file_name);
436     }
437    
438     }
439    
440     function form_backend_validation() {
441     $this->set_action("Confirm");
442     return TRUE;
443     }
444    
445     /**
446     * This method is called ONLY after ALL validation has
447     * passed. This is the method that allows you to
448     * do something with the data, say insert/update records
449     * in the DB.
450     */
451     function confirm_action() {
452    
453    
454     /*
455     // all of the following is to be done later !!!!!
456    
457     // get data
458     //print "All fetched RPC items: " . Dumper($this->_datasource->_result) . "<br>";
459    
460     // write new data to datasource in $data as array (keep old indices, set new values)
461     $this->_options['data_locator_meta']['action'] = "write";
462     $this->_options['data_locator_meta']['data'] = $data;
463     // TODO: 'data_prefetch()' will never return ANYTHING!
464     // Implement some error-handling there or somewhere.
465     $error = $this->data_prefetch();
466    
467     //$error = $this->_datasource->set($item);
468     if(!$error) {
469     // fetch fresh data
470     $this->_options['data_locator_meta']['action'] = "read";
471     // unset previous initialed 'data' var
472     $this->_options['data_locator_meta']['data'] = NULL;
473     $this->data_prefetch();
474    
475     $this->set_action_message($this->_confirm_msg);
476     return TRUE;
477     } else {
478     return FALSE;
479     }*/
480     return TRUE;
481     }
482    
483    
484     }
485    
486    
487     //////////////////////////////////////////////////////////////////////////////////////////
488    
489    
490    
491     class UploadForm extends StandardFormContent {
492    
493     function UploadForm($title, $width) {
494     // something that has to be executed BEFORE parent constructor
495     //
496     //$this->_feFile = new FEFile("testfile", TRUE, 20);
497     //
498     $parent = get_parent_class($this);
499     $this->$parent($title, $PHP_SELF, $width=600);
500     }
501    
502     function form_init_elements() {
503    
504     //print_r "scandir($this->_uploaddir)";
505    
506     // add hidden element for page control
507     $this->add_hidden_element( 't', 'News' );
508     $this->add_hidden_element( 'subtopic', 'upload' );
509     $this->set_confirm(false);
510     $this->add_element( new FEFile("File"));
511    
512     }
513     function form_init_data() {
514     // ???
515     }
516    
517    
518     function form_content() {
519     $this->add_form_block("Waehlen Sie hier ein neues Bild aus:", $this->_upload() );
520     }
521    
522     function &_upload() {
523     $table = &html_table($this->_width, 0, 2);
524     $table->add_row($this->element_label("File"),$this->element_form("File") );
525    
526     return $table;
527     }
528    
529    
530     function form_action() {
531    
532     global $app;
533    
534     $tmp = $this->get_element("File");
535     $fileInformation = $tmp->get_file_info();
536     if ($fileInformation["tmp_name"] > "") {
537    
538     $uploadfile = $app->getConfig("path.news.img.archive") . $fileInformation["name"];
539    
540     /* the destination-name of the uploaded film is hardcoded, but not the suffix (.jpg ....)
541     * so we have to ensure that there are no double files with the same filename but different suffixes
542     * in the online - folder
543     *
544     */
545    
546     if (move_uploaded_file($fileInformation["tmp_name"], $uploadfile)) {
547     print "File was successfully uploaded. ";
548     //print_r($_FILES);
549     } else {
550     print "File not uploaded\n";
551     //print_r($_FILES);
552     }
553     }
554    
555     }
556    
557     function form_backend_validation() {
558     //$this->set_action("Confirm");
559     return TRUE;
560     }
561    
562    
563     function &_user_info() {
564     $table = &html_table(100,0,2);
565     $table->add_row($this->element_label("File"), $this->element_form("File"));
566    
567     return $table;
568     }
569    
570     }
571    
572 udo 1.2 ?>

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