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

View File

@ -25,7 +25,6 @@ class arrayxml {
/**
* converts a php array to an xml string
*
* @static
* @param mixed $_data
* @param string $_name
* @param DOMElement $_node
@ -72,7 +71,6 @@ class arrayxml {
/**
* converts XML string into php array
*
* @static
* @param string $_xml
* @return array
*/
@ -98,10 +96,10 @@ class arrayxml {
} else {
switch ( $type ) {
case 'boolean' :
$value = utf8_decode($nc->nodeValue) == 'FALSE' ? false : true;
$value = $nc->nodeValue == 'FALSE' ? false : true;
break;
default :
$value = utf8_decode($nc->nodeValue);
$value = $nc->nodeValue;
}
$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.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');
/** bo to define {im|ex}ports
@ -24,11 +25,13 @@ class bodefinitions {
const _defintion_talbe = 'egw_importexport_definitions';
/**
* holds so_sql
*
* @var so_sql
* @var so_sql holds so_sql
*/
private $so_sql;
/**
* @var array hold definitions
*/
private $definitions;
public function __construct($_query=false)
@ -43,11 +46,8 @@ class bodefinitions {
}
/**
* gets definitions as raw data.
* 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.
*
* gets array of definition ids
*
* @return array
*/
public function get_definitions() {
@ -121,6 +121,14 @@ class bodefinitions {
foreach ($keys as $definition_id) {
$definition = new definition( $definition_id );
$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($definition);
}
@ -159,6 +167,10 @@ class bodefinitions {
// save definition(s) into internal table
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_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.'/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
@ -39,30 +40,22 @@ class definition implements iface_egw_record {
);
/**
* holds so_sql object
*
* @var so_sql
* @var so_sql holds so_sql object
*/
private $so_sql;
/**
* internal representation of definition
*
* @var unknown_type
* @var array internal representation of definition
*/
private $definition = array();
/**
* holds current user
*
* @var int
* @var int holds current user
*/
private $user;
/**
* is current user an admin?
*
* @var bool
* @var bool is current user an admin?
*/
private $is_admin;
@ -157,7 +150,8 @@ class definition implements iface_egw_record {
* @return array
*/
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
*/
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
{
/** Aggregations: */
/** Compositions: */
/**
* array with field mapping in form egw_field_name => exported_field_name
* @var array
* @var array array with field mapping in form egw_field_name => exported_field_name
*/
protected $mapping = array();
/**
* array with conversions to be done in form: egw_field_name => conversion_string
* @var array
* @var array array with conversions to be done in form: egw_field_name => conversion_string
*/
protected $conversion = array();
/**
* array holding the current record
* @access protected
* @var array holding the current record
*/
protected $record = array();
/**
* holds (charset) translation object
* @var object
* @var translation holds (charset) translation object
*/
protected $translation;
/**
* charset of csv file
* @var string
* @var string charset of csv file
*/
protected $csv_charset;
/**
* holds number of exported records
* @var unknown_type
* @var int holds number of exported records
*/
protected $num_of_records = 0;
/**
* stream resource of csv file
* @var resource
* @var stream stream resource of csv file
*/
protected $handle;
/**
* csv specific options
*
* @var array
* @var array csv specific options
*/
protected $csv_options = array(
'delimiter' => ';',
@ -84,21 +70,19 @@ class export_csv implements iface_export_record
/**
* constructor
*
* @param object _handle resource where records are exported to.
* @param string _charset charset the records are exported to.
* @param stram $_stream resource where records are exported to.
* @param array _options options for specific backends
* @return bool
* @access public
*/
public function __construct( $_handle, $_charset, array $_options=array() ) {
public function __construct( $_stream, $_options ) {
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)) {
$this->csv_options = array_merge($this->csv_options,$_options);
$this->handle = $_stream;
$this->csv_charset = $_options['charset'] ? $_options['charset'] : 'utf-8';
if ( !empty( $_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) {
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->translation->charset(), $this->csv_charset);
}
$this->mapping = $_mapping;
}
/**
@ -131,45 +113,42 @@ class export_csv implements iface_export_record
*
* @param iface_egw_record record
* @return bool
* @access public
*/
public function export_record( iface_egw_record $_record ) {
$record_data = $_record->get_record_array();
$this->record = $_record->get_record_array();
if (empty($this->mapping)) {
$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']);
// begin with fieldnames ?
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 );
fputcsv( $this->handle ,$mapping ,$this->csv_options['delimiter'], $this->csv_options['enclosure'] );
}
// do conversions
if ($this->conversion[$egw_field]) {
$record_data[$egw_field] = import_export_helper_functions::conversion($record_data,$this->conversion);
if ( !empty( $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
$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
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->fputcsv( $this->handle, $this->record, $this->csv_options['delimiter'], $this->csv_options['enclosure'] );
$this->num_of_records++;
$this->record = array();
}
/**
* Retruns total number of exported records.
*
* @return int
* @access public
*/
public function get_num_of_records() {
return $this->num_of_records;
@ -179,7 +158,6 @@ class export_csv implements iface_export_record
* destructor
*
* @return
* @access public
*/
public function __destruct() {

View File

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

View File

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

View File

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

View File

@ -20,26 +20,19 @@
*/
interface iface_import_record
{
/** Aggregations: */
/** Compositions: */
/**
* Opens resource, returns false if something fails
*
* @param string _resource resource containing data. Differs according to the implementations
* @param array _options options for the resource
* @param stream $_stream resource containing data. Differs according to the implementations
* @param array $_options options for specific backends
* @return bool
* @access public
*/
public function __construct( $_resource, $_options );
public function __construct( $_stream, array $_options );
/**
* cleanup
*
* @return
* @access public
*/
public function __destruct( );
@ -48,7 +41,6 @@ interface iface_import_record
*
* @param string _position may be: {first|last|next|previous|somenumber}
* @return bool
* @access public
*/
public function get_record( $_position = 'next' );
@ -56,7 +48,6 @@ interface iface_import_record
* Retruns total number of records for the open resource.
*
* @return int
* @access public
*/
public function get_num_of_records( );
@ -64,7 +55,6 @@ interface iface_import_record
* Returns pointer of current position
*
* @return int
* @access public
*/
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
* 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
* @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 {
const csv_max_linelength = 8000;
/**
* @static import_export_helper_functions
*/
/**
* array with field mapping in form column number => new_field_name
* @access public
* @var array array with field mapping in form column number => new_field_name
*/
public $mapping = array();
/**
* array with conversions to be done in form: new_field_name => conversion_string
* @access public
* @var array with conversions to be done in form: new_field_name => conversion_string
*/
public $conversion = array();
/**
* array holding the current record
* @access protected
* @var array holding the current record
*/
protected $record = array();
/**
* current position counter
* @access protected
* @var int current position counter
*/
protected $current_position = 0;
/**
* holds total number of records
* @access private
* @var int
* @var int holds total number of records
*/
protected $num_of_records = 0;
/**
* csv resource
* @access private
* @var stream
*/
private $resource;
@ -73,18 +64,16 @@ class import_csv implements iface_import_record { //, Iterator {
private $csv_fieldsep;
/**
* charset of csv file
* @var string
* @access privat
*
* @var string charset of csv file
*/
private $csv_charset;
/**
* @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
* @access public
* @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
*/
public function __construct( $_resource, $_options = array() ) {
public function __construct( $_resource, $_options ) {
$this->resource = $_resource;
$this->csv_fieldsep = $_options['fieldsep'];
$this->csv_charset = $_options['charset'];
@ -93,9 +82,6 @@ class import_csv implements iface_import_record { //, Iterator {
/**
* cleanup
*
* @return
* @access public
*/
public 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}
* @return mixed array with data / false if no furtor records
* @access public
*/
public function get_record( $_position = 'next' ) {
if ($this->get_raw_record( $_position ) === false) {
return false;
}
if ( !empty( $this->mapping ) ) {
$this->do_fieldmapping();
}
if ( !empty( $this->conversion ) ) {
$this->do_conversions();
}
if ( !empty( $this->mapping ) ) {
$this->do_fieldmapping();
}
return $this->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.
*
* @return int
* @access public
*/
public function get_num_of_records( ) {
if ($this->num_of_records > 0) {
@ -208,7 +192,6 @@ class import_csv implements iface_import_record { //, Iterator {
* Returns pointer of current position
*
* @return int
* @access public
*/
public function get_current_position( ) {
@ -221,7 +204,6 @@ class import_csv implements iface_import_record { //, Iterator {
* does fieldmapping according to $this->mapping
*
* @return
* @access protected
*/
protected function do_fieldmapping( ) {
$record = $this->record;
@ -236,7 +218,6 @@ class import_csv implements iface_import_record { //, Iterator {
* does conversions according to $this->conversion
*
* @return bool
* @access protected
*/
protected function do_conversions( ) {
if ( $record = import_export_helper_functions::conversion( $this->record, $this->conversion )) {

View File

@ -10,8 +10,6 @@
* @version $Id$
*/
/**
* class import_export_helper_functions (only static methods)
* use import_export_helper_functions::method
@ -25,80 +23,75 @@ class import_export_helper_functions {
/**
* converts accound_lid to account_id
*
* @param string _account_lid comma seperated list
* @return string comma seperated list
* @static
* @access public
* @param mixed $_account_lid comma seperated list or array with lids
* @return mixed comma seperated list or array with ids
*/
public static function account_lid2id( $_account_lids ) {
$account_lids = explode( ',', $_account_lids );
public static function account_name2id( $_account_lids ) {
$account_lids = is_array( $_account_lids ) ? $_account_lids : explode( ',', $_account_lids );
foreach ( $account_lids as $account_lid ) {
if ( $account_id = $GLOBALS['egw']->accounts->name2id( $account_lid )) {
$account_ids[] = $account_id;
}
}
return implode( ',', $account_ids );
return is_array( $_account_lids ) ? $account_ids : implode( ',', $account_ids );
} // end of member function account_lid2id
/**
* converts account_ids to account_lids
*
* @param int _account_ids comma seperated list
* @return string comma seperated list
* @static
* @access public
* @param mixed $_account_ids comma seperated list or array with ids
* @return mixed comma seperated list or array with lids
*/
public static function account_id2lid( $_account_id ) {
$account_ids = explode( ',', $_account_id );
public static function account_id2name( $_account_id ) {
$account_ids = is_array( $_account_id ) ? $_account_id : explode( ',', $_account_id );
foreach ( $account_ids as $account_id ) {
if ( $account_lid = $GLOBALS['egw']->accounts->id2name( $account_id )) {
$account_lids[] = $account_lid;
}
}
return implode( ',', $account_lids );
return is_array( $_account_id ) ? $account_lids : implode( ',', $account_lids );
} // end of member function account_id2lid
/**
* converts cat_id to a cat_name
*
* @param int _cat_ids comma seperated list
* @return mixed string cat_name
* @static
* @access public
* @param mixed _cat_ids comma seperated list or array
* @return mixed comma seperated list or array with cat_names
*/
public static function cat_id2name( $_cat_ids ) {
if ( !is_object($GLOBALS['egw']->categories) ) {
$GLOBALS['egw']->categories =& CreateObject('phpgwapi.categories');
}
$cat_ids = explode( ',', $_cat_id );
$cats = &CreateObject( 'phpgwapi.categories' );
$cat_ids = is_array( $_cat_ids ) ? $_cat_ids : explode( ',', $_cat_ids );
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
/**
* converts cat_name to a cat_id.
* If a cat isn't found, it will be created.
*
* @param string _cat_names comma seperated list.
* @return mixed int / string (comma seperated cat id's)
* @static
* @access public
* @param mixed $_cat_names comma seperated list or array.
* @return mixed comma seperated list or array with cat_ids
*/
public static function cat_name2id( $_cat_names, $_create = true ) {
if (!is_object($GLOBALS['egw']->categories)) {
$GLOBALS['egw']->categories =& CreateObject( 'phpgwapi.categories' );
}
$cat_names = explode( ',', $_cat_names );
public static function cat_name2id( $_cat_names ) {
$cats = &CreateObject( 'phpgwapi.categories' );
$cats->app_name = 'phpgw';
$cat_names = is_array( $_cat_names ) ? $_cat_names : explode( ',', $_cat_names );
foreach ( $cat_names as $cat_name ) {
if ( $cat_id = $GLOBALS['egw']->categories->name2id( addslashes( $cat_name ))) { }
elseif ($_create) $cat_id = $GLOBALS['egw']->categories->add( array( 'name' => $cat_name,'descr' => $cat_name ));
else continue;
if ( $cat_id = $cats->name2id( addslashes( $cat_name ))) { }
else $cat_id = $cats->add( array(
'name' => $cat_name,
'access' => 'public',
'descr' => $cat_name. ' ('. lang('Automatically created by importexport'). ')'
));
$cat_ids[] = $cat_id;
}
return implode( ',', $cat_ids );
return $_cat_names ? $cat_ids : implode( ',', $cat_ids );
} // 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'.
*
* 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:
* .+|>|[Company]: |[NFamily], |[NGiven]|||[NFamily], |[NGiven]
* It is used on the _record field 'Company' and constructs a something like
* Company: FamilyName, GivenName or FamilyName, GivenName if 'Company' is empty.
* Your record is:
* array( 0 => Company, 1 => NFamily, 2 => NGiven
* 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.
* @cat_name2id(Cat1,...,CatN) returns a (','-separated) list with the cat_id's. If a
* Moreover the two helper function cat() and account() can be used.
* cat(Cat1,...,CatN) returns a (','-separated) list with the cat_id's. If a
* category isn't found, it will be automaticaly added.
*
* Patterns as well as the replacement can be regular expressions (the replacement is done
* 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 _conversion array with conversion description
* @param object &$cclass calling class to process the '@ evals' (not impelmeted yet)
* @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;
$values = $_record;
$PSep = '||'; // Pattern-Separator, separats the pattern-replacement-pairs in conversion
$ASep = '|>'; // Assignment-Separator, separats pattern and replacesment
$VPre = '|#'; // Value-Prefix, is expanded to \ for ereg_replace
$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
$CPre = '|['; $CPos = ']'; // |[_record-idx] is expanded to the corespondig value
foreach ( $_record as $record_idx => $record_value ) {
$pat_reps = explode($PSep,stripslashes($_conversion[$record_idx]));
$replaces = ''; $rvalues = '';
if($pat_reps[0] != '')
{
foreach($pat_reps as $k => $pat_rep)
{
list($pattern,$replace) = explode($ASep,$pat_rep,2);
if($replace == '')
{
$replace = $pattern; $pattern = '^.*$';
}
$rvalues[$pattern] = $replace; // replace two with only one, added by the form
$replaces .= ($replaces != '' ? $PSep : '') . $pattern . $ASep . $replace;
foreach ( $_conversion as $idx => $conversion_string ) {
if ( empty( $conversion_string ) ) continue;
// fetch patterns ($rvalues)
$pat_reps = explode( $PSep, stripslashes( $conversion_string ) );
foreach( $pat_reps as $k => $pat_rep ) {
list( $pattern, $replace ) = explode( $ASep, $pat_rep, 2 );
if( $replace == '' ) {
$replace = $pattern; $pattern = '^.*$';
}
//$_conversion[$record_idx] = $rvalues;
$conv_record = $rvalues;
}
else
{
//unset($_conversion[$record_idx] );
$rvalues[$pattern] = $replace; // replace two with only one, added by the form
}
$val = $record_value;
if(!empty($_conversion[$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);
// conversion list may be longer than $_record (no_csv)
$val = array_key_exists( $idx, $_record ) ? $_record[$idx] : '';
$reg = $CPreReg.'([a-zA-Z_0-9]+)'.$CPosReg;
while(ereg($reg,$val,$vars))
{ // expand all _record fields
$val = str_replace($CPre . $vars[1] . $CPos, $val[0] == '@' ? "'"
. addslashes($fields[array_search($vars[1], array_keys($_record))])
. "'" : $fields[array_search($vars[1], array_keys($_record))], $val);
}
if($val[0] == '@')
{
if (!$GLOBALS['egw_info']['user']['apps']['admin'])
{
error_log(__FILE__.__LINE__. lang('@-eval() is only availible to admins!!!'));
}
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;
}
foreach ( $rvalues as $pattern => $replace ) {
if( ereg( (string)$pattern, $val) ) {
$val = ereg_replace( (string)$pattern, $replace, (string)$val );
$reg = '\|\[([a-zA-Z_0-9]+)\]';
while( ereg( $reg, $val, $vars ) ) {
// expand all _record fields
$val = str_replace(
$CPre . $vars[1] . $CPos,
$_record[array_search($vars[1], array_keys($_record))],
$val
);
}
$val = preg_replace_callback( "/(cat|account)\(([^)]+)\)/i", array( self, 'c2_dispatcher') , $val );
}
}
$values[$record_idx] = $val;
$values[$idx] = $val;
}
return $values;
} // 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
*

View File

@ -128,7 +128,7 @@ class uidefinitions
unset($definition);
}
$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()

View File

@ -199,7 +199,7 @@ class uiexport {
$charset = $GLOBALS['egw']->translation->charset();
}
$plugin_object = new $definition->plugin;
$plugin_object->export($file, $charset, $definition);
$plugin_object->export( $file, $definition );
if($_content['export'] == 'pressed') {
fclose($file);
@ -224,9 +224,16 @@ class uiexport {
fclose($file);
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('divPoweredBy','style.display','none');
//$response->addAssign('divPoweredBy','style.display','none');
$response->addAssign('exec[preview-box]','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
* 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
* @package importexport
@ -12,28 +12,28 @@
$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 {
position: absolute;
top: 0px;
left: 0px;
width: 400px;
height: 360px;
overflow: scroll;
background-color: white;
z-index: 999;
display: none;
}
.preview-box-buttons {
position: absolute;
top: 365px;
left: 0px;
width: 400px;
height: 20px;
z-index: 999;
display: none;
$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;
top: 0px;
left: 0px;
width: 400px;
height: 360px;
overflow: scroll;
background-color: white;
z-index: 999;
display: none;
}
.preview-box-buttons {
position: absolute;
top: 365px;
left: 0px;
width: 400px;
height: 20px;
z-index: 999;
display: none;
}','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',);
@ -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.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;
width: 250px;
max-height:347px;
overflow:auto;
$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;
width: 250px;
max-height:347px;
overflow:auto;
}','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',);

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 plugin importexport de Wählen sie ein Plugin.
choose an application importexport de Wählen sei eine Anwendung.
delete all selected definitions importexport de Alle ausgewählten Definitionen löschen
export importexport de Exportieren
export all selected definitions importexport de Alle ausgewählten Definitionen exportieren
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 überschrieben!)
next importexport de Weiter
preview importexport de Vorschau
previous importexport de Zurück
save as definition importexport de Als Definition speichern
select definition importexport de Definition auswählen
select plugin importexport de Plugin auswählen
some nice text importexport de Ein schöner Text
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 plugin importexport en Choose a plugin
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
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
preview importexport en Preview
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