From 28faa7a1466692b74d7a4c5b6e885e7ed48e47e7 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Mon, 18 Feb 2002 16:05:07 +0000 Subject: [PATCH] inital import: example app et_media of the tutorial --- .../doc/et_media/inc/class.et_media.inc.php | 162 ++++++++++++++++++ etemplate/doc/et_media/index.php | 13 ++ etemplate/doc/et_media/setup/phpgw_en.lang | 23 +++ etemplate/doc/et_media/setup/setup.inc.php | 17 ++ .../doc/et_media/setup/tables_current.inc.php | 17 ++ 5 files changed, 232 insertions(+) create mode 100644 etemplate/doc/et_media/inc/class.et_media.inc.php create mode 100644 etemplate/doc/et_media/index.php create mode 100644 etemplate/doc/et_media/setup/phpgw_en.lang create mode 100644 etemplate/doc/et_media/setup/setup.inc.php create mode 100644 etemplate/doc/et_media/setup/tables_current.inc.php diff --git a/etemplate/doc/et_media/inc/class.et_media.inc.php b/etemplate/doc/et_media/inc/class.et_media.inc.php new file mode 100644 index 0000000000..a7b10921b4 --- /dev/null +++ b/etemplate/doc/et_media/inc/class.et_media.inc.php @@ -0,0 +1,162 @@ + * + * -------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the * + * Free Software Foundation; either version 2 of the License, or (at your * + * option) any later version. * + \**************************************************************************/ + + /* $Id$ */ + + if(!isset($GLOBALS['phpgw_info']['flags']['included_classes']['so_sql'])) + { + include(PHPGW_API_INC . '/../../etemplate/inc/class.so_sql.inc.php'); + $GLOBALS['phpgw_info']['flags']['included_classes']['so_sql'] = True; + } + + class et_media extends so_sql + { + var $messages = array( + 'nothing_found' => 'Nothing matched search criteria !!!', + 'anz_found' => '%d matches on search criteria', + 'saved' => 'Entry saved', + 'error_writeing' => 'Error: writeing !!!' + ); + var $types = array( + '' => 'Select one ...', + 'cd' => 'Compact Disc', + 'dvd' => 'DVD', + 'book' => 'Book', + 'video' => 'Video Tape' + ); + + function et_media($lang_on_messages = True) + { + $this->tmpl = CreateObject('etemplate.etemplate','et_media.edit'); + + $this->so_sql('et_media','phpgw_et_media'); // sets up our storage layer using the table 'phpgw_et_media' + $this->empty_on_write = "''"; // that means if a column is empty how to write in the db, the default is NULL + + $this->public_functions += array( + 'edit' => True, + 'writeLangFile' => True + ); + + if ($lang_on_messages) + { + reset($this->messages); + while (list($key,$msg) = each($this->messages)) + $this->messages[$key] = lang($msg); + } + } + + function edit($content='',$msg = '') + { + if (is_array($content)) // not first call from index + { + if ($content['id'] > 0) + { + $this->read($content); + } + //echo "

edit: content ="; _debug_array($content); + $this->data_merge($content); + //echo "

edit: data ="; _debug_array($this->data); + + if (isset($content['save'])) + { + $msg .= $this->messages[!$this->save() ? 'saved' : 'error_writeing']; + } + elseif (isset($content['read'])) + { + unset($content['id']); + $found = $this->search($content,False,'name,author'); + + if (!$found) + { + $msg .= $this->messages['nothing_found']; + } + elseif (count($found) == 1) + { + $this->init($found[0]); + } + else + { + $this->show($found); + return; + } + } + elseif (isset($content['cancel'])) + { + $this->init(); + } + elseif (isset($content['delete'])) + { + $this->delete(); + $this->init(); + } + elseif (isset($content['entry']['edit'])) + { + list($id) = each($content['entry']['edit']); + if ($id > 0) + { + $this->read(array('id' => $id)); + } + } + } + + // now we filling the content array for the next call to etemplate.exec + + $content = $this->data + array( + 'msg' => $msg + ); + $sel_options = array( + 'type' => $this->types + ); + $no_button = array( + 'delete' => !$this->data[$this->db_key_cols[$this->autoinc_id]] + ); + $this->tmpl->exec('et_media.et_media.edit',$content,$sel_options,$no_button,array( + 'id' => $this->data['id'] + )); + } + + function show($found) + { + if (!is_array($found) || !count($found)) + { + $this->edit(); + return; + } + reset($found); + for ($row=1; list($key,$data) = each($found); ++$row) + { + $entry[$row] = $data; + } + $content = array( + 'msg' => sprintf($this->messages['anz_found'],count($found)), + 'entry' => $entry + ); + $this->tmpl->read('et_media.show'); + + $this->tmpl->exec('et_media.et_media.edit',$content); + } + + /*! + @function writeLangFile + @abstract writes langfile with all templates and messages registered here + @discussion can be called via http://domain/phpgroupware/index.php?et_media.et_media.writeLangFile + */ + function writeLangFile() + { + $etm = new et_media(False); // no lang on messages + + $this->tmpl->writeLangFile('et_media','en',$etm->messages); + } + }; + + + diff --git a/etemplate/doc/et_media/index.php b/etemplate/doc/et_media/index.php new file mode 100644 index 0000000000..a0073658a4 --- /dev/null +++ b/etemplate/doc/et_media/index.php @@ -0,0 +1,13 @@ + 'et_media', + 'noheader' => True, + 'nonavbar' => True + ); + include('../header.inc.php'); + + $et_media = CreateObject('et_media.et_media'); + + $et_media->edit(); + + $GLOBALS['phpgw']->common->phpgw_footer(); diff --git a/etemplate/doc/et_media/setup/phpgw_en.lang b/etemplate/doc/et_media/setup/phpgw_en.lang new file mode 100644 index 0000000000..2655617cdd --- /dev/null +++ b/etemplate/doc/et_media/setup/phpgw_en.lang @@ -0,0 +1,23 @@ +%d matches on search criteria et_media en %d matches on search criteria +author et_media en Author +cancel et_media en Cancel +clears the form, without changing anything et_media en clears the form, without changing anything +click here to edit the entry et_media en click here to edit the entry +delete et_media en Delete +deletes an entry et_media en deletes an entry +description et_media en Description +edit et_media en Edit +entry saved et_media en Entry saved +error: writeing !!! et_media en Error: writeing !!! +etemplates mediadb et_media en eTemplates MediaDB +here goes the name of the publication / record et_media en here goes the name of the publication / record +name et_media en Name +nothing matched search criteria !!! et_media en Nothing matched search criteria !!! +please use name, first name et_media en please use Name, First Name +read et_media en Read +reads or searches for entries matching the criteria above et_media en reads or searches for entries matching the criteria above +save et_media en Save +saves the change to the db et_media en saves the change to the db +select the type fitting most et_media en select the type fitting most +type et_media en Type +we have a fulltext search using that description et_media en we have a fulltext search using that description diff --git a/etemplate/doc/et_media/setup/setup.inc.php b/etemplate/doc/et_media/setup/setup.inc.php new file mode 100644 index 0000000000..7f491cb49e --- /dev/null +++ b/etemplate/doc/et_media/setup/setup.inc.php @@ -0,0 +1,17 @@ + 'phpgwapi', + 'versions' => Array('0.9.13','0.9.14','0.9.15') + ); + $setup_info['et_media']['depends'][] = array( // this is only necessary as long the etemplate-class is not in the api + 'appname' => 'etemplate', + 'versions' => Array('0.9.13','0.9.14','0.9.15') + ); diff --git a/etemplate/doc/et_media/setup/tables_current.inc.php b/etemplate/doc/et_media/setup/tables_current.inc.php new file mode 100644 index 0000000000..ee56533f57 --- /dev/null +++ b/etemplate/doc/et_media/setup/tables_current.inc.php @@ -0,0 +1,17 @@ + array( + 'fd' => array( + 'id' => array('type' => 'auto','nullable' => False), + 'name' => array('type' => 'varchar','precision' => '100','nullable' => False), + 'author' => array('type' => 'varchar','precision' => '100','nullable' => False), + 'descr' => array('type' => 'text','nullable' => False), + 'type' => array('type' => 'varchar','precision' => '20','nullable' => False) + ), + 'pk' => array('id'), + 'fk' => array(), + 'ix' => array(), + 'uc' => array() + ) + );