diff --git a/importexport/inc/class.bodefinitions.inc.php b/importexport/inc/class.bodefinitions.inc.php index e33ddd4a10..b2df98e3a1 100644 --- a/importexport/inc/class.bodefinitions.inc.php +++ b/importexport/inc/class.bodefinitions.inc.php @@ -99,6 +99,10 @@ class bodefinitions { public function delete($keys) { $this->so_sql->delete(array('definition_id' => $keys)); + // clear private cach + foreach ($keys as $key) { + unset($this->definitions[array_search($key,$this->definitions)]); + } } /** @@ -161,7 +165,7 @@ class bodefinitions { { $export_data = array('metainfo' => array( 'type' => 'importexport definitions', - 'charset' => 'bal', + 'charset' => $GLOBALS['egw']->translation->charset(), 'entries' => count($keys), )); @@ -184,6 +188,7 @@ class bodefinitions { public function import($import_file) { + // read given file and check if its a valid definition if (!is_file($import_file['tmp_name'])) return false; $f = fopen($import_file['tmp_name'],'r'); $data = fread($f,100000); @@ -192,14 +197,12 @@ class bodefinitions { $metainfo = $data['metainfo']; unset($data['metainfo']); + // convert charset into internal used charset + $data = $GLOBALS['egw']->translation->convert($data,$metainfo['charset'],$GLOBALS['egw']->translation->charset()); + + // save definition(s) into internal table foreach ($data as $name => $definition) { - error_log(print_r($definition,true)); - //if (($ext = $this->search(array('name' => $name),'definition_id')) !== false) - //{ - // error_log(print_r($ext,true)); - // $definition['definition_id'] = $ext[0]['definition_id']; - //} $this->save($definition); } } diff --git a/importexport/inc/class.definition.inc.php b/importexport/inc/class.definition.inc.php index d343929c43..698801718f 100644 --- a/importexport/inc/class.definition.inc.php +++ b/importexport/inc/class.definition.inc.php @@ -35,6 +35,7 @@ class definition implements iface_egw_record { 'allowed_users' => 'array', 'options' => 'array', 'owner' => 'int', + 'description' => 'string', ); /** diff --git a/importexport/inc/class.export_csv.inc.php b/importexport/inc/class.export_csv.inc.php index 358054b709..35a3eef570 100644 --- a/importexport/inc/class.export_csv.inc.php +++ b/importexport/inc/class.export_csv.inc.php @@ -13,6 +13,7 @@ require_once('class.iface_export_record.inc.php'); require_once('class.import_export_helper_functions.inc.php'); require_once('class.iface_egw_record.inc.php'); +require_once(EGW_INCLUDE_ROOT. '/phpgwapi/inc/class.translation.inc.php'); /** * class export_csv @@ -90,7 +91,10 @@ class export_csv implements iface_export_record * @access public */ public function __construct( $_handle, $_charset, array $_options=array() ) { - $this->translation &= $GLOBALS['egw']->translation; + if (!is_object($GLOBALS['egw']->translation)) { + $GLOBALS['egw']->translation = new translation(); + } + $this->translation = &$GLOBALS['egw']->translation; $this->handle = $_handle; $this->csv_charset = $_charset; if (!empty($_options)) { @@ -108,7 +112,7 @@ class export_csv implements iface_export_record throw new Exception('Error: Field mapping can\'t be set during ongoing export!'); } foreach ($_mapping as $egw_filed => $csv_field) { - $this->mapping[$egw_filed] = $this->translation->convert($csv_field, $this->csv_charset); + $this->mapping[$egw_filed] = $this->translation->convert($csv_field, $this->translation->charset(), $this->csv_charset); } } @@ -136,6 +140,9 @@ class export_csv implements iface_export_record $this->mapping = array_combine(array_keys($record_data),array_keys($record_data)); } + // just for debug... + $this->mapping = $this->translation->convert($this->mapping, 'utf-8', 'iso-8859-1');//$this->translation->charset()); + if ($this->num_of_records == 0 && $this->csv_options['begin_with_fieldnames'] && !empty($this->mapping)) { fputcsv($this->handle,array_values($this->mapping),$this->csv_options['delimiter'],$this->csv_options['enclosure']); } @@ -145,6 +152,9 @@ class export_csv implements iface_export_record $record_data[$egw_field] = import_export_helper_functions::conversion($record_data,$this->conversion); } + // do charset translation + $record_data = $this->translation->convert($record_data, $this->translation->charset(), $this->csv_charset); + // do fieldmapping foreach ($this->mapping as $egw_field => $csv_field) { $this->record[$csv_field] = $record_data[$egw_field]; diff --git a/importexport/inc/class.iface_export_plugin.inc.php b/importexport/inc/class.iface_export_plugin.inc.php index f79853f2e7..ef0507b4b2 100644 --- a/importexport/inc/class.iface_export_plugin.inc.php +++ b/importexport/inc/class.iface_export_plugin.inc.php @@ -21,7 +21,7 @@ * to attend the importexport framwork with your export. * * NOTE: This is an easy interface, cause plugins live in theire own - * space. Means that they are respnsible for generationg a defintion AND + * space. Means that they are responsible for generating a defintion AND * working on that definition. * So this interface just garanties the interaction with userinterfaces. It * has nothing to do with datatypes. @@ -78,7 +78,6 @@ interface iface_export_plugin { * preserv => array, * ) */ - public static function get_options_etpl(); /** diff --git a/importexport/inc/class.import_export_helper_functions.inc.php b/importexport/inc/class.import_export_helper_functions.inc.php index 99bfbe6dbf..ce092950dd 100755 --- a/importexport/inc/class.import_export_helper_functions.inc.php +++ b/importexport/inc/class.import_export_helper_functions.inc.php @@ -27,12 +27,8 @@ class import_export_helper_functions /** * nothing to construct here, only static functions! - * - * @return bool false */ - public function __construct() { - return false; - } + /** * converts accound_lid to account_id * @@ -154,6 +150,7 @@ class import_export_helper_functions * @return bool * @static * @access public + * @todo replace this function with a function dealing with reg expressions! */ public static function conversion( $_record, $_conversion ) { diff --git a/importexport/inc/class.uiexport.inc.php b/importexport/inc/class.uiexport.inc.php index ddea48fc1a..56224c8428 100644 --- a/importexport/inc/class.uiexport.inc.php +++ b/importexport/inc/class.uiexport.inc.php @@ -40,6 +40,7 @@ class uiexport { public function __construct() { $this->js = $GLOBALS['egw']->js = is_object($GLOBALS['egw']->js) ? $GLOBALS['egw']->js : CreateObject('phpgwapi.javascript'); + $this->js->validate_file('.','export_dialog','importexport'); $this->user = $GLOBALS['egw_info']['user']['user_id']; $this->export_plugins = import_export_helper_functions::get_plugins('all','export'); $GLOBALS['egw_info']['flags']['include_xajax'] = true; @@ -47,7 +48,7 @@ class uiexport { } public function export_dialog($_content=array()) { - $tabs = 'general_tab|selection_tab|options_tab|templates_tab'; + $tabs = 'general_tab|selection_tab|options_tab'; $content = array(); $sel_options = array(); $readonlys = array(); @@ -56,53 +57,90 @@ class uiexport { if(empty($_content)) { $et = new etemplate(self::_appname. '.export_dialog'); $_appname = $_GET['appname']; - $_plugin = $_GET['plugin']; + $_definition =$_GET['definition']; + $_plugin = $_GET['plugin']; // NOTE: definition _must_ be 'expert' if for plugin to be used! $_selection = $_GET['selection']; - // if appname is given and valid, list available plugins (if no plugin is given) + // if appname is given and valid, list available definitions (if no definition is given) if (!empty($_appname) && $GLOBALS['egw']->acl->check('run',1,$_appname)) { $content['appname'] = $_appname; $preserv['appname'] = $_appname; $readonlys['appname'] = true; $this->js->set_onload("set_style_by_class('tr','select_appname','display','none');"); - (array)$plugins = $this->export_plugins[$_appname]['export']; - if(isset($plugins[$_plugin])) { - $content['plugin'] = $_plugin; - $selected_plugin = $_plugin; - $this->js->set_onload("set_style_by_class('tr','select_plugin','display','none');"); + // fill definitions + $sel_options['definition'] = array(); + $definitions = new bodefinitions(array( + 'type' => 'export', + 'application' => isset($content['appname']) ? $content['appname'] : '%' + )); + foreach ((array)$definitions->get_definitions() as $identifier) { + $definition = new definition($identifier); + if ($title = $definition->get_title()) { + $sel_options['definition'][$title] = $title; + } + unset($definition); + } + unset($definitions); + $sel_options['definition']['expert'] = lang('Expert options'); + + if(isset($_definition) && array_key_exists($_definition,$sel_options[$_definition])) { + $content['definition'] = $_definition; } else { - $plugins_classnames = array_keys($plugins); - $selected_plugin = $plugins_classnames[0]; - $sel_options['plugin'] = $plugins; + $defdescs = array_keys($sel_options['definition']); + $content['definition'] = $sel_options['definition'][$defdescs[0]]; + unset($defdescs); } - if (!empty($selected_plugin)) { - $plugin_object = new $selected_plugin; - - $content['plugin_description'] = $plugin_object->get_description(); - - // fill options tab - // TODO: do we need all options templates online? - // NO, we can manipulate the session array of template id on xajax request - // however, there might be other solutions... we solve this in 1.3 - $content['plugin_options_html'] = $plugin_object->get_options_etpl(); - - // fill selection tab - if ($_selection) { - $readonlys[$tabs]['selection_tab'] = true; - $content['selection'] = $_selection; - $preserv['selection'] = $_selection; + // fill plugins + $sel_options['plugin'] = $this->export_plugins[$_appname]['export']; + + // show definitions or plugins in ui? + if($content['defintion'] == 'expert') { + if(isset($_plugin) && array_key_exists($_plugin,$sel_options['plugin'])) { + $content['plugin'] = $_plugin; + $selected_plugin = $_plugin; } else { - // ToDo: I need to think abaout it... - // are selectors abstracted in the iface_egw_record_entity ? - // if so, we might not want to have html here ? - $content['plugin_selectors_html'] = $plugin_object->get_selectors_html(); + $plugins_classnames = array_keys($plugins); + $selected_plugin = $plugins_classnames[0]; + $sel_options['plugin'] = $plugins; } - unset ($plugin_object); + $this->js->set_onload("set_style_by_class('tr','select_definition','display','none');"); } + else { + $this->js->set_onload("set_style_by_class('tr','select_plugin','display','none');"); + $this->js->set_onload("set_style_by_class('tr','save_definition','display','none');"); + + $definition = new definition($content['definition']); + $content['description'] = $definition->description; + } + + // handle selector + //$plugin_object = new $selected_plugin; + + //$content['description'] = $plugin_object->get_description(); + + // fill options tab + // TODO: do we need all options templates online? + // NO, we can manipulate the session array of template id on xajax request + // however, there might be other solutions... we solve this in 1.3 + //$content['plugin_options_html'] = $plugin_object->get_options_etpl(); + + // fill selection tab + if ($_selection) { + $readonlys[$tabs]['selection_tab'] = true; + $content['selection'] = $_selection; + $preserv['selection'] = $_selection; + } + else { + // ToDo: I need to think abaout it... + // are selectors abstracted in the iface_egw_record_entity ? + // if so, we might not want to have html here ? + //$content['plugin_selectors_html'] = $plugin_object->get_selectors_html(); + } + //unset ($plugin_object); } // if no appname is supplied, list apps which can export else { @@ -120,23 +158,6 @@ class uiexport { "); } - // fill templates_tab - $sel_options['templates'] = array(); - $definitions = new bodefinitions(array( - 'type' => 'export', - 'application' => isset($content['appname']) ? $content['appname'] : '%' - )); - foreach ((array)$definitions->get_definitions() as $identifier) { - $definition = new definition($identifier); - if ($title = $definition->get_title()) { - $sel_options['templates'][$title] = $title; - } - unset($definition); - } - unset($definitions); - if (empty($sel_options['templates'])) { - $readonlys[$tabs]['templates_tab'] = true; - } // disable preview box $this->js->set_onload("set_style_by_class('tr','preview-box','display','none');"); } @@ -146,25 +167,36 @@ class uiexport { //error_log(__LINE__.__FILE__.'$_content: '.print_r($_content,true)); $response =& new xajaxResponse(); - $definition = new definition(); - $definition->definition_id = $_content['definition_id'] ? $_content['definition_id'] : ''; - $definition->name = $_content['name'] ? $_content['name'] : ''; - $definition->application = $_content['appname']; - $definition->plugin = $_content['plugin']; - $definition->type = 'export'; - $definition->allowed_users = $_content['allowed_users'] ? $_content['allowed_users'] : $this->user; - $definition->owner = $_content['owner'] ? $_content['owner'] : $this->user; + if ($_content['defintion'] == 'expert') { + $definition = new definition(); + $definition->definition_id = $_content['definition_id'] ? $_content['definition_id'] : ''; + $definition->name = $_content['name'] ? $_content['name'] : ''; + $definition->application = $_content['appname']; + $definition->plugin = $_content['plugin']; + $definition->type = 'export'; + $definition->allowed_users = $_content['allowed_users'] ? $_content['allowed_users'] : $this->user; + $definition->owner = $_content['owner'] ? $_content['owner'] : $this->user; + } + else { + $definition = new definition($_content['definition']); + } + + if (isset($definition->options['selection'])) { + //$definition->options = parse(...) + } + else { + $definition->options = array_merge( + $definition->options, + array('selection' => $_content['selection']) + ); + } - //$definition->options = parse(...) - $definition->options = array( - 'selection' => $_content['selection'], - ); $tmpfname = tempnam('/tmp','export'); $file = fopen($tmpfname, "w+"); if (! $charset = $definition->options['charset']) { $charset = $GLOBALS['egw']->translation->charset(); } - $plugin_object = new $_content['plugin']; + $plugin_object = new $definition->plugin; $plugin_object->export($file, $charset, $definition); if($_content['export'] == 'pressed') { @@ -190,6 +222,7 @@ class uiexport { fclose($file); unlink($tmpfname); + $preview = $GLOBALS['egw']->translation->convert($preview,'iso-8859-1','utf-8'); $response->addAssign('exec[preview-box]','innerHTML',$preview); $response->addAssign('divPoweredBy','style.display','none'); $response->addAssign('exec[preview-box]','style.display','inline'); diff --git a/importexport/setup/etemplates.inc.php b/importexport/setup/etemplates.inc.php index b6d7e5848f..3ea6125383 100644 --- a/importexport/setup/etemplates.inc.php +++ b/importexport/setup/etemplates.inc.php @@ -2,7 +2,7 @@ /** * eGroupWare - eTemplates for Application importexport * http://www.egroupware.org - * generated by soetemplate::dump4setup() 2006-11-10 16:25 + * generated by soetemplate::dump4setup() 2006-11-16 12:03 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package importexport @@ -14,7 +14,7 @@ $templ_version=1; $templ_data[] = array('name' => 'importexport.definition_index','template' => '','lang' => '','group' => '0','version' => '0.0.1','data' => 'a:1:{i:0;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:1:{s:2:"h1";s:6:",!@msg";}i:1;a:1:{s:1:"A";a:4:{s:4:"span";s:13:"all,redItalic";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";s:4:"type";s:5:"label";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:2:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";}i:1;a:6:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"Type";s:4:"span";s:11:",lr_padding";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"Name";s:4:"span";s:11:",lr_padding";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:5:"label";s:11:"Application";s:4:"span";s:11:",lr_padding";}s:1:"D";a:4:{s:5:"align";s:6:"center";s:4:"type";s:5:"label";s:5:"label";s:13:"Allowed users";s:4:"span";s:11:",lr_padding";}s:1:"E";a:5:{s:5:"label";s:3:"Add";s:5:"align";s:6:"center";s:4:"type";s:6:"button";s:4:"span";s:11:",lr_padding";s:7:"onclick";s:213:"window.open(egw::link(\'/index.php\',\'menuaction=importexport.uidefinitions.wizzard\'),\'\',\'dependent=yes,width=400,height=400,location=no,menubar=no,toolbar=no,scrollbars=yes,status=yes\'); return false; return false;";}s:1:"F";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:6:{s:5:"label";s:6:"Delete";s:4:"name";s:15:"delete_selected";s:4:"type";s:6:"button";s:4:"help";s:31:"delete ALL selected definitions";s:4:"size";s:6:"delete";s:7:"onclick";s:65:"return confirm(\'Do you really want to DELETE this definitions?\');";}i:2;a:5:{s:5:"label";s:6:"Export";s:4:"name";s:15:"export_selected";s:4:"type";s:6:"button";s:4:"help";s:31:"export ALL selected definitions";s:4:"size";s:10:"fileexport";}}}i:2;a:6:{s:1:"A";a:4:{s:7:"no_lang";s:1:"1";s:4:"type";s:5:"image";s:4:"span";s:11:",lr_padding";s:4:"name";s:12:"${row}[type]";}s:1:"B";a:4:{s:7:"no_lang";s:1:"1";s:4:"name";s:12:"${row}[name]";s:4:"type";s:5:"label";s:4:"span";s:11:",lr_padding";}s:1:"C";a:4:{s:7:"no_lang";s:1:"1";s:4:"name";s:19:"${row}[application]";s:4:"type";s:5:"label";s:4:"span";s:11:",lr_padding";}s:1:"D";a:6:{s:7:"no_lang";s:1:"1";s:4:"type";s:14:"select-account";s:4:"span";s:11:",lr_padding";s:8:"readonly";s:1:"1";s:4:"name";s:21:"${row}[allowed_users]";s:4:"size";s:1:"5";}s:1:"E";a:5:{s:5:"align";s:6:"center";s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:5:"label";s:4:"Edit";s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:7:"onclick";s:237:"window.open(egw::link(\'/index.php\',\'menuaction=importexport.uidefinitions.edit&definition=$row_cont[name]\'),\'\',\'dependent=yes,width=400,height=400,location=no,menubar=no,toolbar=no,scrollbars=yes,status=yes\'); return false; return false;";}i:2;a:6:{s:5:"label";s:6:"Delete";s:7:"onclick";s:41:"return confirm(\'Delete this definition\');";s:4:"name";s:32:"delete[$row_cont[definition_id]]";s:4:"type";s:6:"button";s:4:"size";s:6:"delete";s:4:"help";s:21:"Delete this eTemplate";}}s:1:"F";a:4:{s:5:"align";s:6:"center";s:4:"name";s:34:"selected[$row_cont[definition_id]]";s:4:"type";s:8:"checkbox";s:4:"help";s:34:"select this eTemplate to delete it";}}}s:4:"cols";i:6;s:4:"rows";i:2;}}}s:4:"cols";i:1;s:4:"rows";i:2;s:4:"size";s:4:"100%";}}','size' => '100%','style' => '.redItalic { color:red; font-style:italic;} td.lr_padding { padding-left: 5px; padding-right: 5px; }','modified' => '1145972373',); -$templ_data[] = array('name' => 'importexport.export_dialog','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"name";s:3:"msg";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:3:"tab";s:5:"label";s:35:"General|Selection|Options|Templates";s:4:"name";s:51:"general_tab|selection_tab|options_tab|templates_tab";}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:16:"Save as template";s:4:"name";s:16:"save_as_template";}}i:4;a:1:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Export";s:4:"name";s:6:"export";s:7:"onclick";s:36:"xajax_eT_wrapper(this);return false;";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:7:"Preview";s:4:"name";s:7:"preview";s:7:"onclick";s:36:"xajax_eT_wrapper(this);return false;";}}i:2;a:5:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:5:"align";s:5:"right";s:4:"name";s:6:"cancel";s:7:"onclick";s:29:"window.close(); return false;";}}}i:5;a:1:{s:1:"A";a:6:{s:4:"type";s:3:"box";s:4:"size";s:1:"1";s:4:"name";s:11:"preview-box";s:6:"needed";s:1:"1";i:1;a:1:{s:4:"type";s:5:"label";}s:4:"span";s:12:",preview-box";}}i:6;a:1:{s:1:"A";a:7:{s:4:"type";s:3:"box";s:4:"size";s:1:"1";s:4:"span";s:20:",preview-box-buttons";s:4:"name";s:19:"preview-box-buttons";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:2:"OK";s:5:"align";s:6:"center";s:7:"onclick";s:230:"document.getElementById(\'divPoweredBy\').style.display=\'block\'; document.getElementById(form::name(\'preview-box\')).style.display=\'none\'; document.getElementById(form::name(\'preview-box-buttons\')).style.display=\'none\'; return false;";}s:6:"needed";s:1:"1";s:5:"align";s:6:"center";}}}s:4:"rows";i:6;s:4:"cols";i:1;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '.preview-box { +$templ_data[] = array('name' => 'importexport.export_dialog','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:1:{s:2:"c3";s:15:"save_definition";}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"name";s:3:"msg";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:3:"tab";s:5:"label";s:25:"General|Selection|Options";s:4:"name";s:37:"general_tab|selection_tab|options_tab";}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:18:"Save as definition";s:4:"name";s:18:"save_as_definition";}}i:4;a:1:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:6:"Export";s:4:"name";s:6:"export";s:7:"onclick";s:36:"xajax_eT_wrapper(this);return false;";}i:2;a:4:{s:4:"type";s:6:"button";s:5:"label";s:7:"Preview";s:4:"name";s:7:"preview";s:7:"onclick";s:36:"xajax_eT_wrapper(this);return false;";}}i:2;a:5:{s:4:"type";s:6:"button";s:5:"label";s:6:"Cancel";s:5:"align";s:5:"right";s:4:"name";s:6:"cancel";s:7:"onclick";s:29:"window.close(); return false;";}}}i:5;a:1:{s:1:"A";a:6:{s:4:"type";s:3:"box";s:4:"size";s:1:"1";s:4:"name";s:11:"preview-box";s:6:"needed";s:1:"1";i:1;a:1:{s:4:"type";s:5:"label";}s:4:"span";s:12:",preview-box";}}i:6;a:1:{s:1:"A";a:7:{s:4:"type";s:3:"box";s:4:"size";s:1:"1";s:4:"span";s:20:",preview-box-buttons";s:4:"name";s:19:"preview-box-buttons";i:1;a:4:{s:4:"type";s:6:"button";s:5:"label";s:2:"OK";s:5:"align";s:6:"center";s:7:"onclick";s:230:"document.getElementById(\'divPoweredBy\').style.display=\'block\'; document.getElementById(form::name(\'preview-box\')).style.display=\'none\'; document.getElementById(form::name(\'preview-box-buttons\')).style.display=\'none\'; return false;";}s:6:"needed";s:1:"1";s:5:"align";s:6:"center";}}}s:4:"rows";i:6;s:4:"cols";i:1;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '.preview-box { position: absolute; top: 0px; left: 0px; @@ -38,14 +38,12 @@ $templ_data[] = array('name' => 'importexport.export_dialog','template' => '','l $templ_data[] = array('name' => 'importexport.export_dialog.general_tab','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:1:{s:2:"c1";s:4:",top";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"image";s:4:"name";s:6:"export";}s:1:"B";a:2:{s:4:"type";s:8:"template";s:4:"name";s:46:"importexport.export_dialog.general_tab_content";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"size";s:6:",200px";s:7:"options";a:1:{i:1;s:5:"200px";}}}','size' => ',200px','style' => '','modified' => '1158223670',); -$templ_data[] = array('name' => 'importexport.export_dialog.general_tab_content','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:2:{s:2:"c2";s:14:"select_appname";s:2:"c3";s:13:"select_plugin";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:14:"some nice text";}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:"label";s:5:"label";s:18:"Select application";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:7:"no_lang";s:1:"1";s:4:"name";s:7:"appname";s:8:"onchange";s:69:"xajax_doXMLHTTP(\'importexport.uiexport.ajax_get_plugins\',this.value);";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:13:"Select format";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:7:"no_lang";s:1:"1";s:4:"name";s:6:"plugin";s:8:"onchange";s:76:"xajax_doXMLHTTP(\'importexport.uiexport.ajax_get_plugin_options\',this.value);";}}i:4;a:2:{s:1:"A";a:6:{s:4:"type";s:3:"box";s:4:"span";s:3:"all";s:4:"name";s:18:"plugin_description";s:6:"needed";s:1:"1";s:4:"size";s:1:"1";i:1;a:7:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:6:"needed";s:1:"1";i:1;a:4:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:6:"needed";s:1:"1";s:5:"label";s:11:"Description";}i:2;a:2:{s:4:"type";s:5:"label";s:4:"name";s:18:"plugin_description";}s:4:"name";s:18:"plugin_description";s:7:"no_lang";s:1:"1";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:4;s:4:"cols";i:2;}}','size' => '','style' => '','modified' => '1158223021',); +$templ_data[] = array('name' => 'importexport.export_dialog.general_tab_content','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:3:{s:2:"c2";s:14:"select_appname";s:2:"c3";s:17:"select_definition";s:2:"c4";s:13:"select_plugin";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:5:"label";s:14:"some nice text";}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:"label";s:5:"label";s:18:"Select application";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:7:"no_lang";s:1:"1";s:4:"name";s:7:"appname";s:8:"onchange";s:69:"xajax_doXMLHTTP(\'importexport.uiexport.ajax_get_plugins\',this.value);";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:17:"Select definition";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:7:"no_lang";s:1:"1";s:4:"name";s:10:"definition";s:8:"onchange";s:52:"export_dialog.change_definition(this); return false;";}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:13:"Select plugin";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:8:"onchange";s:80:"xajax_doXMLHTTP(\'importexport.uiexport.ajax_get_definition_options\',this.value);";s:7:"no_lang";s:1:"1";s:4:"name";s:6:"plugin";}}i:5;a:2:{s:1:"A";a:6:{s:4:"type";s:3:"box";s:4:"span";s:3:"all";s:4:"name";s:18:"plugin_description";s:6:"needed";s:1:"1";s:4:"size";s:1:"1";i:1;a:7:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:6:"needed";s:1:"1";i:1;a:4:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";s:6:"needed";s:1:"1";s:5:"label";s:11:"Description";}i:2;a:2:{s:4:"type";s:5:"label";s:4:"name";s:18:"plugin_description";}s:4:"name";s:11:"description";s:7:"no_lang";s:1:"1";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:5;s:4:"cols";i:2;}}','size' => '','style' => '','modified' => '1158223021',); $templ_data[] = array('name' => 'importexport.export_dialog.options_tab','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:1:{s:2:"c1";s:4:",top";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:4:"name";s:19:"plugin_options_html";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:6:",200px";s:7:"options";a:1:{i:1;s:5:"200px";}}}','size' => ',200px','style' => '','modified' => '1158223824',); $templ_data[] = array('name' => 'importexport.export_dialog.selection_tab','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:1:{s:2:"c1";s:4:",top";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:4:"html";s:4:"name";s:21:"plugin_selectors_html";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:6:",200px";s:7:"options";a:1:{i:1;s:5:"200px";}}}','size' => ',200px','style' => '','modified' => '1158223796',); -$templ_data[] = array('name' => 'importexport.export_dialog.templates_tab','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:17:"Select a template";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:6:"select";s:7:"no_lang";s:1:"1";s:4:"name";s:9:"templates";s:4:"size";s:1:"5";}}i:3;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:11:"Description";}}i:4;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"name";s:11:"description";}}i:5;a:1:{s:1:"A";a:3:{s:4:"type";s:6:"button";s:5:"label";s:4:"Load";s:4:"name";s:4:"load";}}}s:4:"rows";i:5;s:4:"cols";i:1;s:4:"size";s:6:",200px";s:7:"options";a:1:{i:1;s:5:"200px";}}}','size' => ',200px','style' => '','modified' => '1158223945',); - $templ_data[] = array('name' => 'importexport.import_definition','template' => '','lang' => '','group' => '0','version' => '0.0.1','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:92:"Import definitions (Attension: Existing definitions with equal names will be overwritten!!!)";}}i:2;a:1:{s:1:"A";a:2:{s:4:"type";s:4:"file";s:4:"name";s:11:"import_file";}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:6:"button";s:5:"label";s:6:"Import";s:4:"name";s:6:"import";}}}s:4:"rows";i:3;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1150533844',); $templ_data[] = array('name' => 'importexport.wizzardbox','template' => '','lang' => '','group' => '0','version' => '0.0.1','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:3:{s:2:"c2";s:7:",bottom";s:2:"c1";s:4:",top";s:1:"A";s:4:"100%";}i:1;a:1:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:7:"no_lang";s:1:"1";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:4:"hbox";s:7:"no_lang";s:1:"1";s:4:"size";s:1:"1";i:1;a:3:{s:4:"type";s:5:"image";s:7:"no_lang";s:1:"1";s:4:"name";s:12:"importexport";}}i:2;a:4:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"1";i:1;a:2:{s:4:"type";s:8:"template";s:4:"name";s:15:"wizzard_content";}s:4:"span";s:16:",wizzard_content";}}}i:2;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:4:"span";s:3:"all";i:1;a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";i:1;a:4:{s:4:"type";s:6:"button";s:4:"name";s:16:"button[previous]";s:5:"label";s:8:"previous";s:7:"onclick";s:37:"xajax_eT_wrapper(this); return false;";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[next]";s:5:"label";s:4:"next";s:7:"onclick";s:37:"xajax_eT_wrapper(this); return false;";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[finish]";s:5:"label";s:6:"finish";s:7:"onclick";s:37:"xajax_eT_wrapper(this); return false;";}}i:2;a:5:{s:4:"type";s:6:"button";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"cancel";s:7:"onclick";s:29:"window.close(); return false;";s:5:"align";s:5:"right";}s:5:"align";s:5:"right";}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"size";s:4:",400";s:7:"options";a:1:{i:1;s:3:"400";}}}','size' => ',400','style' => '.wizzard_content fieldset { diff --git a/importexport/setup/setup.inc.php b/importexport/setup/setup.inc.php index 59617c8ef1..7bcac91876 100644 --- a/importexport/setup/setup.inc.php +++ b/importexport/setup/setup.inc.php @@ -9,7 +9,7 @@ */ $setup_info['importexport']['name'] = 'importexport'; - $setup_info['importexport']['version'] = '0.002'; + $setup_info['importexport']['version'] = '0.003'; $setup_info['importexport']['app_order'] = 2; $setup_info['importexport']['enable'] = 2; $setup_info['importexport']['tables'] = array('egw_importexport_definitions'); @@ -44,3 +44,4 @@ + diff --git a/importexport/setup/tables_current.inc.php b/importexport/setup/tables_current.inc.php index d3d920305b..d52f9bd866 100644 --- a/importexport/setup/tables_current.inc.php +++ b/importexport/setup/tables_current.inc.php @@ -23,7 +23,8 @@ 'type' => array('type' => 'varchar','precision' => '20'), 'allowed_users' => array('type' => 'varchar','precision' => '255'), 'plugin_options' => array('type' => 'longtext'), - 'owner' => array('type' => 'int','precision' => '20') + 'owner' => array('type' => 'int','precision' => '20'), + 'description' => array('type' => 'varchar','precision' => '255') ), 'pk' => array('definition_id'), 'fk' => array(),