reworked import:

- cli import working fine now
- ui wizzard is broken atm. will also be reworked
- export definitions as xml files (see arrayxml functions in importexport)
- moved importexport stuff to own dir
This commit is contained in:
Cornelius Weiß 2007-06-07 22:31:08 +00:00
parent b4b6d5abef
commit 9e6050bc22
9 changed files with 707 additions and 5 deletions

View File

@ -8,7 +8,7 @@
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @author Cornelius Weiss <nelius@cwtech.de> * @author Cornelius Weiss <nelius@cwtech.de>
* @copyright Cornelius Weiss <nelius@cwtech.de> * @copyright Cornelius Weiss <nelius@cwtech.de>
* @version $Id$ * @version $Id: class.egw_addressbook_record.inc.php 22827 2006-11-10 15:35:35Z nelius_weiss $
*/ */
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');

View File

@ -8,13 +8,13 @@
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @author Cornelius Weiss <nelius@cwtech.de> * @author Cornelius Weiss <nelius@cwtech.de>
* @copyright Cornelius Weiss <nelius@cwtech.de> * @copyright Cornelius Weiss <nelius@cwtech.de>
* @version $Id$ * @version $Id: $
*/ */
require_once(EGW_INCLUDE_ROOT. '/etemplate/inc/class.etemplate.inc.php'); require_once(EGW_INCLUDE_ROOT. '/etemplate/inc/class.etemplate.inc.php');
require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.export_csv.inc.php'); require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.export_csv.inc.php');
require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.iface_export_plugin.inc.php'); require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.iface_export_plugin.inc.php');
require_once(EGW_INCLUDE_ROOT. '/addressbook/inc/class.egw_addressbook_record.inc.php'); require_once(EGW_INCLUDE_ROOT. '/addressbook/importexport/class.egw_addressbook_record.inc.php');
require_once(EGW_INCLUDE_ROOT. '/addressbook/inc/class.uicontacts.inc.php'); require_once(EGW_INCLUDE_ROOT. '/addressbook/inc/class.uicontacts.inc.php');
/** /**
@ -42,7 +42,8 @@ class export_contacts_csv implements iface_export_plugin {
} }
$options['begin_with_fieldnames'] = true; $options['begin_with_fieldnames'] = true;
$export_object = new export_csv($_stream, $charset, (array)$options); $export_object = new export_csv($_stream, $_charset, (array)$options);
$export_object->set_mapping($options['mapping']);
// $options['selection'] is array of identifiers as this plugin doesn't // $options['selection'] is array of identifiers as this plugin doesn't
// support other selectors atm. // support other selectors atm.

View File

@ -0,0 +1,216 @@
<?php
/**
* 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: $
*/
require_once(EGW_INCLUDE_ROOT. '/importexport/inc/class.iface_import_plugin.inc.php');
require_once(EGW_INCLUDE_ROOT.'/importexport/inc/class.import_csv.inc.php');
/**
* class import_csv for addressbook
*/
class import_contacts_csv implements iface_import_plugin {
private static $plugin_options = array(
'fieldsep', //char
'charset', //string
'addressbook', //char
'owner', // comma seperated list of int
'csv_fields', // array( $csv_col_num => csv_field_name)
'field_mapping', // array( $csv_col_num => adb_filed)
'field_translation', // array( $csv_col_num => translation)
'has_header_line', //bool
'max', // int
'conditions', /* => array containing condition arrays:
'type' => 0, // exists
'string' => '#kundennummer',
'true' => array(
'action' => update,
'last' => true,
),
'false' => array(
'action' => insert,
'last' => true,
),*/
);
/**
* actions wich could be done to data entries
*/
private static $actions = array( 'none', 'update', 'insert', 'delte', );
/**
* conditions for actions
*
* @var array
*/
private static $conditions = array( 'exists', 'greater', 'greater or equal', );
/**
* @var bocontacts
*/
private $bocontacts;
/**
* constructor of import_contacts_csv
*
public function __construct() {
$this->bocontacts = CreateObject('addressbook.bocontacts');
}*/
/**
* imports entries according to given definition object.
* @param resource $_stream
* @param string $_charset
* @param definition $_definition
*/
public function import( $_stream, $_charset, definition $_definition ) {
$import_csv = new import_csv( $_stream, array(
'fieldsep' => $_definition->plugin_options['fieldsep'],
'charset' => $_definition->plugin_options['charset'],
));
// fetch the addressbook bo
$this->bocontacts = CreateObject('addressbook.bocontacts');
// set FieldMapping. Throw away empty / not assigned entrys
$import_csv->mapping = array_diff($_definition->plugin_options['field_mapping'],array(''));
// renamed from translation to conversion
$import_csv->conversion = $_definition->plugin_options['field_conversion'] ?
$_definition->plugin_options['field_conversion'] :
$_definition->plugin_options['field_translation'];
//check if file has a header line
if ($_definition->plugin_options['has_header_line']) {
$record = $import_csv->get_record();
}
// TODO: Throw away spechial chars ?
// TODO: check conversion:
// - is not existing cat created?
// - usermapping?
while ( $record = $import_csv->get_record() ) {
// don't import empty contacts
if( count( array_unique( $record ) ) < 2 ) continue;
if ( $_definition->plugin_options['conditions'] ) {
foreach ( $_definition->plugin_options['conditions'] as $condition ) {
switch ( $condition['type'] ) {
// exists
case 'exists' :
$contacts = $this->bocontacts->search(array(
$condition['string'] => $record[$condition['string']],
),true);
if ( is_array( $contacts ) && count( array_keys( $contacts ) >= 1 ) ) {
// apply action to all contacts matching this exists condition
$action = $condition['true'];
foreach ( (array)$contacts as $contact ) {
$record['id'] = $contact['id'];
$this->action( $action['action'], $record );
}
} else {
$action = $condition['true'];
$this->action( $action['action'], $record );
}
break;
// not supported action
default :
die('condition / action not supported!!!');
break;
}
if ($action['last']) break;
}
} else {
// unconditional insert
$this->action( 'insert', $values );
}
}
}
/**
* perform the required action
*
* @param int $_action one of $this->actions
* @param array $_data contact data for the action
* @return bool success or not
*/
private function action ( $_action, $_data ) {
print_r($_data);
switch ($_action) {
case 'none' :
return true;
case 'update' :
case 'insert' :
return $this->bocontacts->save( $_data );
case 'delete' :
}
}
/**
* returns translated name of plugin
*
* @return string name
*/
public static function get_name() {
return lang('Addressbook CSV export');
}
/**
* returns translated (user) description of plugin
*
* @return string descriprion
*/
public static function get_description() {
return lang("Imports contacts into your Addressbook from a CSV File. CSV means 'Comma Seperated Values'. However in the options Tab you can also choose other seperators.");
}
/**
* retruns file suffix(s) plugin can handle (e.g. csv)
*
* @return string suffix (comma seperated)
*/
public static function get_filesuffix() {
return 'csv';
}
/**
* return etemplate components for options.
* @abstract We can't deal with etemplate objects here, as an uietemplate
* objects itself are scipt orientated and not "dialog objects"
*
* @return array (
* name => string,
* content => array,
* sel_options => array,
* preserv => array,
* )
*/
public function get_options_etpl() {
// lets do it!
}
/**
* returns etemplate name for slectors of this plugin
*
* @return string etemplate name
*/
public function get_selectors_etpl() {
// lets do it!
}
} // end of iface_export_plugin
?>

View File

@ -0,0 +1,192 @@
<?php
/**
* eGroupWare - Wizzard for Adressbook CSV import
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package addressbook
* @link http://www.egroupware.org
* @author Cornelius Weiss <nelius@cwtech.de>
* @version $Id: $
*/
require_once(EGW_INCLUDE_ROOT.'/addressbook/inc/class.addressbook_csv_import.inc.php');
class wizzard_addressbook_csv_import extends addressbook_csv_import
{
var $steps;
/**
* constructor
*/
function wizzard_addressbook_csv_import()
{
$this->steps = array(
'wizzard_step30' => lang('Load Sample file'),
'wizzard_step40' => lang('Choose seperator and charset'),
'wizzard_step50' => lang('Manage mapping'),
'wizzard_step60' => lang('Choose owner of imported data'),
);
$this->__construct();
}
function wizzard_step30(&$content, &$sel_options, &$readonlys, &$preserv)
{
if($this->debug) error_log('addressbook.importexport.addressbook_csv_import::wizzard_step30->$content '.print_r($content,true));
// return from step30
if ($content['step'] == 'wizzard_step30')
{
switch (array_search('pressed', $content['button']))
{
case 'next':
error_log(print_r($content,true));
$file = fopen ($content['file']['tmp_name'],'rb');
return $GLOBALS['egw']->uidefinitions->get_step($content['step'],1);
case 'previous' :
return $GLOBALS['egw']->uidefinitions->get_step($content['step'],-1);
case 'finish':
return 'wizzard_finish';
default :
return $this->wizzard_step30($content,$sel_options,$readonlys,$preserv);
}
}
// init step30
else
{
$content['msg'] = $this->steps['wizzard_step30'];
$content['step'] = 'wizzard_step30';
$preserv = $content;
unset ($preserv['button']);
$GLOBALS['egw']->js->set_onload("var btn = document.getElementById('exec[button][next]'); btn.attributes.removeNamedItem('onclick');");
return 'addressbook.importexport_wizzard_samplefile';
}
}
/**
* choose fieldseperator, charset and headerline
*
* @param array $content
* @param array $sel_options
* @param array $readonlys
* @param array $preserv
* @return string template name
*/
function wizzard_step40(&$content, &$sel_options, &$readonlys, &$preserv)
{
if($this->debug) error_log('addressbook.importexport.addressbook_csv_import::wizzard_step40->$content '.print_r($content,true));
// return from step40
if ($content['step'] == 'wizzard_step40')
{//error_log(serialize($GLOBALS['egw']->uidefinitions));
switch (array_search('pressed', $content['button']))
{
case 'next':
return $GLOBALS['egw']->uidefinitions->get_step($content['step'],1);
case 'previous' :
return $GLOBALS['egw']->uidefinitions->get_step($content['step'],-1);
case 'finish':
return 'wizzard_finish';
default :
return $this->wizzard_step40($content,$sel_options,$readonlys,$preserv);
}
}
// init step40
else
{
$content['msg'] = $this->steps['wizzard_step40'];
$content['step'] = 'wizzard_step40';
$sel_options['charset'] = $GLOBALS['egw']->translation->get_installed_charsets()+
array('utf-8' => 'utf-8 (Unicode)');
$preserv = $content;
unset ($preserv['button']);
return 'addressbook.importexport_wizzard_choosesepncharset';
}
}
function wizzard_step50(&$content, &$sel_options, &$readonlys, &$preserv)
{
if($this->debug) error_log('addressbook.importexport.addressbook_csv_import::wizzard_step50->$content '.print_r($content,true));
// return from step50
if ($content['step'] == 'wizzard_step50')
{
array_shift($content['csv_fields']);
//$content['csv_fields'] = array('csv_01','csv_02','csv_03','csv_04','csv_05','csv_06','csv_07','csv_08','csv_09','csv_10','csv_11','csv_12');
array_shift($content['field_mapping']);
array_shift($content['field_translation']);
switch (array_search('pressed', $content['button']))
{
case 'next':
return $GLOBALS['egw']->uidefinitions->get_step($content['step'],1);
case 'previous' :
return $GLOBALS['egw']->uidefinitions->get_step($content['step'],-1);
case 'finish':
return 'wizzard_finish';
default :
return $this->wizzard_step50($content,$sel_options,$readonlys,$preserv);
}
}
// init step50
else
{
$content['msg'] = $this->steps['wizzard_step50'];
$content['step'] = 'wizzard_step50';
array_unshift($content['csv_fields'],array('row0'));
array_unshift($content['field_mapping'],array('row0'));
array_unshift($content['field_translation'],array('row0'));
$j = 0;
foreach ($content['csv_fields'] as $field)
{
if(strstr($field,'no_csv_')) $j++;
}
while ($j <= 3)
{
$content['csv_fields'][] = 'no_csv_'.$j;
$content['field_mapping'][] = $content['field_translation'][] = '';
$j++;
}
$contact_fields = $this->bocontacts->get_contact_columns();
$sel_options['field_mapping'] = array('' => lang('none')) + array_combine($contact_fields,$contact_fields);
error_log(print_r($sel_options['field_mapping'],true));
$preserv = $content;
unset ($preserv['button']);
return 'addressbook.importexport_wizzard_fieldmaping';
}
}
function wizzard_step60(&$content, &$sel_options, &$readonlys, &$preserv)
{
if($this->debug) error_log('addressbook.importexport.addressbook_csv_import::wizzard_step60->$content '.print_r($content,true));
// return from step60
if ($content['step'] == 'wizzard_step60')
{
switch (array_search('pressed', $content['button']))
{
case 'next':
return $GLOBALS['egw']->uidefinitions->get_step($content['step'],1);
case 'previous' :
return $GLOBALS['egw']->uidefinitions->get_step($content['step'],-1);
case 'finish':
return 'wizzard_finish';
default :
return $this->wizzard_step60($content,$sel_options,$readonlys,$preserv);
}
}
// init step60
else
{
$content['msg'] = $this->steps['wizzard_step60'];
$content['step'] = 'wizzard_step60';
$preserv = $content;
unset ($preserv['button']);
return 'addressbook.importexport_wizzard_chooseowner';
}
}
}

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<entry type="array" name="importExportDefinitions">
<entry type="array" name="metainfo">
<entry type="string" name="type">importexport definitions</entry>
<entry type="string" name="charset">utf-8</entry>
<entry type="integer" name="entries">1</entry>
</entry>
<entry type="array" name="definitions">
<entry type="array" name="outlook_csv_english">
<entry type="string" name="name">outlook_csv_english</entry>
<entry type="string" name="application">addressbook</entry>
<entry type="string" name="plugin">export_contacts_csv</entry>
<entry type="string" name="type">export</entry>
<entry type="array" name="allowed_users">
<entry type="string" name="0">-1</entry>
</entry>
<entry type="array" name="plugin_options">
<entry type="array" name="mapping">
<entry type="string" name="n_prefix">Title</entry>
<entry type="string" name="n_given">First Name</entry>
<entry type="string" name="n_middle">Middle Name</entry>
<entry type="string" name="n_family">Last Name</entry>
<entry type="string" name="n_suffix">Suffix</entry>
<entry type="string" name="org_name">Company</entry>
<entry type="string" name="org_unit">Department</entry>
<entry type="string" name="title">Job Title</entry>
<entry type="string" name="adr_one_street">Business Street</entry>
<entry type="string" name="address2">Business Street 2</entry>
<entry type="string" name="address3">Business Street 3</entry>
<entry type="string" name="adr_one_locality">Business City</entry>
<entry type="string" name="adr_one_region">Business State</entry>
<entry type="string" name="adr_one_postalcode">Business Postal Code</entry>
<entry type="string" name="adr_one_countryname">Business Country</entry>
<entry type="string" name="adr_two_street">Home Street</entry>
<entry type="string" name="adr_two_locality">Home City</entry>
<entry type="string" name="adr_two_region">Home State</entry>
<entry type="string" name="adr_two_postalcode">Home Postal Code</entry>
<entry type="string" name="adr_two_countryname">Home Country</entry>
<entry type="string" name="tel_fax">Business Fax</entry>
<entry type="string" name="tel_work">Business Phone</entry>
<entry type="string" name="tel_msg">Assistant's Phone</entry>
<entry type="string" name="tel_car">Car Phone</entry>
<entry type="string" name="tel_isdn">ISDN</entry>
<entry type="string" name="tel_home">Home Phone</entry>
<entry type="string" name="tel_cell">Mobile Phone</entry>
<entry type="string" name="tel_pager">Pager</entry>
<entry type="string" name="ophone">Business Phone 2</entry>
<entry type="string" name="bday">Birthday</entry>
<entry type="string" name="email">E-mail Address</entry>
<entry type="string" name="email_home">E-mail Address 2</entry>
<entry type="string" name="url">Web Page</entry>
<entry type="string" name="note">Notes</entry>
</entry>
</entry>
<entry type="string" name="owner">0</entry>
<entry type="string" name="description">Exports selected contacts for english version of MS Outlook</entry>
</entry>
</entry>
</entry>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<entry type="array" name="importExportDefinitions">
<entry type="array" name="metainfo">
<entry type="string" name="type">importexport definitions</entry>
<entry type="string" name="charset">utf-8</entry>
<entry type="integer" name="entries">1</entry>
</entry>
<entry type="array" name="definitions">
<entry type="array" name="outlook_csv_finish">
<entry type="string" name="name">outlook_csv_finish</entry>
<entry type="string" name="application">addressbook</entry>
<entry type="string" name="plugin">export_contacts_csv</entry>
<entry type="string" name="type">export</entry>
<entry type="array" name="allowed_users">
<entry type="string" name="0">-1</entry>
</entry>
<entry type="array" name="plugin_options">
<entry type="array" name="mapping">
<entry type="string" name="title">Tehtävänimike</entry>
<entry type="string" name="n_given">Etunimi</entry>
<entry type="string" name="n_middle">Toinen nimi</entry>
<entry type="string" name="n_family">Sukunimi</entry>
<entry type="string" name="n_suffix">Jälkiliite</entry>
<entry type="string" name="org_name">Yritys</entry>
<entry type="string" name="org_unit">Osasto</entry>
<entry type="string" name="adr_one_street">Lähiosoite (työ)</entry>
<entry type="string" name="Business Street 2">Lähiosoite (työ) 2</entry>
<entry type="string" name="Business Street 3">Lähiosoite (työ) 3</entry>
<entry type="string" name="Business City">Postitoimipaikka (työ)</entry>
<entry type="string" name="Business State">Sijaintitiedot (työ)</entry>
<entry type="string" name="Business Postal Code">Postinumero (työ)</entry>
<entry type="string" name="Business Country">Maa (työ)</entry>
<entry type="string" name="Home Street">Lähiosoite (koti)</entry>
<entry type="string" name="Home City">Postitoimipaikka (koti)</entry>
<entry type="string" name="Home State">Sijaintitiedot (koti)</entry>
<entry type="string" name="Home Postal Code">Postinumero (koti)</entry>
<entry type="string" name="Home Country">Maa (koti)</entry>
<entry type="string" name="Business Fax">Työfaksi</entry>
<entry type="string" name="Business Phone">Työpuhelin</entry>
<entry type="string" name="Assistant's Phone">Avustajan puhelinnumero</entry>
<entry type="string" name="Car Phone">Autopuhelin</entry>
<entry type="string" name="ISDN">ISDN</entry>
<entry type="string" name="Home Phone">Kotipuhelin</entry>
<entry type="string" name="Mobile Phone">Matkapuhelin</entry>
<entry type="string" name="Pager">Hakulaite</entry>
<entry type="string" name="Business Phone 2">Työpuhelin 2</entry>
<entry type="string" name="Birthday">Syntymäpäivä</entry>
<entry type="string" name="E-mail Address">Sähköpostiosoite</entry>
<entry type="string" name="E-mail Address 2">Säköpostiosoite 2</entry>
<entry type="string" name="Web Page">Web-sivu</entry>
<entry type="string" name="Notes">Muistilaput</entry>
</entry>
</entry>
<entry type="string" name="owner">0</entry>
<entry type="NULL" name="description"/>
</entry>
</entry>
</entry>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<entry type="array" name="importExportDefinitions">
<entry type="array" name="metainfo">
<entry type="string" name="type">importexport definitions</entry>
<entry type="string" name="charset">utf-8</entry>
<entry type="integer" name="entries">1</entry>
</entry>
<entry type="array" name="definitions">
<entry type="array" name="outlook_csv_french">
<entry type="string" name="name">outlook_csv_french</entry>
<entry type="string" name="application">addressbook</entry>
<entry type="string" name="plugin">export_contacts_csv</entry>
<entry type="string" name="type">export</entry>
<entry type="array" name="allowed_users">
<entry type="string" name="0">-1</entry>
</entry>
<entry type="array" name="plugin_options">
<entry type="array" name="mapping">
<entry type="string" name="title">Fonction</entry>
<entry type="string" name="n_given">Prénom</entry>
<entry type="string" name="n_middle">Deuxième prénom</entry>
<entry type="string" name="n_family">Nom</entry>
<entry type="string" name="n_suffix">Suffixe</entry>
<entry type="string" name="org_name">Société</entry>
<entry type="string" name="org_unit">Service</entry>
<entry type="string" name="adr_one_street">Rue (bureau)</entry>
<entry type="string" name="address2">Rue (bureau) 2</entry>
<entry type="string" name="address3">Rue (bureau) 3</entry>
<entry type="string" name="adr_one_locality">Ville (bureau)</entry>
<entry type="string" name="adr_one_region">État/Prov (bureau)</entry>
<entry type="string" name="adr_one_postalcode">Code postal (bureau)</entry>
<entry type="string" name="adr_one_countryname">Pays (bureau)</entry>
<entry type="string" name="adr_two_street">Rue (domicile)</entry>
<entry type="string" name="adr_two_locality">Ville (domicile)</entry>
<entry type="string" name="adr_two_region">État/Prov (domicile)</entry>
<entry type="string" name="adr_two_postalcode">Code postal (domicile)</entry>
<entry type="string" name="adr_two_countryname">Pays (domicile)</entry>
<entry type="string" name="tel_fax">Télécopie (bureau)</entry>
<entry type="string" name="tel_work">Téléphone (bureau)</entry>
<entry type="string" name="tel_msg">Téléphone de l'assistant(e)</entry>
<entry type="string" name="tel_car">Téléphone (voiture)</entry>
<entry type="string" name="tel_isdn">RNIS</entry>
<entry type="string" name="tel_home">Téléphone (domicile)</entry>
<entry type="string" name="tel_cell">Tél. mobile</entry>
<entry type="string" name="tel_pager">Récepteur de radiomessagerie</entry>
<entry type="string" name="ophone">Téléphone 2 (bureau)</entry>
<entry type="string" name="bday">Anniversaire</entry>
<entry type="string" name="email">Adresse e-mail</entry>
<entry type="string" name="email_home">Adresse e-mail 2</entry>
<entry type="string" name="url">Page Web</entry>
<entry type="string" name="note">Notes</entry>
</entry>
</entry>
<entry type="string" name="owner">0</entry>
<entry type="NULL" name="description"/>
</entry>
</entry>
</entry>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<entry type="array" name="importExportDefinitions">
<entry type="array" name="metainfo">
<entry type="string" name="type">importexport definitions</entry>
<entry type="string" name="charset">utf-8</entry>
<entry type="integer" name="entries">1</entry>
</entry>
<entry type="array" name="definitions">
<entry type="array" name="outlook_csv_german">
<entry type="string" name="name">outlook_csv_german</entry>
<entry type="string" name="application">addressbook</entry>
<entry type="string" name="plugin">export_contacts_csv</entry>
<entry type="string" name="type">export</entry>
<entry type="array" name="allowed_users">
<entry type="string" name="0">-1</entry>
</entry>
<entry type="array" name="plugin_options">
<entry type="array" name="mapping">
<entry type="string" name="n_prefix">Anrede</entry>
<entry type="string" name="n_given">Vorname</entry>
<entry type="string" name="n_middle">Weitere Vornamen</entry>
<entry type="string" name="n_family">Nachname</entry>
<entry type="string" name="n_suffix">Suffix</entry>
<entry type="string" name="org_name">Firma</entry>
<entry type="string" name="org_unit">Abteilung</entry>
<entry type="string" name="title">Position</entry>
<entry type="string" name="adr_one_street">Straße geschäftlich</entry>
<entry type="string" name="address2">Straße geschäftlich 2</entry>
<entry type="string" name="address3">Straße geschäftlich 3</entry>
<entry type="string" name="adr_one_locality">Ort geschäftlich</entry>
<entry type="string" name="adr_one_region">Region geschäftlich</entry>
<entry type="string" name="adr_one_postalcode">Postleitzahl geschäftlich</entry>
<entry type="string" name="adr_one_countryname">Land geschäftlich</entry>
<entry type="string" name="adr_two_street">Straße privat</entry>
<entry type="string" name="adr_two_locality">Ort privat</entry>
<entry type="string" name="adr_two_region">Region privat</entry>
<entry type="string" name="adr_two_postalcode">Postleitzahl privat</entry>
<entry type="string" name="adr_two_countryname">Land privat</entry>
<entry type="string" name="tel_fax">Fax geschäftlich</entry>
<entry type="string" name="tel_work">Telefon geschäftlich</entry>
<entry type="string" name="tel_msg">Telefon Assistent</entry>
<entry type="string" name="tel_car">Autotelefon</entry>
<entry type="string" name="tel_isdn">ISDN</entry>
<entry type="string" name="tel_home">Telefon privat</entry>
<entry type="string" name="tel_cell">Mobiltelefon</entry>
<entry type="string" name="tel_pager">Pager</entry>
<entry type="string" name="ophone">Telefon geschäftlich 2</entry>
<entry type="string" name="bday">Geburtstag</entry>
<entry type="string" name="email">E-Mail-Adresse</entry>
<entry type="string" name="email_home">E-Mail 2: Adresse</entry>
<entry type="string" name="url">Webseite</entry>
<entry type="string" name="note">Notizen</entry>
</entry>
</entry>
<entry type="string" name="owner">0</entry>
<entry type="string" name="description">Exportiert ausgewählte Kontakte zur Datenübernahme in die deutsche Version von MS Outlook</entry>
</entry>
</entry>
</entry>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<entry type="array" name="importExportDefinitions">
<entry type="array" name="metainfo">
<entry type="string" name="type">importexport definitions</entry>
<entry type="string" name="charset">utf-8</entry>
<entry type="integer" name="entries">1</entry>
</entry>
<entry type="array" name="definitions">
<entry type="array" name="outlook_csv_italien">
<entry type="string" name="name">outlook_csv_italien</entry>
<entry type="string" name="application">addressbook</entry>
<entry type="string" name="plugin">export_contacts_csv</entry>
<entry type="string" name="type">export</entry>
<entry type="array" name="allowed_users">
<entry type="string" name="0">-1</entry>
</entry>
<entry type="array" name="plugin_options">
<entry type="array" name="mapping">
<entry type="string" name="title">Posizione</entry>
<entry type="string" name="n_prefix">Titolo</entry>
<entry type="string" name="n_given">Nome</entry>
<entry type="string" name="n_middle">Secondo nome</entry>
<entry type="string" name="n_family">Cognome</entry>
<entry type="string" name="n_suffix">Titolo straniero</entry>
<entry type="string" name="org_name">Società</entry>
<entry type="string" name="org_unit">Reparto</entry>
<entry type="string" name="adr_one_street">Via (uff.)</entry>
<entry type="string" name="address2">Via (uff.) 2</entry>
<entry type="string" name="address3">Via (uff.) 3</entry>
<entry type="string" name="adr_one_locality">Città (uff.)</entry>
<entry type="string" name="adr_one_region">Provincia (uff.)</entry>
<entry type="string" name="adr_one_postalcode">CAP (uff.)</entry>
<entry type="string" name="adr_one_countryname">Paese (uff.)</entry>
<entry type="string" name="adr_two_street">Via (ab.)</entry>
<entry type="string" name="adr_two_locality">Città (ab.)</entry>
<entry type="string" name="adr_two_region">Provincia (ab.)</entry>
<entry type="string" name="adr_two_postalcode">CAP (ab.)</entry>
<entry type="string" name="adr_two_countryname">Paese (ab.)</entry>
<entry type="string" name="tel_fax">Fax (uff.)</entry>
<entry type="string" name="tel_work">Ufficio</entry>
<entry type="string" name="tel_msg">Telefono assistente</entry>
<entry type="string" name="tel_car">Telefono auto</entry>
<entry type="string" name="tel_isdn">ISDN</entry>
<entry type="string" name="tel_home">Abitazione</entry>
<entry type="string" name="tel_cell">Cellulare</entry>
<entry type="string" name="tel_pager">Pager</entry>
<entry type="string" name="ophone">Business Phone 2</entry>
<entry type="string" name="bday">Compleanno</entry>
<entry type="string" name="email">Indirizzo posta elettronica</entry>
<entry type="string" name="email_home">Indirizzo posta elettronica 2</entry>
<entry type="string" name="url">Pagina Web</entry>
<entry type="string" name="note">Notes</entry>
</entry>
</entry>
<entry type="string" name="owner">0</entry>
<entry type="NULL" name="description"/>
</entry>
</entry>
</entry>