diff --git a/etemplate/inc/class.db_tools.inc.php b/etemplate/inc/class.db_tools.inc.php index 777a223f0e..db25aa3413 100644 --- a/etemplate/inc/class.db_tools.inc.php +++ b/etemplate/inc/class.db_tools.inc.php @@ -50,6 +50,19 @@ 'timestamp' => 'timestamp', 'varchar' => 'varchar' ); + var $setup_header = 'renames = array(); } if (!$this->app) { @@ -132,17 +146,21 @@ } if (isset($content['write_tables'])) { - $msg .= $this->messages[$this->write($this->app,$this->data) ? - 'writen' : 'error_writing']; + if ($this->needs_save('',$this->app,$this->table,$this->data[$posted_table])) + { + return; + } + $msg .= $this->messages[$this->write($this->app,$this->data) ? 'writen' : 'error_writing']; } elseif (isset($content['delete'])) { list($col) = each($content['delete']); - reset($this->data[$posted_table]['fd']); - while ($col-- > 0 && list($key,$data) = each($this->data[$posted_table]['fd'])) ; + @reset($this->data[$posted_table]['fd']); + while ($col-- > 0 && list($key,$data) = @each($this->data[$posted_table]['fd'])) ; unset($this->data[$posted_table]['fd'][$key]); + $this->changes[$posted_table][$key] = '**deleted**'; } elseif (isset($content['add_column'])) { @@ -219,7 +237,7 @@ echo 'editor.edit: content ='; _debug_array($content); } $this->editor->exec('etemplate.db_tools.edit',$content,$sel_options,$no_button, - array('posted_table' => $this->table,'posted_app' => $this->app)); + array('posted_table' => $this->table,'posted_app' => $this->app,'changes' => $this->changes)); } /*! @@ -241,10 +259,15 @@ $this->table = $cont['table']; $this->read($this->app,$this->data); $this->data[$this->table] = $cont['edited_table']; - $this->write($this->app,$this->data); + $this->changes = $cont['changes']; + if ($cont['new_version']) + { + $this->update($this->app,$this->data,$cont['new_version']); + } $msg .= $this->messages[$this->write($this->app,$this->data) ? 'writen' : 'error_writing']; } + $this->changes = array(); // return to edit with everything set, so the user gets the table he asked for $this->edit(array( 'app' => $cont['new_app'], @@ -270,15 +293,24 @@ } $content = array( 'app' => $posted_app, - 'table' => $posted_table + 'table' => $posted_table, + 'version' => $this->setup_version($posted_app) ); $preserv = $content + array( 'new_app' => $new_app, 'new_table' => $new_table, - 'edited_table' => $edited_table + 'edited_table' => $edited_table, + 'changes' => $this->changes ); + $content['new_version'] = $content['version']; + $tmpl = new etemplate('etemplate.db-tools.ask_save'); + if (!file_exists(PHPGW_SERVER_ROOT."/$posted_app/setup/tables_current.inc.php")) + { + $tmpl->disable_cells('version'); + $tmpl->disable_cells('new_version'); + } $tmpl->exec('etemplate.db_tools.needs_save',$content,array(),array(),$preserv); return True; // dont continue in edit @@ -323,6 +355,13 @@ */ function content2table($content) { + if (!is_array($this->data)) + { + $this->read($content['posted_app'],$this->data); + } + $old_cols = $this->data[$posted_table = $content['posted_table']]['fd']; + $this->changes = $content['changes']; + $table = array(); $table['fd'] = array(); // do it in the default order of tables_* $table['pk'] = array(); @@ -332,8 +371,17 @@ for (reset($content),$n = 1; isset($content["Row$n"]); ++$n) { $col = $content["Row$n"]; + + while ((list($old_name,$old_col) = @each($old_cols)) && + $this->changes[$posted_table][$old_name] == '**deleted**') ; + if (($name = $col['name']) != '') // ignoring lines without column-name { + if ($col['name'] != $old_name && $n <= count($old_cols)) // column renamed --> remeber it + { + $this->changes[$posted_table][$old_name] = $col['name']; + //echo "
content2table: $posted_table.$old_name renamed to $col[name]
\n"; + } while (list($prop,$val) = each($col)) { switch ($prop) @@ -369,6 +417,7 @@ if ($this->debug >= 2) { echo "content2table: table ="; _debug_array($table); + echo "
changes = "; _debug_array($this->changes); } return $table; } @@ -483,7 +532,7 @@ } if (!$header) { - $header = "setup_header . "\n\n"; } if (!is_writeable(PHPGW_SERVER_ROOT."/$app/setup") || !($f = fopen($file,'w'))) { @@ -499,6 +548,206 @@ return True; } + /*! + @function setup_version($app,$new = '') + @abstract reads and updates the version in file $app/setup/setup.inc.php if $new != '' + @return the version or False if the file could not be read or written + */ + function setup_version($app,$new = '') + { + //echo "
etemplate.db_tools.setup_version('$app','$new')
\n"; + + $file = PHPGW_SERVER_ROOT."/$app/setup/setup.inc.php"; + if (file_exists($file)) + { + include($file); + } + if (!is_array($setup_info[$app]) || !isset($setup_info[$app]['version'])) + { + return False; + } + if ($new == '' || $setup_info[$app]['version'] == $new) + { + return $setup_info[$app]['version']; + } + if (!($f = fopen($file,'r'))) + { + return False; + } + $fcontent = fread($f,filesize($file)); + fclose ($f); + + if (is_writable(PHPGW_SERVER_ROOT."/$app/setup")) + { + rename($file,PHPGW_SERVER_ROOT."/$app/setup/setup.old.inc.php"); + } + $fnew = eregi_replace("(.*\\$"."setup_info\\['$app'\\]\\['version'\\][ \\t]*=[ \\t]*')[^']*('.*)","\\1$new"."\\2",$fcontent); + + if (!is_writeable(PHPGW_SERVER_ROOT."/$app/setup") || !($f = fopen($file,'w'))) + { + return False; + } + fwrite($f,$fnew); + fclose($f); + + return $new; + } + + /*! + @function update($app,$current,$version) + @abstract updates file /$app/setup/tables_update.inc.php to reflect changes in $current + @param $app app-name + @param $current new tabledefinitions + @param $version new version + @return True if file writen else False + */ + function update($app,$current,$version) + { + //echo "etemplate.db_tools.update('$app',...,'$version')
\n"; + + if (!is_writable(PHPGW_SERVER_ROOT."/$app/setup")) + { + return False; + } + $file_baseline = PHPGW_SERVER_ROOT."/$app/setup/tables_baseline.inc.php"; + $file_current = PHPGW_SERVER_ROOT."/$app/setup/tables_current.inc.php"; + $file_update = PHPGW_SERVER_ROOT."/$app/setup/tables_update.inc.php"; + + if (!file_exists($file_baseline) && !copy($file_current,$file_baseline)) + { + //echo "Can't copy $file_current to $file_baseline !!!
\n"; + return False; + } + $old_version = $this->setup_version($app); + $old_version_ = str_replace('.','_',$old_version); + + if (file_exists($file_update)) + { + $f = fopen($file_update,'r'); + $update = fread($f,filesize($file_update)); + $update = str_replace('?>','',$update); + fclose($f); + rename($file_update,PHPGW_SERVER_ROOT."/$app/setup/tables_update.old.inc.php"); + } + else + { + $update = $this->setup_header; + } + $update .= " + \$test[] = '$old_version'; + function $app"."_upgrade$old_version_() + {\n"; + + $update .= $this->update_schema($app,$current); + + $update .= "\n + \$GLOBALS['setup_info']['$app']['currentver'] = '$version'; + return \$GLOBALS['setup_info']['phpgwapi']['currentver']; + } +?".">\n"; + if (!($f = fopen($file_update,'w'))) + { + //echo "Cant open '$update' for writing !!!
\n"; + return False; + } + fwrite($f,$update); + fclose($f); + + $this->setup_version($app,$version); + + return True; + } + + function remove_from_array(&$arr,$value) + { + reset($arr); + while (list($key,$val) = each($arr)) + { + if ($val == $value) + { + unset($arr[$key]); + } + } + } + + function update_schema($app,$current) + { + $this->read($app,$old); + + reset($old); + while (list($name,$table_def) = each($old)) + { + if (!isset($current[$name])) // table $name droped + { + $update .= "\t\t\$GLOBALS['phpgw_setup']->oProc->DropTable('$name');\n"; + } + else + { + reset($table_def['fd']); + while(list($col,$col_def) = each($table_def['fd'])) + { + if (!isset($current[$name]['fd'][$col])) // column $col droped + { + if (!isset($this->changes[$name][$col]) || $this->changes[$name][$col] == '**deleted**') + { + $new_table_def = $table_def; + unset($new_table_def['fd'][$col]); + $this->remove_from_array($new_table_def['pk'],$col); + $this->remove_from_array($new_table_def['fk'],$col); + $this->remove_from_array($new_table_def['ix'],$col); + $this->remove_from_array($new_table_def['uc'],$col); + $update .= "\t\t\$GLOBALS['phpgw_setup']->oProc->DropColumn('$name',"; + $update .= $this->write_array($new_table_def,2).",'$col');\n"; + } + else // column $col renamed + { + $new_col = $this->changes[$name][$col]; + $update .= "\t\t\$GLOBALS['phpgw_setup']->oProc->RenameColumn('$name','$col','$new_col');\n"; + } + } + } + @reset($this->changes[$name]); + while (list($col,$new_col) = @each($this->changes[$name])) + { + if ($new_col != '**deleted**') + { + $old[$name]['fd'][$new_col] = $old[$name]['fd'][$col]; // to be able to detect further changes of the definition + unset($old[$name]['fd'][$col]); + } + } + } + } + reset($current); + while(list($name,$table_def) = each($current)) + { + if (!isset($old[$name])) // table $name added + { + $update .= "\t\t\$GLOBALS['phpgw_setup']->oProc->CreateTable('$name',"; + $update .= $this->write_array($table_def,2).");\n"; + } + else + { + $old_norm = $this->normalize($old[$name]); + $new_norm = $this->normalize($table_def); + reset($table_def['fd']); + while (list($col,$col_def) = each($table_def['fd'])) + { + if (($add = !isset($old[$name]['fd'][$col])) || // column $col added + serialize($old_norm['fd'][$col]) != serialize($new_norm['fd'][$col])) // column definition altered + { + $update .= "\t\t$"."GLOBALS['phpgw_setup']->oProc->".($add ? 'Add' : 'Alter')."Column('$name','$col',"; + $update .= $this->write_array($col_def,2) . ");\n"; + } + } + } + } + if ($this->debug) + { + echo "update_schema($app, ...) =
$update)\n"; + } + return $update; + } + /*! @function normalize($table) @abstract sets all nullable properties to True or False diff --git a/etemplate/setup/etemplates.inc.php b/etemplate/setup/etemplates.inc.php index 3bec7fa501..74f5025d97 100644 --- a/etemplate/setup/etemplates.inc.php +++ b/etemplate/setup/etemplates.inc.php @@ -1,5 +1,5 @@ 'etemplate.editor','template' => '','lang' => '','group' => '0','version' => '0.9.13.004','data' => 'a:8:{i:0;a:1:{s:1:\"A\";s:2:\"5%\";}i:1;a:1:{s:1:\"A\";a:4:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:2:\"bi\";s:5:\"label\";s:27:\"Editable Templates - Editor\";s:4:\"name\";s:3:\"msg\";}}i:2;a:1:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"hrule\";s:4:\"span\";s:3:\"all\";}}i:3;a:1:{s:1:\"A\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:21:\"etemplate.editor.keys\";}}i:4;a:1:{s:1:\"A\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:24:\"etemplate.editor.buttons\";}}i:5;a:1:{s:1:\"A\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:21:\"etemplate.editor.edit\";}}i:6;a:1:{s:1:\"A\";a:3:{s:4:\"type\";s:5:\"label\";s:4:\"span\";s:3:\"all\";s:5:\"label\";s:10:\"CSS-styles\";}}i:7;a:1:{s:1:\"A\";a:5:{s:4:\"type\";s:8:\"textarea\";s:4:\"size\";s:5:\"10,80\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:5:\"style\";s:4:\"help\";s:155:\"embeded CSS styles, eg. \'.red { background: red; }\' (note the \'.\' before the class-name) or \'@import url(...)\' (class names are global for the whole page!)\";}}}','size' => '100%','style' => '',); @@ -7,18 +7,22 @@ $templ_data[] = array('name' => 'etemplate.editor.show','template' => '','lang' $templ_data[] = array('name' => 'etemplate.editor.delete','template' => '','lang' => '','group' => '0','version' => '0.9.13.001','data' => 'a:7:{i:0;a:4:{s:1:\"A\";s:3:\"25%\";s:1:\"B\";s:3:\"30%\";s:1:\"E\";s:3:\"10%\";s:1:\"F\";s:3:\"35%\";}i:1;a:6:{s:1:\"A\";a:3:{s:4:\"type\";s:5:\"label\";s:4:\"span\";s:3:\"all\";s:5:\"label\";s:36:\"Editable Templates - Delete Template\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}}i:2;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"hrule\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}}i:3;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}}i:4;a:6:{s:1:\"A\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"B\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"30\";s:5:\"label\";s:15:\"Delete Template\";s:4:\"name\";s:4:\"name\";s:8:\"readonly\";s:1:\"1\";}s:1:\"C\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"10\";s:4:\"name\";s:8:\"template\";s:8:\"readonly\";s:1:\"1\";}s:1:\"D\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:1:\"5\";s:4:\"name\";s:4:\"lang\";s:8:\"readonly\";s:1:\"1\";}s:1:\"E\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"10\";s:5:\"label\";s:7:\"Version\";s:4:\"name\";s:7:\"version\";s:8:\"readonly\";s:1:\"1\";}s:1:\"F\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:1:\"?\";}}i:5;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}}i:6;a:6:{s:1:\"A\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"B\";a:5:{s:4:\"type\";s:6:\"button\";s:4:\"span\";s:1:\"2\";s:5:\"label\";s:3:\"Yes\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:3:\"yes\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:4:{s:4:\"type\";s:6:\"button\";s:4:\"span\";s:3:\"all\";s:5:\"label\";s:2:\"No\";s:4:\"name\";s:2:\"no\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}}}','size' => '100%','style' => '',); +$templ_data[] = array('name' => 'etemplate.db-tools.cols','template' => '','lang' => '','group' => '0','version' => '0.9.13.001','data' => 'a:3:{i:0;a:2:{s:2:\"c1\";s:3:\"nmh\";s:2:\"c2\";s:3:\"nmr\";}i:1;a:12:{s:1:\"A\";a:4:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:1:\"#\";s:7:\"no_lang\";s:1:\"1\";s:5:\"align\";s:6:\"center\";}s:1:\"B\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:10:\"ColumnName\";}s:1:\"C\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:4:\"Type\";}s:1:\"D\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:9:\"Precision\";}s:1:\"E\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:5:\"Scale\";}s:1:\"F\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:8:\"Nullable\";}s:1:\"G\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:6:\"Unique\";}s:1:\"H\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:11:\"Primary Key\";}s:1:\"I\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:7:\"Indexed\";}s:1:\"J\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:11:\"Foreign Key\";}s:1:\"K\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:7:\"Default\";}s:1:\"L\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:10:\"Add Column\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:10:\"add_column\";}}i:2;a:12:{s:1:\"A\";a:4:{s:4:\"type\";s:5:\"label\";s:7:\"no_lang\";s:1:\"1\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:12:\"Row${row}[n]\";}s:1:\"B\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"20\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:15:\"Row${row}[name]\";s:4:\"help\";s:127:\"need to be unique in the table and no reseved word from SQL, best prefix all with a common 2-digit short for the app, eg. \'et_\'\";}s:1:\"C\";a:4:{s:4:\"type\";s:6:\"select\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:15:\"Row${row}[type]\";s:4:\"help\";s:18:\"type of the column\";}s:1:\"D\";a:4:{s:4:\"type\";s:3:\"int\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:20:\"Row${row}[precision]\";s:4:\"help\";s:64:\"length for char+varchar, precisions int: 2, 4, 8 and float: 4, 8\";}s:1:\"E\";a:3:{s:4:\"type\";s:3:\"int\";s:4:\"name\";s:16:\"Row${row}[scale]\";s:4:\"help\";s:15:\"scale for float\";}s:1:\"F\";a:4:{s:4:\"type\";s:8:\"checkbox\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:19:\"Row${row}[nullable]\";s:4:\"help\";s:31:\"can have special SQL-value NULL\";}s:1:\"G\";a:4:{s:4:\"type\";s:8:\"checkbox\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:13:\"Row${row}[uc]\";s:4:\"help\";s:59:\"DB ensures that every row has a unique value in that column\";}s:1:\"H\";a:4:{s:4:\"type\";s:8:\"checkbox\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:13:\"Row${row}[pk]\";s:4:\"help\";s:52:\"Primary key for the table, gets automaticaly indexed\";}s:1:\"I\";a:4:{s:4:\"type\";s:8:\"checkbox\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:13:\"Row${row}[ix]\";s:4:\"help\";s:81:\"an indexed column speeds up querys using that column (cost space on the disk !!!)\";}s:1:\"J\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"20\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:13:\"Row${row}[fk]\";s:4:\"help\";s:46:\"name of other table where column is a key from\";}s:1:\"K\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"20\";s:4:\"name\";s:18:\"Row${row}[default]\";s:4:\"help\";s:54:\"enter \'\' for an empty default, nothing mean no default\";}s:1:\"L\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:13:\"Delete Column\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:12:\"delete[$row]\";}}}','size' => '','style' => '',); + $templ_data[] = array('name' => 'etemplate.editor.values','template' => '','lang' => '','group' => '0','version' => '0.9.13.001','data' => 'a:3:{i:0;a:2:{s:2:\"c1\";s:3:\"nmh\";s:2:\"c2\";s:3:\"nmr\";}i:1;a:2:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:3:\"Key\";}s:1:\"B\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:5:\"Value\";}}i:2;a:2:{s:1:\"A\";a:2:{s:4:\"type\";s:4:\"text\";s:4:\"name\";s:8:\"$col$row\";}s:1:\"B\";a:2:{s:4:\"type\";s:4:\"text\";s:4:\"name\";s:8:\"$col$row\";}}}','size' => ',,1','style' => '',); +$templ_data[] = array('name' => 'etemplate.editor','template' => '','lang' => '','group' => '0','version' => '0.9.13.005','data' => 'a:8:{i:0;a:0:{}i:1;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:2:\"bi\";s:5:\"label\";s:27:\"Editable Templates - Editor\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:3:\"msg\";}s:1:\"B\";a:5:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:8:\"DB-Tools\";s:5:\"align\";s:5:\"right\";s:4:\"name\";s:8:\"db_tools\";s:4:\"help\";s:21:\"to start the DB-Tools\";}}i:2;a:2:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"hrule\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}i:3;a:2:{s:1:\"A\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:21:\"etemplate.editor.keys\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}i:4;a:2:{s:1:\"A\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:24:\"etemplate.editor.buttons\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}i:5;a:2:{s:1:\"A\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:21:\"etemplate.editor.edit\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}i:6;a:2:{s:1:\"A\";a:3:{s:4:\"type\";s:5:\"label\";s:4:\"span\";s:3:\"all\";s:5:\"label\";s:10:\"CSS-styles\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}i:7;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:8:\"textarea\";s:4:\"size\";s:5:\"10,80\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:5:\"style\";s:4:\"help\";s:155:\"embeded CSS styles, eg. \'.red { background: red; }\' (note the \'.\' before the class-name) or \'@import url(...)\' (class names are global for the whole page!)\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}}','size' => '100%','style' => '',); + $templ_data[] = array('name' => 'etemplate.editor.row_header.top','template' => '','lang' => '','group' => '0','version' => '0.9.13.005','data' => 'a:2:{i:0;a:0:{}i:1;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"+\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:13:\"insert_row[0]\";s:4:\"help\";s:37:\"insert new row in front of first Line\";}s:1:\"B\";a:5:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"X\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:19:\"exchange_row[$row_]\";s:4:\"help\";s:22:\"exchange this two rows\";}}}','size' => '100%,100%','style' => '',); $templ_data[] = array('name' => 'etemplate.editor.row_header','template' => '','lang' => '','group' => '0','version' => '0.9.13.005','data' => 'a:5:{i:0;a:0:{}i:1;a:2:{s:1:\"A\";a:3:{s:4:\"type\";s:8:\"template\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:31:\"etemplate.editor.row_header.top\";}s:1:\"B\";a:3:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:6:\"Height\";s:5:\"align\";s:6:\"center\";}}i:2;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:1:\"b\";s:7:\"no_lang\";s:1:\"1\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:4:\".row\";}s:1:\"B\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:1:\"5\";s:4:\"name\";s:14:\"height[h$row_]\";s:4:\"help\";s:35:\"height of row (in percent or pixel)\";}}i:3;a:2:{s:1:\"A\";a:6:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"-\";s:7:\"no_lang\";s:1:\"1\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:17:\"delete_row[$row_]\";s:4:\"help\";s:33:\"remove Row (can NOT be undone!!!)\";}s:1:\"B\";a:3:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:5:\"class\";s:5:\"align\";s:6:\"center\";}}i:4;a:2:{s:1:\"A\";a:6:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"+\";s:7:\"no_lang\";s:1:\"1\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:17:\"insert_row[$row_]\";s:4:\"help\";s:29:\"insert new row after this one\";}s:1:\"B\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:1:\"5\";s:4:\"name\";s:13:\"class[c$row_]\";s:4:\"help\";s:112:\"CSS-class name for this row, preset: \'nmh\' = NextMatch header, \'nmr\' = alternating NM row, \'nmr0\'+\'nmr1\' NM rows\";}}}','size' => ',100%','style' => '',); -$templ_data[] = array('name' => 'etemplate.editor.cell','template' => '','lang' => '','group' => '0','version' => '0.9.13.005','data' => 'a:5:{i:0;a:4:{s:2:\"c1\";s:3:\"nmr\";s:2:\"c2\";s:3:\"nmr\";s:2:\"c3\";s:3:\"nmr\";s:2:\"c4\";s:3:\"nmr\";}i:1;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:4:\"Type\";}s:1:\"B\";a:3:{s:4:\"type\";s:6:\"select\";s:4:\"name\";s:4:\"type\";s:4:\"help\";s:57:\"type of the field (select Label if field should be empty)\";}s:1:\"C\";a:3:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:4:\"Size\";s:5:\"align\";s:6:\"center\";}s:1:\"D\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"10\";s:4:\"name\";s:4:\"size\";s:4:\"help\";s:187:\"Label:[bold][italic] Text:[len][,max] Numbers:[min][,[max][,len]] T.area:[rows][,cols] Radiob.:value H.Rule:[width] Templ.:[IndexInContent] Select:[multiselect] Date:[values: eg. \'Y-m-d\']\";}s:1:\"E\";a:3:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:11:\"Span, Class\";s:5:\"align\";s:6:\"center\";}s:1:\"F\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"10\";s:4:\"name\";s:4:\"span\";s:4:\"help\";s:111:\"number of colums the field/cell should span or \'all\' for the remaining columns, CSS-class name (for the TD tag)\";}}i:2;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:5:\"Label\";}s:1:\"B\";a:3:{s:4:\"type\";s:4:\"text\";s:4:\"name\";s:5:\"label\";s:4:\"help\";s:118:\"displayed in front of input or input is inserted for a \'%s\' in the label (label of the Submitbutton or Image-filename)\";}s:1:\"C\";a:6:{s:4:\"type\";s:8:\"checkbox\";s:4:\"span\";s:1:\"2\";s:5:\"label\";s:16:\"%s NoTranslation\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:7:\"no_lang\";s:4:\"help\";s:82:\"select if content of field should not be translated (label gets always translated)\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:3:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:5:\"Align\";s:5:\"align\";s:6:\"center\";}s:1:\"F\";a:3:{s:4:\"type\";s:6:\"select\";s:4:\"name\";s:5:\"align\";s:4:\"help\";s:48:\"alignment of label and input-field in table-cell\";}}i:3;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:4:\"Name\";}s:1:\"B\";a:3:{s:4:\"type\";s:4:\"text\";s:4:\"name\";s:4:\"name\";s:4:\"help\";s:78:\"index/name of returned content (name of the Template, Link / Method for Image)\";}s:1:\"C\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"span\";s:1:\"4\";s:4:\"name\";s:26:\"etemplate.editor.cell_opts\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}}i:4;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:4:\"Help\";}s:1:\"B\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"50\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:4:\"help\";s:4:\"help\";s:60:\"displayed in statusline of browser if input-field gets focus\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}}}','size' => ',100%','style' => '',); - -$templ_data[] = array('name' => 'etemplate.editor.keys','template' => '','lang' => '','group' => '0','version' => '0.9.13.003','data' => 'a:2:{i:0;a:0:{}i:1;a:4:{s:1:\"A\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"30\";s:5:\"label\";s:4:\"Name\";s:4:\"name\";s:4:\"name\";s:4:\"help\";s:75:\"name of the eTemplate, should be in form application.function[.subTemplate]\";}s:1:\"B\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"12\";s:5:\"label\";s:8:\"Template\";s:4:\"name\";s:8:\"template\";s:4:\"help\";s:125:\"name of phpgw-template set (e.g. verdilak): \'\' = default (will read pref. template, us \'default\' to read default template \'\')\";}s:1:\"C\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:3:\"7,5\";s:5:\"label\";s:4:\"Lang\";s:4:\"name\";s:4:\"lang\";s:4:\"help\";s:162:\"language-short (eg. \'en\' for english) for language-dependent template (\'\' reads your pref. languages or the default, us \'default\' to read the default template \'\')\";}s:1:\"D\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:5:\"12,10\";s:5:\"label\";s:7:\"Version\";s:4:\"name\";s:7:\"version\";s:4:\"help\";s:116:\"version-number, should be in the form: major.minor.revision.number (eg. 0.9.13.001 all numbers filled up with zeros)\";}}}','size' => '','style' => '',); +$templ_data[] = array('name' => 'etemplate.editor.show','template' => '','lang' => '','group' => '0','version' => '0.9.13.002','data' => 'a:7:{i:0;a:0:{}i:1;a:1:{s:1:\"A\";a:5:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:2:\"bi\";s:5:\"label\";s:34:\"Editable Templates - Show Template\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:3:\"msg\";}}i:2;a:1:{s:1:\"A\";a:1:{s:4:\"type\";s:5:\"hrule\";}}i:3;a:1:{s:1:\"A\";a:2:{s:4:\"type\";s:8:\"template\";s:4:\"name\";s:21:\"etemplate.editor.keys\";}}i:4;a:1:{s:1:\"A\";a:2:{s:4:\"type\";s:8:\"template\";s:4:\"name\";s:24:\"etemplate.editor.buttons\";}}i:5;a:1:{s:1:\"A\";a:1:{s:4:\"type\";s:5:\"hrule\";}}i:6;a:1:{s:1:\"A\";a:2:{s:4:\"type\";s:8:\"template\";s:4:\"size\";s:4:\"cont\";}}}','size' => '100%','style' => '',); $templ_data[] = array('name' => 'etemplate.editor.controls','template' => '','lang' => '','group' => '0','version' => '0.9.13.004','data' => 'a:3:{i:0;a:0:{}i:1;a:1:{s:1:\"A\";a:2:{s:4:\"type\";s:8:\"template\";s:4:\"name\";s:21:\"etemplate.editor.keys\";}}i:2;a:1:{s:1:\"A\";a:2:{s:4:\"type\";s:8:\"template\";s:4:\"name\";s:24:\"etemplate.editor.buttons\";}}}','size' => '','style' => '',); +$templ_data[] = array('name' => 'etemplate.editor.delete','template' => '','lang' => '','group' => '0','version' => '0.9.13.002','data' => 'a:7:{i:0;a:0:{}i:1;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:5:\"label\";s:4:\"span\";s:3:\"all\";s:5:\"label\";s:36:\"Editable Templates - Delete Template\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:3:\"msg\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}i:2;a:2:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"hrule\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}i:3;a:2:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}i:4;a:2:{s:1:\"A\";a:3:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:6:\"Delete\";s:5:\"align\";s:5:\"right\";}s:1:\"B\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"name\";s:21:\"etemplate.editor.keys\";s:8:\"readonly\";s:1:\"1\";}}i:5;a:2:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}}i:6;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:3:\"Yes\";s:5:\"align\";s:5:\"right\";s:4:\"name\";s:3:\"yes\";s:4:\"help\";s:70:\"deletes the above spez. eTemplate from the database, can NOT be undone\";}s:1:\"B\";a:5:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:2:\"No\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:2:\"no\";s:4:\"help\";s:32:\"returns savely, WITHOUT deleting\";}}}','size' => '100%','style' => '',); + $templ_data[] = array('name' => 'etemplate.editor.row_header','template' => '','lang' => '','group' => '0','version' => '0.9.13.004','data' => 'a:5:{i:0;a:0:{}i:1;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"+\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:13:\"insert_row[0]\";s:4:\"help\";s:37:\"insert new row in front of first Line\";}s:1:\"B\";a:3:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:6:\"Height\";s:5:\"align\";s:6:\"center\";}}i:2;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:1:\"b\";s:7:\"no_lang\";s:1:\"1\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:4:\".row\";}s:1:\"B\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:1:\"5\";s:4:\"name\";s:14:\"height[h$row_]\";s:4:\"help\";s:35:\"height of row (in percent or pixel)\";}}i:3;a:2:{s:1:\"A\";a:6:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"-\";s:7:\"no_lang\";s:1:\"1\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:17:\"delete_row[$row_]\";s:4:\"help\";s:33:\"remove Row (can NOT be undone!!!)\";}s:1:\"B\";a:3:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:5:\"class\";s:5:\"align\";s:6:\"center\";}}i:4;a:2:{s:1:\"A\";a:5:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"+\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:17:\"insert_row[$row_]\";s:4:\"help\";s:29:\"insert new row after this one\";}s:1:\"B\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:1:\"5\";s:4:\"name\";s:13:\"class[c$row_]\";s:4:\"help\";s:112:\"CSS-class name for this row, preset: \'nmh\' = NextMatch header, \'nmr\' = alternating NM row, \'nmr0\'+\'nmr1\' NM rows\";}}}','size' => ',100%','style' => '',); $templ_data[] = array('name' => 'etemplate.editor.buttons','template' => '','lang' => '','group' => '0','version' => '0.9.13.003','data' => 'a:2:{i:0;a:0:{}i:1;a:10:{s:1:\"A\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:4:\"Read\";s:4:\"name\";s:4:\"read\";s:4:\"help\";s:49:\"read eTemplate from database (for the keys above)\";}s:1:\"B\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:14:\"Show (no save)\";s:4:\"name\";s:4:\"show\";s:4:\"help\";s:61:\"shows/displays eTemplate for testing, does NOT save it before\";}s:1:\"C\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:11:\"Show Values\";s:4:\"name\";s:6:\"values\";s:4:\"help\";s:65:\"shows / allows you to enter values into the eTemplate for testing\";}s:1:\"D\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:4:\"Save\";s:4:\"name\";s:4:\"save\";s:4:\"help\";s:77:\"save the eTemplate under the above keys (name, ...), change them for a SaveAs\";}s:1:\"E\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:4:\"Edit\";s:4:\"name\";s:4:\"edit\";s:4:\"help\";s:30:\"edit the eTemplate spez. above\";}s:1:\"F\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:6:\"Delete\";s:4:\"name\";s:6:\"delete\";s:4:\"help\";s:33:\"deletes the eTemplate spez. above\";}s:1:\"G\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:10:\"Dump4Setup\";s:4:\"name\";s:4:\"dump\";s:4:\"help\";s:88:\"writes a \'etemplates.inc.php\' file (for application in Name) in the setup-dir of the app\";}s:1:\"H\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:14:\"Write Langfile\";s:4:\"name\";s:8:\"langfile\";s:4:\"help\";s:85:\"creates an english (\'en\') langfile from label and helptexts (for application in Name)\";}s:1:\"I\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"J\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"20\";s:5:\"label\";s:28:\"Width, Height, Border, class\";s:4:\"name\";s:4:\"size\";s:4:\"help\";s:95:\"width, height, border-line-thickness of the table / template and CSS-class name (for TABLE tag)\";}}}','size' => '','style' => '',); @@ -39,8 +43,6 @@ $templ_data[] = array('name' => 'etemplate.editor.edit','template' => '','lang' $templ_data[] = array('name' => 'etemplate.editor.edit_cell','template' => '','lang' => '','group' => '0','version' => '0.9.13.001','data' => 'a:3:{i:1;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:4:\"Type\";}s:1:\"B\";a:2:{s:4:\"type\";s:6:\"select\";s:4:\"name\";s:4:\"type\";}s:1:\"C\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:4:\"Size\";}s:1:\"D\";a:3:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:1:\"6\";s:4:\"name\";s:4:\"size\";}s:1:\"E\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:4:\"Span\";}s:1:\"F\";a:3:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:1:\"5\";s:4:\"name\";s:4:\"span\";}}i:2;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:5:\"Label\";}s:1:\"B\";a:2:{s:4:\"type\";s:4:\"text\";s:4:\"name\";s:5:\"label\";}s:1:\"C\";a:5:{s:4:\"type\";s:8:\"checkbox\";s:4:\"span\";s:1:\"2\";s:5:\"label\";s:8:\"L. after\";s:7:\"l_after\";s:1:\"1\";s:4:\"name\";s:7:\"l_after\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:5:\"Align\";}s:1:\"F\";a:2:{s:4:\"type\";s:6:\"select\";s:4:\"name\";s:5:\"align\";}}i:3;a:6:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:5:\"label\";s:4:\"Name\";}s:1:\"B\";a:2:{s:4:\"type\";s:4:\"text\";s:4:\"name\";s:4:\"name\";}s:1:\"C\";a:5:{s:4:\"type\";s:8:\"checkbox\";s:4:\"span\";s:1:\"2\";s:5:\"label\";s:8:\"Readonly\";s:7:\"l_after\";s:1:\"1\";s:4:\"name\";s:8:\"readonly\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:5:{s:4:\"type\";s:8:\"checkbox\";s:4:\"span\";s:1:\"2\";s:5:\"label\";s:8:\"Disabled\";s:7:\"l_after\";s:1:\"1\";s:4:\"name\";s:8:\"disabled\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}}}','size' => '','style' => '',); -$templ_data[] = array('name' => 'etemplate.editor.edit','template' => '','lang' => '','group' => '0','version' => '0.9.13.002','data' => 'a:3:{i:0;a:1:{s:2:\"c1\";s:3:\"nmh\";}i:1;a:2:{s:1:\"A\";a:3:{s:4:\"type\";s:5:\"image\";s:5:\"label\";s:10:\"navbar.gif\";s:5:\"align\";s:6:\"center\";}s:1:\"B\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"size\";s:8:\"Col$col,\";s:4:\"name\";s:27:\"etemplate.editor.col_header\";}}i:2;a:2:{s:1:\"A\";a:4:{s:4:\"type\";s:8:\"template\";s:4:\"size\";s:8:\"Row$row,\";s:4:\"span\";s:4:\",nmh\";s:4:\"name\";s:27:\"etemplate.editor.row_header\";}s:1:\"B\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"size\";s:8:\"$col$row\";s:4:\"name\";s:21:\"etemplate.editor.cell\";}}}','size' => ',,1,editorEdit','style' => '.editorEdit { border-color: black }',); - $templ_data[] = array('name' => 'etemplate.editor','template' => '','lang' => '','group' => '0','version' => '0.9.13.002','data' => 'a:6:{i:0;a:2:{s:1:\"F\";s:2:\"5%\";s:1:\"G\";s:3:\"85%\";}i:1;a:7:{s:1:\"A\";a:5:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:1:\"b\";s:4:\"span\";s:3:\"all\";s:5:\"label\";s:27:\"Editable Templates - Editor\";s:4:\"name\";s:3:\"msg\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"G\";a:1:{s:4:\"type\";s:5:\"label\";}}i:2;a:7:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"hrule\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"G\";a:1:{s:4:\"type\";s:5:\"label\";}}i:3;a:7:{s:1:\"A\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"30\";s:4:\"span\";s:1:\"3\";s:5:\"label\";s:4:\"Name\";s:4:\"name\";s:4:\"name\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"10\";s:4:\"span\";s:1:\"2\";s:5:\"label\";s:8:\"Template\";s:4:\"name\";s:8:\"template\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:1:\"5\";s:5:\"label\";s:4:\"Lang\";s:4:\"name\";s:4:\"lang\";}s:1:\"G\";a:4:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"10\";s:5:\"label\";s:7:\"Version\";s:4:\"name\";s:7:\"version\";}}i:4;a:7:{s:1:\"A\";a:3:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:4:\"Read\";s:4:\"name\";s:4:\"read\";}s:1:\"B\";a:3:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:14:\"Show (no save)\";s:4:\"name\";s:4:\"show\";}s:1:\"C\";a:3:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:4:\"Save\";s:4:\"name\";s:4:\"save\";}s:1:\"D\";a:3:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:6:\"Delete\";s:4:\"name\";s:6:\"delete\";}s:1:\"E\";a:3:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:10:\"Dump4Setup\";s:4:\"name\";s:4:\"dump\";}s:1:\"F\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"10\";s:4:\"span\";s:1:\"2\";s:5:\"label\";s:21:\"Width, Height, Border\";s:4:\"name\";s:4:\"size\";}s:1:\"G\";a:1:{s:4:\"type\";s:5:\"label\";}}i:5;a:7:{s:1:\"A\";a:3:{s:4:\"type\";s:8:\"template\";s:4:\"span\";s:3:\"all\";s:4:\"name\";s:21:\"etemplate.editor.edit\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"G\";a:1:{s:4:\"type\";s:5:\"label\";}}}','size' => '','style' => '',); $templ_data[] = array('name' => 'etemplate.editor.col_header','template' => '','lang' => '','group' => '0','version' => '0.9.13.002','data' => 'a:2:{i:0;a:0:{}i:1;a:5:{s:1:\"A\";a:3:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"+\";s:4:\"name\";s:13:\"insert_col[0]\";}s:1:\"B\";a:3:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:1:\"b\";s:4:\"name\";s:4:\".col\";}s:1:\"C\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:1:\"5\";s:5:\"label\";s:5:\"Width\";s:5:\"align\";s:6:\"center\";s:4:\"name\";s:12:\"width[$col_]\";}s:1:\"D\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"-\";s:5:\"align\";s:5:\"right\";s:4:\"name\";s:15:\"delete_col[$c_]\";}s:1:\"E\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:1:\"+\";s:5:\"align\";s:5:\"right\";s:4:\"name\";s:15:\"insert_col[$c_]\";}}}','size' => '100%','style' => '',); @@ -61,15 +63,15 @@ $templ_data[] = array('name' => 'etemplate.editor','template' => '','lang' => '' $templ_data[] = array('name' => 'etemplate.db-tools.edit','template' => '','lang' => '','group' => '0','version' => '0.9.13.001','data' => 'a:6:{i:0;a:1:{s:1:\"D\";s:2:\"1%\";}i:1;a:7:{s:1:\"A\";a:6:{s:4:\"type\";s:5:\"label\";s:4:\"size\";s:2:\"bi\";s:4:\"span\";s:1:\"6\";s:5:\"label\";s:29:\"Editable Templates - DB-Tools\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:3:\"msg\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"G\";a:5:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:16:\"eTemplate Editor\";s:5:\"align\";s:5:\"right\";s:4:\"name\";s:6:\"editor\";s:4:\"help\";s:29:\"to start the eTemplate editor\";}}i:2;a:7:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"hrule\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"G\";a:1:{s:4:\"type\";s:5:\"label\";}}i:3;a:7:{s:1:\"A\";a:2:{s:4:\"type\";s:5:\"label\";s:4:\"span\";s:3:\"all\";}s:1:\"B\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"C\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"D\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"E\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"F\";a:1:{s:4:\"type\";s:5:\"label\";}s:1:\"G\";a:1:{s:4:\"type\";s:5:\"label\";}}i:4;a:7:{s:1:\"A\";a:6:{s:4:\"type\";s:6:\"select\";s:5:\"label\";s:11:\"Application\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:3:\"app\";s:8:\"onchange\";s:1:\"1\";s:4:\"help\";s:21:\"Select an application\";}s:1:\"B\";a:6:{s:4:\"type\";s:6:\"select\";s:5:\"label\";s:9:\"TableName\";s:7:\"no_lang\";s:1:\"1\";s:4:\"name\";s:10:\"table_name\";s:8:\"onchange\";s:1:\"1\";s:4:\"help\";s:34:\"Select an table of the application\";}s:1:\"C\";a:5:{s:4:\"type\";s:4:\"text\";s:4:\"size\";s:2:\"20\";s:5:\"align\";s:5:\"right\";s:4:\"name\";s:14:\"new_table_name\";s:4:\"help\";s:20:\"Name of table to add\";}s:1:\"D\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:9:\"Add Table\";s:4:\"name\";s:9:\"add_table\";s:4:\"help\";s:38:\"Create a new table for the application\";}s:1:\"E\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:6:\"Import\";s:4:\"name\";s:6:\"import\";s:4:\"help\";s:47:\"Import table-definitions from existing db-table\";}s:1:\"F\";a:5:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:10:\"Drop Table\";s:4:\"name\";s:10:\"drop_table\";s:8:\"disabled\";s:1:\"1\";s:4:\"help\";s:37:\"Drop a table - this can NOT be undone\";}s:1:\"G\";a:4:{s:4:\"type\";s:6:\"button\";s:5:\"label\";s:12:\"Write Tables\";s:4:\"name\";s:12:\"write_tables\";s:4:\"help\";s:40:\"Write