- reworked conversions backend in importexport_helper_functions

- reworked plugin interfaces. 
	- charset is now an attribut of plugin_options only
	- import / export function itselve is not static any more
- whiped out silly phpdoc tags generated by umbrello (kde uml modeler)
- reworked representation of plugin_options for definitions
- many fixes in uiexport and export_csv
- lang updates
This commit is contained in:
Cornelius Weiß
2007-06-09 15:36:30 +00:00
parent 81cb29ce8b
commit 7a3e571376
17 changed files with 273 additions and 313 deletions

View File

@@ -15,7 +15,6 @@
$usage = "usage: $usage = "usage:
--definition <name of definition> --definition <name of definition>
--file <name of file> --file <name of file>
--charset <charset>
--user <eGW username> --user <eGW username>
--password <password for user> --password <password for user>
--domain <domain name> \n"; --domain <domain name> \n";
@@ -48,7 +47,6 @@
$long_opts = array( $long_opts = array(
'definition=', 'definition=',
'file=', 'file=',
'charset=',
'user=', 'user=',
'password=', 'password=',
'domain=' 'domain='
@@ -73,9 +71,6 @@
case '--file' : case '--file' :
$file = $option[1]; $file = $option[1];
break; break;
case '--charset' :
$charset = $option[1];
break;
case '--definition' : case '--definition' :
$definition = $option[1]; $definition = $option[1];
break; break;
@@ -98,10 +93,6 @@
fwrite(STDERR,'importexport_cli: You have to supply a username / password'."\n".$usage); fwrite(STDERR,'importexport_cli: You have to supply a username / password'."\n".$usage);
exit(INVALID_OPTION); exit(INVALID_OPTION);
} }
if ( !$charset ) {
fwrite(STDERR,'importexport_cli: You have to supply a valid charset'."\n".$usage);
exit(INVALID_OPTION);
}
$GLOBALS['egw_info']['flags'] = array( $GLOBALS['egw_info']['flags'] = array(
'disable_Template_class' => True, 'disable_Template_class' => True,
@@ -153,7 +144,7 @@
$type = $definition->type; $type = $definition->type;
$resource = fopen( $file, 'r' ); $resource = fopen( $file, 'r' );
$po->$type( $resource, $charset, $definition ); $po->$type( $resource, $definition );
$GLOBALS['egw']->common->phpgw_exit(); $GLOBALS['egw']->common->phpgw_exit();

View File

@@ -25,7 +25,6 @@ class arrayxml {
/** /**
* converts a php array to an xml string * converts a php array to an xml string
* *
* @static
* @param mixed $_data * @param mixed $_data
* @param string $_name * @param string $_name
* @param DOMElement $_node * @param DOMElement $_node
@@ -72,7 +71,6 @@ class arrayxml {
/** /**
* converts XML string into php array * converts XML string into php array
* *
* @static
* @param string $_xml * @param string $_xml
* @return array * @return array
*/ */
@@ -98,10 +96,10 @@ class arrayxml {
} else { } else {
switch ( $type ) { switch ( $type ) {
case 'boolean' : case 'boolean' :
$value = utf8_decode($nc->nodeValue) == 'FALSE' ? false : true; $value = $nc->nodeValue == 'FALSE' ? false : true;
break; break;
default : default :
$value = utf8_decode($nc->nodeValue); $value = $nc->nodeValue;
} }
$xml_array[$name] = $value; $xml_array[$name] = $value;
} }

View File

@@ -12,6 +12,7 @@
require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.definition.inc.php'); require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.definition.inc.php');
require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.arrayxml.inc.php'); require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.arrayxml.inc.php');
require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.import_export_helper_functions.inc.php');
require_once(EGW_INCLUDE_ROOT.'/etemplate/inc/class.so_sql.inc.php'); require_once(EGW_INCLUDE_ROOT.'/etemplate/inc/class.so_sql.inc.php');
/** bo to define {im|ex}ports /** bo to define {im|ex}ports
@@ -24,11 +25,13 @@ class bodefinitions {
const _defintion_talbe = 'egw_importexport_definitions'; const _defintion_talbe = 'egw_importexport_definitions';
/** /**
* holds so_sql * @var so_sql holds so_sql
*
* @var so_sql
*/ */
private $so_sql; private $so_sql;
/**
* @var array hold definitions
*/
private $definitions; private $definitions;
public function __construct($_query=false) public function __construct($_query=false)
@@ -43,11 +46,8 @@ class bodefinitions {
} }
/** /**
* gets definitions as raw data. * gets array of definition ids
* well, we need a god idea for egw_record pools... *
* its not a god idea to make a definition object of each
* at the moment, as each defintion holds an so_sql instance.
*
* @return array * @return array
*/ */
public function get_definitions() { public function get_definitions() {
@@ -121,6 +121,14 @@ class bodefinitions {
foreach ($keys as $definition_id) { foreach ($keys as $definition_id) {
$definition = new definition( $definition_id ); $definition = new definition( $definition_id );
$export_data['definitions'][$definition->name] = $definition->get_record_array(); $export_data['definitions'][$definition->name] = $definition->get_record_array();
$export_data['definitions'][$definition->name]['allowed_users'] =
import_export_helper_functions::account_id2name(
$export_data['definitions'][$definition->name]['allowed_users']
);
$export_data['definitions'][$definition->name]['owner'] =
import_export_helper_functions::account_id2name(
$export_data['definitions'][$definition->name]['owner']
);
unset($export_data['definitions'][$definition->name]['definition_id']); unset($export_data['definitions'][$definition->name]['definition_id']);
unset($definition); unset($definition);
} }
@@ -159,6 +167,10 @@ class bodefinitions {
// save definition(s) into internal table // save definition(s) into internal table
foreach ( $definitions as $name => $definition_data ) foreach ( $definitions as $name => $definition_data )
{ {
// convert allowed_user
$definition_data['allowed_users'] = import_export_helper_functions::account_name2id( $definition_data['allowed_users'] );
$definition_data['owner'] = import_export_helper_functions::account_name2id( $definition_data['owner'] );
$definition = new definition( $definition_data['name'] ); $definition = new definition( $definition_data['name'] );
$definition_id = $definition->get_identifier() ? $definition->get_identifier() : NULL; $definition_id = $definition->get_identifier() ? $definition->get_identifier() : NULL;

View File

@@ -11,7 +11,8 @@
*/ */
require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.iface_egw_record.inc.php'); require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.iface_egw_record.inc.php');
require_once(EGW_INCLUDE_ROOT.'/etemplate/inc/class.so_sql.inc.php'); require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.arrayxml.inc.php');
require_once(EGW_INCLUDE_ROOT. '/etemplate/inc/class.so_sql.inc.php');
/** /**
* class definition * class definition
@@ -39,30 +40,22 @@ class definition implements iface_egw_record {
); );
/** /**
* holds so_sql object * @var so_sql holds so_sql object
*
* @var so_sql
*/ */
private $so_sql; private $so_sql;
/** /**
* internal representation of definition * @var array internal representation of definition
*
* @var unknown_type
*/ */
private $definition = array(); private $definition = array();
/** /**
* holds current user * @var int holds current user
*
* @var int
*/ */
private $user; private $user;
/** /**
* is current user an admin? * @var bool is current user an admin?
*
* @var bool
*/ */
private $is_admin; private $is_admin;
@@ -157,7 +150,8 @@ class definition implements iface_egw_record {
* @return array * @return array
*/ */
private function get_options() { private function get_options() {
return unserialize($this->definition['plugin_options']); $options_data = arrayxml::xml2array( $this->definition['plugin_options'] );
return $options_data['plugin_options'];
} }
/** /**
@@ -166,7 +160,7 @@ class definition implements iface_egw_record {
* @param array $options * @param array $options
*/ */
private function set_options(array $_plugin_options) { private function set_options(array $_plugin_options) {
$this->definition['plugin_options'] = serialize( $_plugin_options ); $this->definition['plugin_options'] = arrayxml::array2xml( $_plugin_options, 'plugin_options' );
} }
/** /**

View File

@@ -24,57 +24,43 @@ require_once(EGW_INCLUDE_ROOT. '/phpgwapi/inc/class.translation.inc.php');
*/ */
class export_csv implements iface_export_record class export_csv implements iface_export_record
{ {
/** Aggregations: */
/** Compositions: */
/** /**
* array with field mapping in form egw_field_name => exported_field_name * @var array array with field mapping in form egw_field_name => exported_field_name
* @var array
*/ */
protected $mapping = array(); protected $mapping = array();
/** /**
* array with conversions to be done in form: egw_field_name => conversion_string * @var array array with conversions to be done in form: egw_field_name => conversion_string
* @var array
*/ */
protected $conversion = array(); protected $conversion = array();
/** /**
* array holding the current record * @var array holding the current record
* @access protected
*/ */
protected $record = array(); protected $record = array();
/** /**
* holds (charset) translation object * @var translation holds (charset) translation object
* @var object
*/ */
protected $translation; protected $translation;
/** /**
* charset of csv file * @var string charset of csv file
* @var string
*/ */
protected $csv_charset; protected $csv_charset;
/** /**
* holds number of exported records * @var int holds number of exported records
* @var unknown_type
*/ */
protected $num_of_records = 0; protected $num_of_records = 0;
/** /**
* stream resource of csv file * @var stream stream resource of csv file
* @var resource
*/ */
protected $handle; protected $handle;
/** /**
* csv specific options * @var array csv specific options
*
* @var array
*/ */
protected $csv_options = array( protected $csv_options = array(
'delimiter' => ';', 'delimiter' => ';',
@@ -84,21 +70,19 @@ class export_csv implements iface_export_record
/** /**
* constructor * constructor
* *
* @param object _handle resource where records are exported to. * @param stram $_stream resource where records are exported to.
* @param string _charset charset the records are exported to.
* @param array _options options for specific backends * @param array _options options for specific backends
* @return bool * @return bool
* @access public
*/ */
public function __construct( $_handle, $_charset, array $_options=array() ) { public function __construct( $_stream, $_options ) {
if (!is_object($GLOBALS['egw']->translation)) { if (!is_object($GLOBALS['egw']->translation)) {
$GLOBALS['egw']->translation = new translation(); $GLOBALS['egw']->translation = new translation();
} }
$this->translation = &$GLOBALS['egw']->translation; $this->translation = &$GLOBALS['egw']->translation;
$this->handle = $_handle; $this->handle = $_stream;
$this->csv_charset = $_charset; $this->csv_charset = $_options['charset'] ? $_options['charset'] : 'utf-8';
if (!empty($_options)) { if ( !empty( $_options ) ) {
$this->csv_options = array_merge($this->csv_options,$_options); $this->csv_options = array_merge( $this->csv_options, $_options );
} }
} }
@@ -111,9 +95,7 @@ class export_csv implements iface_export_record
if ($this->num_of_records > 0) { if ($this->num_of_records > 0) {
throw new Exception('Error: Field mapping can\'t be set during ongoing export!'); throw new Exception('Error: Field mapping can\'t be set during ongoing export!');
} }
foreach ($_mapping as $egw_filed => $csv_field) { $this->mapping = $_mapping;
$this->mapping[$egw_filed] = $this->translation->convert($csv_field, $this->translation->charset(), $this->csv_charset);
}
} }
/** /**
@@ -131,45 +113,42 @@ class export_csv implements iface_export_record
* *
* @param iface_egw_record record * @param iface_egw_record record
* @return bool * @return bool
* @access public
*/ */
public function export_record( iface_egw_record $_record ) { public function export_record( iface_egw_record $_record ) {
$record_data = $_record->get_record_array(); $this->record = $_record->get_record_array();
if (empty($this->mapping)) { // begin with fieldnames ?
$this->mapping = array_combine(array_keys($record_data),array_keys($record_data)); if ($this->num_of_records == 0 && $this->csv_options['begin_with_fieldnames'] ) {
} $mapping = ! empty( $this->mapping ) ? $this->mapping : array_keys ( $this->record );
$mapping = $this->translation->convert( $mapping, $this->translation->charset(), $this->csv_charset );
// just for debug... fputcsv( $this->handle ,$mapping ,$this->csv_options['delimiter'], $this->csv_options['enclosure'] );
$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']);
} }
// do conversions // do conversions
if ($this->conversion[$egw_field]) { if ( !empty( $this->conversion )) {
$record_data[$egw_field] = import_export_helper_functions::conversion($record_data,$this->conversion); $this->record = import_export_helper_functions::conversion( $this->record, $this->conversion );
}
// do fieldmapping
if ( !empty( $this->mapping ) ) {
$record_data = $this->record;
$this->record = array();
foreach ($this->mapping as $egw_field => $csv_field) {
$this->record[$csv_field] = $record_data[$egw_field];
}
} }
// do charset translation // do charset translation
$record_data = $this->translation->convert($record_data, $this->translation->charset(), $this->csv_charset); $this->record = $this->translation->convert( $this->record, $this->translation->charset(), $this->csv_charset );
// do fieldmapping $this->fputcsv( $this->handle, $this->record, $this->csv_options['delimiter'], $this->csv_options['enclosure'] );
foreach ($this->mapping as $egw_field => $csv_field) {
$this->record[$csv_field] = $record_data[$egw_field];
}
$this->fputcsv($this->handle,$this->record,$this->csv_options['delimiter'],$this->csv_options['enclosure']);
$this->num_of_records++; $this->num_of_records++;
$this->record = array();
} }
/** /**
* Retruns total number of exported records. * Retruns total number of exported records.
* *
* @return int * @return int
* @access public
*/ */
public function get_num_of_records() { public function get_num_of_records() {
return $this->num_of_records; return $this->num_of_records;
@@ -179,7 +158,6 @@ class export_csv implements iface_export_record
* destructor * destructor
* *
* @return * @return
* @access public
*/ */
public function __destruct() { public function __destruct() {

View File

@@ -39,9 +39,10 @@ interface iface_export_plugin {
/** /**
* exports entries according to given definition object. * exports entries according to given definition object.
* *
* @param stream $_stream
* @param definition $_definition * @param definition $_definition
*/ */
public static function export($_stream, $_charset, definition $_definition); public function export($_stream, definition $_definition);
/** /**
* returns translated name of plugin * returns translated name of plugin
@@ -76,14 +77,14 @@ interface iface_export_plugin {
* preserv => array, * preserv => array,
* ) * )
*/ */
public static function get_options_etpl(); public function get_options_etpl();
/** /**
* returns etemplate name for slectors of this plugin * returns etemplate name for slectors of this plugin
* *
* @return string etemplate name * @return string etemplate name
*/ */
public static function get_selectors_etpl(); public function get_selectors_etpl();
} // end of iface_export_plugin } // end of iface_export_plugin
?> ?>

View File

@@ -26,28 +26,20 @@
*/ */
interface iface_export_record interface iface_export_record
{ {
/** Aggregations: */
/** Compositions: */
/** /**
* constructor * constructor
* *
* @param object _handle resource where records are exported to. * @param stream $_stream resource where records are exported to.
* @param string _charset charset the records are exported to. * @param array $_options options for specific backends
* @param array _options options for specific backends
* @return bool * @return bool
* @access public
*/ */
public function __construct( $_handle, $_charset, array $_options=array() ); public function __construct( $_stream, array $_options );
/** /**
* exports a record into resource of handle * exports a record into resource of handle
* *
* @param object of interface egw_record _record * @param object of interface egw_record _record
* @return bool * @return bool
* @access public
*/ */
public function export_record( iface_egw_record $_record ); public function export_record( iface_egw_record $_record );
@@ -55,7 +47,6 @@ interface iface_export_record
* Retruns total number of exported records. * Retruns total number of exported records.
* *
* @return int * @return int
* @access public
*/ */
public function get_num_of_records( ); public function get_num_of_records( );
@@ -63,7 +54,6 @@ interface iface_export_record
* destructor * destructor
* *
* @return * @return
* @access public
*/ */
public function __destruct( ); public function __destruct( );

View File

@@ -29,9 +29,10 @@ interface iface_import_plugin {
/** /**
* imports entries according to given definition object. * imports entries according to given definition object.
* *
* @param stram $_stram
* @param definition $_definition * @param definition $_definition
*/ */
public function import($_stream, $_charset, definition $_definition); public function import( $_stream, definition $_definition );
/** /**
* returns translated name of plugin * returns translated name of plugin

View File

@@ -20,26 +20,19 @@
*/ */
interface iface_import_record interface iface_import_record
{ {
/** Aggregations: */
/** Compositions: */
/** /**
* Opens resource, returns false if something fails * Opens resource, returns false if something fails
* *
* @param string _resource resource containing data. Differs according to the implementations * @param stream $_stream resource containing data. Differs according to the implementations
* @param array _options options for the resource * @param array $_options options for specific backends
* @return bool * @return bool
* @access public
*/ */
public function __construct( $_resource, $_options ); public function __construct( $_stream, array $_options );
/** /**
* cleanup * cleanup
* *
* @return * @return
* @access public
*/ */
public function __destruct( ); public function __destruct( );
@@ -48,7 +41,6 @@ interface iface_import_record
* *
* @param string _position may be: {first|last|next|previous|somenumber} * @param string _position may be: {first|last|next|previous|somenumber}
* @return bool * @return bool
* @access public
*/ */
public function get_record( $_position = 'next' ); public function get_record( $_position = 'next' );
@@ -56,7 +48,6 @@ interface iface_import_record
* Retruns total number of records for the open resource. * Retruns total number of records for the open resource.
* *
* @return int * @return int
* @access public
*/ */
public function get_num_of_records( ); public function get_num_of_records( );
@@ -64,7 +55,6 @@ interface iface_import_record
* Returns pointer of current position * Returns pointer of current position
* *
* @return int * @return int
* @access public
*/ */
public function get_current_position( ); public function get_current_position( );

View File

@@ -19,49 +19,40 @@ require_once('class.import_export_helper_functions.inc.php');
* This a an abstract implementation of interface iface_import_record * This a an abstract implementation of interface iface_import_record
* An record is e.g. a single address or or single event. * An record is e.g. a single address or or single event.
* No mater where the records come from, at the end the get_record method comes out * No mater where the records come from, at the end the get_record method comes out
* @todo Throw away spechial chars and trim() entries ?
* @todo Check for XSS like userinput! (see common_functions)
*/ */
class import_csv implements iface_import_record { //, Iterator { class import_csv implements iface_import_record { //, Iterator {
const csv_max_linelength = 8000; const csv_max_linelength = 8000;
/** /**
* @static import_export_helper_functions * @var array array with field mapping in form column number => new_field_name
*/
/**
* array with field mapping in form column number => new_field_name
* @access public
*/ */
public $mapping = array(); public $mapping = array();
/** /**
* array with conversions to be done in form: new_field_name => conversion_string * @var array with conversions to be done in form: new_field_name => conversion_string
* @access public
*/ */
public $conversion = array(); public $conversion = array();
/** /**
* array holding the current record * @var array holding the current record
* @access protected
*/ */
protected $record = array(); protected $record = array();
/** /**
* current position counter * @var int current position counter
* @access protected
*/ */
protected $current_position = 0; protected $current_position = 0;
/** /**
* holds total number of records * @var int holds total number of records
* @access private
* @var int
*/ */
protected $num_of_records = 0; protected $num_of_records = 0;
/** /**
* csv resource * @var stream
* @access private
*/ */
private $resource; private $resource;
@@ -73,18 +64,16 @@ class import_csv implements iface_import_record { //, Iterator {
private $csv_fieldsep; private $csv_fieldsep;
/** /**
* charset of csv file *
* @var string * @var string charset of csv file
* @access privat
*/ */
private $csv_charset; private $csv_charset;
/** /**
* @param string _resource resource containing data. May be each valid php-stream * @param string $_resource resource containing data. May be each valid php-stream
* @param array _options options for the resource array with keys: charset and fieldsep * @param array $_options options for the resource array with keys: charset and fieldsep
* @access public
*/ */
public function __construct( $_resource, $_options = array() ) { public function __construct( $_resource, $_options ) {
$this->resource = $_resource; $this->resource = $_resource;
$this->csv_fieldsep = $_options['fieldsep']; $this->csv_fieldsep = $_options['fieldsep'];
$this->csv_charset = $_options['charset']; $this->csv_charset = $_options['charset'];
@@ -93,9 +82,6 @@ class import_csv implements iface_import_record { //, Iterator {
/** /**
* cleanup * cleanup
*
* @return
* @access public
*/ */
public function __destruct( ) { public function __destruct( ) {
} // end of member function __destruct } // end of member function __destruct
@@ -105,21 +91,20 @@ class import_csv implements iface_import_record { //, Iterator {
* *
* @param mixed _position may be: {current|first|last|next|previous|somenumber} * @param mixed _position may be: {current|first|last|next|previous|somenumber}
* @return mixed array with data / false if no furtor records * @return mixed array with data / false if no furtor records
* @access public
*/ */
public function get_record( $_position = 'next' ) { public function get_record( $_position = 'next' ) {
if ($this->get_raw_record( $_position ) === false) { if ($this->get_raw_record( $_position ) === false) {
return false; return false;
} }
if ( !empty( $this->mapping ) ) {
$this->do_fieldmapping();
}
if ( !empty( $this->conversion ) ) { if ( !empty( $this->conversion ) ) {
$this->do_conversions(); $this->do_conversions();
} }
if ( !empty( $this->mapping ) ) {
$this->do_fieldmapping();
}
return $this->record; return $this->record;
} // end of member function get_record } // end of member function get_record
@@ -191,7 +176,6 @@ class import_csv implements iface_import_record { //, Iterator {
* Retruns total number of records for the open resource. * Retruns total number of records for the open resource.
* *
* @return int * @return int
* @access public
*/ */
public function get_num_of_records( ) { public function get_num_of_records( ) {
if ($this->num_of_records > 0) { if ($this->num_of_records > 0) {
@@ -208,7 +192,6 @@ class import_csv implements iface_import_record { //, Iterator {
* Returns pointer of current position * Returns pointer of current position
* *
* @return int * @return int
* @access public
*/ */
public function get_current_position( ) { public function get_current_position( ) {
@@ -221,7 +204,6 @@ class import_csv implements iface_import_record { //, Iterator {
* does fieldmapping according to $this->mapping * does fieldmapping according to $this->mapping
* *
* @return * @return
* @access protected
*/ */
protected function do_fieldmapping( ) { protected function do_fieldmapping( ) {
$record = $this->record; $record = $this->record;
@@ -236,7 +218,6 @@ class import_csv implements iface_import_record { //, Iterator {
* does conversions according to $this->conversion * does conversions according to $this->conversion
* *
* @return bool * @return bool
* @access protected
*/ */
protected function do_conversions( ) { protected function do_conversions( ) {
if ( $record = import_export_helper_functions::conversion( $this->record, $this->conversion )) { if ( $record = import_export_helper_functions::conversion( $this->record, $this->conversion )) {

View File

@@ -10,8 +10,6 @@
* @version $Id$ * @version $Id$
*/ */
/** /**
* class import_export_helper_functions (only static methods) * class import_export_helper_functions (only static methods)
* use import_export_helper_functions::method * use import_export_helper_functions::method
@@ -25,80 +23,75 @@ class import_export_helper_functions {
/** /**
* converts accound_lid to account_id * converts accound_lid to account_id
* *
* @param string _account_lid comma seperated list * @param mixed $_account_lid comma seperated list or array with lids
* @return string comma seperated list * @return mixed comma seperated list or array with ids
* @static
* @access public
*/ */
public static function account_lid2id( $_account_lids ) { public static function account_name2id( $_account_lids ) {
$account_lids = explode( ',', $_account_lids ); $account_lids = is_array( $_account_lids ) ? $_account_lids : explode( ',', $_account_lids );
foreach ( $account_lids as $account_lid ) { foreach ( $account_lids as $account_lid ) {
if ( $account_id = $GLOBALS['egw']->accounts->name2id( $account_lid )) { if ( $account_id = $GLOBALS['egw']->accounts->name2id( $account_lid )) {
$account_ids[] = $account_id; $account_ids[] = $account_id;
} }
} }
return implode( ',', $account_ids ); return is_array( $_account_lids ) ? $account_ids : implode( ',', $account_ids );
} // end of member function account_lid2id } // end of member function account_lid2id
/** /**
* converts account_ids to account_lids * converts account_ids to account_lids
* *
* @param int _account_ids comma seperated list * @param mixed $_account_ids comma seperated list or array with ids
* @return string comma seperated list * @return mixed comma seperated list or array with lids
* @static
* @access public
*/ */
public static function account_id2lid( $_account_id ) { public static function account_id2name( $_account_id ) {
$account_ids = explode( ',', $_account_id ); $account_ids = is_array( $_account_id ) ? $_account_id : explode( ',', $_account_id );
foreach ( $account_ids as $account_id ) { foreach ( $account_ids as $account_id ) {
if ( $account_lid = $GLOBALS['egw']->accounts->id2name( $account_id )) { if ( $account_lid = $GLOBALS['egw']->accounts->id2name( $account_id )) {
$account_lids[] = $account_lid; $account_lids[] = $account_lid;
} }
} }
return implode( ',', $account_lids ); return is_array( $_account_id ) ? $account_lids : implode( ',', $account_lids );
} // end of member function account_id2lid } // end of member function account_id2lid
/** /**
* converts cat_id to a cat_name * converts cat_id to a cat_name
* *
* @param int _cat_ids comma seperated list * @param mixed _cat_ids comma seperated list or array
* @return mixed string cat_name * @return mixed comma seperated list or array with cat_names
* @static
* @access public
*/ */
public static function cat_id2name( $_cat_ids ) { public static function cat_id2name( $_cat_ids ) {
if ( !is_object($GLOBALS['egw']->categories) ) { $cats = &CreateObject( 'phpgwapi.categories' );
$GLOBALS['egw']->categories =& CreateObject('phpgwapi.categories');
} $cat_ids = is_array( $_cat_ids ) ? $_cat_ids : explode( ',', $_cat_ids );
$cat_ids = explode( ',', $_cat_id );
foreach ( $cat_ids as $cat_id ) { foreach ( $cat_ids as $cat_id ) {
$cat_names[] = $GLOBALS['egw']->categories->id2name( (int)$cat_id ); $cat_names[] = $cats->id2name( (int)$cat_id );
} }
return implode(',',$cat_names); return is_array( $_cat_ids ) ? $cat_names : implode(',',$cat_names);
} // end of member function category_id2name } // end of member function category_id2name
/** /**
* converts cat_name to a cat_id. * converts cat_name to a cat_id.
* If a cat isn't found, it will be created. * If a cat isn't found, it will be created.
* *
* @param string _cat_names comma seperated list. * @param mixed $_cat_names comma seperated list or array.
* @return mixed int / string (comma seperated cat id's) * @return mixed comma seperated list or array with cat_ids
* @static
* @access public
*/ */
public static function cat_name2id( $_cat_names, $_create = true ) { public static function cat_name2id( $_cat_names ) {
if (!is_object($GLOBALS['egw']->categories)) { $cats = &CreateObject( 'phpgwapi.categories' );
$GLOBALS['egw']->categories =& CreateObject( 'phpgwapi.categories' ); $cats->app_name = 'phpgw';
}
$cat_names = explode( ',', $_cat_names ); $cat_names = is_array( $_cat_names ) ? $_cat_names : explode( ',', $_cat_names );
foreach ( $cat_names as $cat_name ) { foreach ( $cat_names as $cat_name ) {
if ( $cat_id = $GLOBALS['egw']->categories->name2id( addslashes( $cat_name ))) { } if ( $cat_id = $cats->name2id( addslashes( $cat_name ))) { }
elseif ($_create) $cat_id = $GLOBALS['egw']->categories->add( array( 'name' => $cat_name,'descr' => $cat_name )); else $cat_id = $cats->add( array(
else continue; 'name' => $cat_name,
'access' => 'public',
'descr' => $cat_name. ' ('. lang('Automatically created by importexport'). ')'
));
$cat_ids[] = $cat_id; $cat_ids[] = $cat_id;
} }
return implode( ',', $cat_ids ); return $_cat_names ? $cat_ids : implode( ',', $cat_ids );
} // end of member function category_name2id } // end of member function category_name2id
@@ -113,115 +106,90 @@ class import_export_helper_functions {
* This will translate a '1' in the _record field to 'privat' and everything else to 'public'. * This will translate a '1' in the _record field to 'privat' and everything else to 'public'.
* *
* In addintion to the fields assign by the pattern of the reg.exp. * In addintion to the fields assign by the pattern of the reg.exp.
* you can use all other _record fields, with the syntax |[FIELDNAME]. * you can use all other _record fields, with the syntax |[FIELDINDEX].
* Example: * Example:
* .+|>|[Company]: |[NFamily], |[NGiven]|||[NFamily], |[NGiven] * Your record is:
* It is used on the _record field 'Company' and constructs a something like * array( 0 => Company, 1 => NFamily, 2 => NGiven
* Company: FamilyName, GivenName or FamilyName, GivenName if 'Company' is empty. * Your conversion string for field 0 (Company):
* .+|>|[0]: |[1], |[2]|||[1], |[2]
* This constructs something like
* Company: FamilyName, GivenName or FamilyName, GivenName if 'Company' is empty.
* *
* Moreover the helper function of this class can be used using the '@' operator. * Moreover the two helper function cat() and account() can be used.
* @cat_name2id(Cat1,...,CatN) returns a (','-separated) list with the cat_id's. If a * cat(Cat1,...,CatN) returns a (','-separated) list with the cat_id's. If a
* category isn't found, it will be automaticaly added. * category isn't found, it will be automaticaly added.
* *
* Patterns as well as the replacement can be regular expressions (the replacement is done * Patterns as well as the replacement can be regular expressions (the replacement is done
* via ereg_replace). * via ereg_replace).
* *
* If, after all replacements, the value starts with an '@' the whole
* value is eval()'ed, so you may use all php, phpgw plus your own functions. This is quiet
* powerfull, but circumvents all ACL. Therefor this feature is only availible to
* Adminstrators.
*
* Example using regular expressions and '@'-eval():
* ||0?([0-9]+)[ .:-]+0?([0-9]*)[ .:-]+0?([0-9]*)[ .:-]+0?([0-9]*)[ .:-]+0?([0-9]*)[ .:-]+0?([0-9]*).*|>@mktime(|#4,|#5,|#6,|#2,|#3,|#1)
* It will read a date of the form '2001-05-20 08:00:00.00000000000000000' (and many more,
* see the regular expr.). The [ .:-]-separated fields are read and assigned in different
* order to @mktime(). Please note to use |# insted of a backslash (I couldn't get backslash
* through all the involved templates and forms.) plus the field-number of the pattern.
*
* @param array _record reference with record to do the conversion with * @param array _record reference with record to do the conversion with
* @param array _conversion array with conversion description * @param array _conversion array with conversion description
* @param object &$cclass calling class to process the '@ evals' (not impelmeted yet)
* @return bool * @return bool
* @static
* @access public
* @todo replace this function with a function dealing with reg expressions!
*/ */
public static function conversion( $_record, $_conversion ) { public static function conversion( $_record, $_conversion, &$_cclass = null ) {
if (empty( $_conversion ) ) return $_record; if (empty( $_conversion ) ) return $_record;
$values = $_record;
$PSep = '||'; // Pattern-Separator, separats the pattern-replacement-pairs in conversion $PSep = '||'; // Pattern-Separator, separats the pattern-replacement-pairs in conversion
$ASep = '|>'; // Assignment-Separator, separats pattern and replacesment $ASep = '|>'; // Assignment-Separator, separats pattern and replacesment
$VPre = '|#'; // Value-Prefix, is expanded to \ for ereg_replace $CPre = '|['; $CPos = ']'; // |[_record-idx] is expanded to the corespondig value
$CPre = '|['; $CPreReg = '\|\['; // |{_record-fieldname} is expanded to the value of the _record-field
$CPos = ']'; $CPosReg = '\]'; // if used together with @ (replacement is eval-ed) value gets autom. quoted
foreach ( $_record as $record_idx => $record_value ) { foreach ( $_conversion as $idx => $conversion_string ) {
$pat_reps = explode($PSep,stripslashes($_conversion[$record_idx]));
$replaces = ''; $rvalues = ''; if ( empty( $conversion_string ) ) continue;
if($pat_reps[0] != '')
{ // fetch patterns ($rvalues)
foreach($pat_reps as $k => $pat_rep) $pat_reps = explode( $PSep, stripslashes( $conversion_string ) );
{ foreach( $pat_reps as $k => $pat_rep ) {
list($pattern,$replace) = explode($ASep,$pat_rep,2); list( $pattern, $replace ) = explode( $ASep, $pat_rep, 2 );
if($replace == '') if( $replace == '' ) {
{ $replace = $pattern; $pattern = '^.*$';
$replace = $pattern; $pattern = '^.*$';
}
$rvalues[$pattern] = $replace; // replace two with only one, added by the form
$replaces .= ($replaces != '' ? $PSep : '') . $pattern . $ASep . $replace;
} }
//$_conversion[$record_idx] = $rvalues; $rvalues[$pattern] = $replace; // replace two with only one, added by the form
$conv_record = $rvalues;
}
else
{
//unset($_conversion[$record_idx] );
} }
$val = $record_value; // conversion list may be longer than $_record (no_csv)
if(!empty($_conversion[$record_idx])) $val = array_key_exists( $idx, $_record ) ? $_record[$idx] : '';
{
//$conv_record = $_conversion[$record_idx];
while(list($pattern,$replace) = each($conv_record))
{
if(ereg((string) $pattern,$val))
{
$val = ereg_replace((string) $pattern,str_replace($VPre,'\\',$replace),(string) $val);
$reg = $CPreReg.'([a-zA-Z_0-9]+)'.$CPosReg; foreach ( $rvalues as $pattern => $replace ) {
while(ereg($reg,$val,$vars)) if( ereg( (string)$pattern, $val) ) {
{ // expand all _record fields
$val = str_replace($CPre . $vars[1] . $CPos, $val[0] == '@' ? "'" $val = ereg_replace( (string)$pattern, $replace, (string)$val );
. addslashes($fields[array_search($vars[1], array_keys($_record))])
. "'" : $fields[array_search($vars[1], array_keys($_record))], $val); $reg = '\|\[([a-zA-Z_0-9]+)\]';
} while( ereg( $reg, $val, $vars ) ) {
if($val[0] == '@') // expand all _record fields
{ $val = str_replace(
if (!$GLOBALS['egw_info']['user']['apps']['admin']) $CPre . $vars[1] . $CPos,
{ $_record[array_search($vars[1], array_keys($_record))],
error_log(__FILE__.__LINE__. lang('@-eval() is only availible to admins!!!')); $val
} );
else
{
// removing the $ to close security hole of showing vars, which contain eg. passwords
$val = substr(str_replace('$','',$val),1).';';
$val = 'return '. (substr($val,0,6) == 'cat_id' ? '$this->'.$val : $val);
// echo "<p>eval('$val')=";
$val = eval($val);
// echo "'$val'</p>";
}
}
if($pattern[0] != '@' || $val)
{
break;
}
} }
$val = preg_replace_callback( "/(cat|account)\(([^)]+)\)/i", array( self, 'c2_dispatcher') , $val );
} }
} }
$values[$record_idx] = $val; $values[$idx] = $val;
} }
return $values; return $values;
} // end of member function conversion } // end of member function conversion
/**
* callback for preg_replace_callback from self::conversion.
* This function gets called when 2nd level conversions are made,
* like the cat() and account() statements in the conversions.
*
* @param array $_matches
*/
private static function c2_dispatcher( $_matches ) {
$action = &$_matches[1]; // cat or account ...
$data = &$_matches[2]; // datas for action
$method = (string)$action. ( is_int( $data ) ? '_id2name' : '_name2id' );
return self::$method( $data );
}
/** /**
* returns a list of importexport plugins * returns a list of importexport plugins
* *

View File

@@ -128,7 +128,7 @@ class uidefinitions
unset($definition); unset($definition);
} }
$content = $definitions; $content = $definitions;
return $etpl->exec(self::_appname.'.uidefinitions.index',$content,array(),$readonlys,$preserv); return $etpl->exec( self::_appname.'.uidefinitions.index', $content, array(), $readonlys, $preserv );
} }
function edit() function edit()

View File

@@ -199,7 +199,7 @@ class uiexport {
$charset = $GLOBALS['egw']->translation->charset(); $charset = $GLOBALS['egw']->translation->charset();
} }
$plugin_object = new $definition->plugin; $plugin_object = new $definition->plugin;
$plugin_object->export($file, $charset, $definition); $plugin_object->export( $file, $definition );
if($_content['export'] == 'pressed') { if($_content['export'] == 'pressed') {
fclose($file); fclose($file);
@@ -224,9 +224,16 @@ class uiexport {
fclose($file); fclose($file);
unlink($tmpfname); unlink($tmpfname);
$preview = $GLOBALS['egw']->translation->convert($preview,'iso-8859-1','utf-8');
// NOTE: $definition->plugin_options['charset'] may not be set,
// but it's the best guess atm.
$preview = $GLOBALS['egw']->translation->convert( $preview,
$definition->plugin_options['charset'],
$GLOBALS['egw']->translation->charset()
);
$response->addAssign('exec[preview-box]','innerHTML',$preview); $response->addAssign('exec[preview-box]','innerHTML',$preview);
$response->addAssign('divPoweredBy','style.display','none'); //$response->addAssign('divPoweredBy','style.display','none');
$response->addAssign('exec[preview-box]','style.display','inline'); $response->addAssign('exec[preview-box]','style.display','inline');
$response->addAssign('exec[preview-box-buttons]','style.display','inline'); $response->addAssign('exec[preview-box-buttons]','style.display','inline');

View File

@@ -0,0 +1,28 @@
/**
* eGroupWare
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package importexport
* @link http://www.egroupware.org
* @author Cornelius Weiss <nelius@cwtech.de>
* @copyright Cornelius Weiss <nelius@cwtech.de>
* @version $Id:$
*/
function export_dialog() {
this.change_definition = function(sel_obj) {
if(sel_obj.value == 'expert') {
// next two lines fix some strange layout bug
set_style_by_class('tr','select_definition','display','none');
set_style_by_class('tr','select_definition','display','inline');
set_style_by_class('tr','select_plugin','display','inline');
set_style_by_class('tr','save_definition','display','inline');
}
else {
set_style_by_class('tr','select_plugin','display','none');
set_style_by_class('tr','save_definition','display','none');
}
};
}
var export_dialog = new export_dialog();

View File

@@ -2,7 +2,7 @@
/** /**
* eGroupWare - eTemplates for Application importexport * eGroupWare - eTemplates for Application importexport
* http://www.egroupware.org * http://www.egroupware.org
* generated by soetemplate::dump4setup() 2006-11-16 12:03 * generated by soetemplate::dump4setup() 2007-06-09 17:40
* *
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package importexport * @package importexport
@@ -12,28 +12,28 @@
$templ_version=1; $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.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:6:"5,both";}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: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 { $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:167:"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; position: absolute;
top: 0px; top: 0px;
left: 0px; left: 0px;
width: 400px; width: 400px;
height: 360px; height: 360px;
overflow: scroll; overflow: scroll;
background-color: white; background-color: white;
z-index: 999; z-index: 999;
display: none; display: none;
} }
.preview-box-buttons { .preview-box-buttons {
position: absolute; position: absolute;
top: 365px; top: 365px;
left: 0px; left: 0px;
width: 400px; width: 400px;
height: 20px; height: 20px;
z-index: 999; z-index: 999;
display: none; display: none;
}','modified' => '1158220473',); }','modified' => '1158220473',);
$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','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',);
@@ -46,11 +46,11 @@ $templ_data[] = array('name' => 'importexport.export_dialog.selection_tab','temp
$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.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 { $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 {
height: 347px; height: 347px;
width: 250px; width: 250px;
max-height:347px; max-height:347px;
overflow:auto; overflow:auto;
}','modified' => '1145975378',); }','modified' => '1145975378',);
$templ_data[] = array('name' => 'importexport.wizzard_chooseallowedusers','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:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:13:"allowed_users";s:4:"size";s:8:"5,groups";}}}s:4:"rows";i:2;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1146312041',); $templ_data[] = array('name' => 'importexport.wizzard_chooseallowedusers','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:3:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:13:"allowed_users";s:4:"size";s:8:"5,groups";}}}s:4:"rows";i:2;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1146312041',);

View File

@@ -1,7 +1,18 @@
allowed users importexport de Erlaubte Benutzer
choose a name for this definition importexport de W<>hlen sie einen Namen f<>r diese Definition. choose a name for this definition importexport de W<>hlen sie einen Namen f<>r diese Definition.
choose a plugin importexport de W<>hlen sie ein Plugin. choose a plugin importexport de W<>hlen sie ein Plugin.
choose an application importexport de W<>hlen sei eine Anwendung. choose an application importexport de W<>hlen sei eine Anwendung.
delete all selected definitions importexport de Alle ausgew<65>hlten Definitionen l<>schen
export importexport de Exportieren
export all selected definitions importexport de Alle ausgew<65>hlten Definitionen exportieren
finish importexport de Fertig finish importexport de Fertig
general importexport de Generell
import definitions (attension: existing definitions with equal names will be overwritten!!!) importexport de Definitionen importieren (Achtung: Alle gleichnamigen existierenden Definitionen werden <20>berschrieben!)
next importexport de Weiter next importexport de Weiter
preview importexport de Vorschau
previous importexport de Zur<75>ck previous importexport de Zur<75>ck
save as definition importexport de Als Definition speichern
select definition importexport de Definition ausw<73>hlen
select plugin importexport de Plugin ausw<73>hlen
some nice text importexport de Ein sch<63>ner Text
which useres are allowed for this definition importexport de Welche Benutzer d<>rden diese Definition verwenden? which useres are allowed for this definition importexport de Welche Benutzer d<>rden diese Definition verwenden?

View File

@@ -2,7 +2,17 @@ allowed users importexport en Allowed users
choose a name for this definition importexport en Choose a name for this definition choose a name for this definition importexport en Choose a name for this definition
choose a plugin importexport en Choose a plugin choose a plugin importexport en Choose a plugin
choose an application importexport en Choose an application choose an application importexport en Choose an application
delete all selected definitions importexport en delete ALL selected definitions
export importexport en Export
export all selected definitions importexport en export ALL selected definitions
finish importexport en finish finish importexport en finish
general importexport en General
import definitions (attension: existing definitions with equal names will be overwritten!!!) importexport en Import definitions (Attension: Existing definitions with equal names will be overwritten!!!)
next importexport en next next importexport en next
preview importexport en Preview
previous importexport en previous previous importexport en previous
save as definition importexport en Save as definition
select definition importexport en Select definition
select plugin importexport en Select plugin
some nice text importexport en some nice text
which useres are allowed for this definition importexport en Which useres are allowed for this definition which useres are allowed for this definition importexport en Which useres are allowed for this definition