6.0.0-git
2024-04-23
Last Modified 2006-08-24 by ben

Configuring Turba to use the same fields as Outlook 2003

This document is intended to help Horde administrators create a more Outlook-like experience for their users by giving them the address book fields they are accustomed to. An export of an Outlook 2003 address book contains a number of fields not included in the Outlook UI. This document only covers the fields available in the Outlook UI.

Modifying attributes.php

turba/config/attributes.php is the file that defines which fields are available to turba, and what type of data they can hold. Make the following changes and additions to the default attributes.php

Modify the name field to look like:


$attributes['name'] = array(

    'label' => '',

    'type' => 'html',

    'required' => true

);

Modify the lastname field to look like:


$attributes['lastname'] = array(

    'label' => _("Last Name"),

    'type' => 'text',

    'required' => false

);

Modify the email field to look like:


$attributes['email'] = array(

    'label' => _("Email"),

    'type' => 'email',

    'required' => false

);

Modify the alias field to look like:


$attributes['alias'] = array(

    'label' => _("Alias"),

    'type' => 'text',

    'required' => false

);

Modify the title field to look like:


$attributes['title'] = array(

    'label' => _("Title"),

    'type' => 'text',

    'required' => false

);

Modify the company field to look like:


$attributes['company'] = array(

    'label' => _("Company"),

    'type' => 'text',

    'required' => false

);

Modify the homeAddress field to look like:


 $attributes['homeAddress'] = array(

    'label' => '',

    'type' => 'addresslink',

    'required' => false,

);

Modify the workAddress field to look like:


$attributes['workAddress'] = array(

    'label' => '',

    'type' => 'addresslink',

    'required' => false,

);

Modify the cellPhone field to look like:


$attributes['cellPhone'] = array(

    'label' => _("Mobile Phone"),

    'type' => 'text',

    'required' => false

);

Modify the birthday field to look like:


$attributes['birthday'] = array(

    'label' => _("Birthday"),

    'type' => 'monthdayyear',

    'params' => array(1900, null, true, 1),

    'required' => false,

);

Modify the freebusyUrl field to look like:


$attributes['freebusyUrl'] = array(

    'label' => _("Freebusy URL"),

    'type' => 'text',

    'required' => false

);

And, add the following to the end of the file:


$attributes['homeStreet2'] = array(

    'label' => _("Home Street 2"),

    'type' => 'text',

    'required' => false,

);

$attributes['homeStreet3'] = array(

    'label' => _("Home Street 3"),

    'type' => 'text',

    'required' => false,

);

$attributes['workStreet2'] = array(

    'label' => _("Work Street 2"),

    'type' => 'text',

    'required' => false,

);

$attributes['workStreet3'] = array(

    'label' => _("Work Street 3"),

    'type' => 'text',

    'required' => false,

);

$attributes['employeeType'] = array(

    'label' => _("Employee Type"),

    'type' => 'text',

    'required' => false

);

require_once 'Horde/Prefs/CategoryManager.php';

$cManager = &new Prefs_CategoryManager();

$categories = array_merge(array(_("Unfiled")), $cManager->get());

$attributes['category'] = array(

    'label' => _("Category"),

    'type' => 'enum',

    'params' => array($categories),

    'required' => false

);

$attributes['jobtitle'] = array(

    'label' => _("Job Title"),

    'type' => 'text',

    'required' => false,

    );

$attributes['profession'] = array(

    'label' => _("Profession"),

    'type' => 'text',

    'required' => false,

    );

$attributes['manager'] = array(

    'label' => _("Manager's Name"),

    'type' => 'text',

    'required' => false,

    );

$attributes['assistant'] = array(

    'label' => _("Assistant's Name"),

    'type' => 'text',

    'required' => false,

    );

$attributes['suffix'] = array(

    'label' => _("Suffix"),

    'type' => 'text',

    'required' => false,

    );

$attributes['spouse'] = array(

    'label' => _("Spouse's Name"),

    'type' => 'text',

    'required' => false,

    );

$attributes['anniversary'] = array(

    'label' => _("Anniversary"),

    'type' => 'monthdayyear',

    'params' => array(1900, null, true, 1),

    'required' => false,

);

$attributes['pager'] = array(

    'label' => _("Pager"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['callbackPhone'] = array(

    'label' => _("Callback Phone"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['email2'] = array(

    'label' => _("Email") . ' 2',

    'type' => 'email',

    'required' => false,

    'params' => array('', 40, 255)

);

$attributes['email3'] = array(

    'label' => _("Email") . ' 3',

    'type' => 'email',

    'required' => false,

    'params' => array('', 40, 255)

);

$attributes['assistantPhone'] = array(

    'label' => _("Assistant's Phone"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['workPhone2'] = array(

    'label' => _("Work Phone") . ' 2',

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['Phone'] = array(

    'label' => _("Home Phone"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['workFax'] = array(

    'label' => _("Work Fax"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['callback'] = array(

    'label' => _("Callback"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['carPhone'] = array(

    'label' => _("Car Phone"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['companyPhone'] = array(

    'label' => _("Company Main Phone"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['homePhone2'] = array(

    'label' => _("Home Phone") . ' 2',

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['homeFax'] = array(

    'label' => _("Home Fax") . ' 2',

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['isdn'] = array(

    'label' => _("ISDN"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['otherPhone'] = array(

    'label' => _("Other Phone"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['otherFax'] = array(

    'label' => _("Other Fax"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['primaryPhone'] = array(

    'label' => _("Primary Phone"),

    'type' => 'email',

    'required' => false,

    'params' => array('', 40, 255)

);

$attributes['radio'] = array(

    'label' => _("Radio Phone"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['telex'] = array(

    'label' => _("Telex"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['tty/tdd'] = array(

    'label' => _("TTY/TDD Phone"),

    'type' => 'text',

    'required' => false,

    'params' => array('', 40, 25)

);

$attributes['otherAddress'] = array(

    'label' => '',

    'type' => 'addresslink',

    'required' => false,

);

$attributes['otherStreet'] = array(

    'label' => _("Other Street Address"),

    'type' => 'text',

    'required' => false,

);

$attributes['otherStreet2'] = array(

    'label' => _("Other Street 2"),

    'type' => 'text',

    'required' => false,

);

$attributes['otherStreet3'] = array(

    'label' => _("Other Street 3"),

    'type' => 'text',

    'required' => false,

);

$attributes['otherCity'] = array(

    'label' => _("Other City"),

    'type' => 'text',

    'required' => false

);

$attributes['otherProvince'] = array(

    'label' => _("Other State/Province"),

    'type' => 'text',

    'required' => false

);

$attributes['otherPostalCode'] = array(

    'label' => _("Other Postal Code"),

    'type' => 'text',

    'required' => false

);

$attributes['otherCountry'] = array(

    'label' => _("Other Country"),

    'type' => 'text',

    'required' => false

);

$attributes['middlename'] = array(

    'label' => _("Middle Name"),

    'type' => 'text',

    'required' => false

);

Modifying sources.php

turba/config/sources.php is the file that tells Turba which sources to use, and gives it all of the parameters for that source, such as what fields from attributes.php are used.

Use the following for your sql source's 'map' parameter:


    'map' => array(

        '__key' => 'object_id',

        '__owner' => 'owner_id',

        '__type' => 'object_type',

        '__members' => 'object_members',

        '__uid' => 'object_uid',

        'name' => array('fields' => array('firstname', 'lastname'),

                        'format' => '%s %s'),

        'title' => 'object_title',

        'firstname' => 'object_firstname',

        'middlename' => 'object_middlename',

        'lastname' => 'object_lastname',

        'suffix' => 'object_suffix',

        'company' => 'object_company',

        'department' => 'object_department',

        'jobtitle' => 'object_jobtitle',

        'workStreet' => 'object_workstreet',

        'workStreet2' => 'object_workstreet2',

        'workStreet3' => 'object_workstreet3',

        'workCity' => 'object_workcity',

        'workProvince' => 'object_workprovince',

        'workPostalCode' => 'object_workpostalcode',

        'workCountry' => 'object_workcountry',

        'workAddress' => array('fields' => array('workStreet', 'workStreet2', 'workStreet3', 'workCity', 'workProvince', 'workPostalCode'),

                               'format' => "%s\n%s\n%s\n%s, %s %s"),

        'homeStreet' => 'object_homestreet',

        'homeStreet2' => 'object_homestreet2',

        'homeStreet3' => 'object_homestreet3',

        'homeCity' => 'object_homecity',

        'homeProvince' => 'object_homeprovince',

        'homePostalCode' => 'object_homepostalcode',

        'homeCountry' => 'object_homecountry',

        'homeAddress' => array('fields' => array('homeStreet', 'homeStreet2', 'homeStreet3', 'homeCity', 'homeProvince', 'homePostalCode'),

                               'format' => "%s\n%s\n%s\n%s, %s %s"),

        'otherStreet' => 'object_otherstreet',

        'otherStreet2' => 'object_otherstreet2',

        'otherStreet3' => 'object_otherstreet3',

        'otherCity' => 'object_othercity',

        'otherProvince' => 'object_otherprovince',

        'otherPostalCode' => 'object_otherpostalcode',

        'otherCountry' => 'object_othercountry',

        'otherAddress' => array('fields' => array('otherStreet', 'otherStreet2', 'otherStreet3', 'otherCity', 'otherProvince', 'otherPostalCode'),

                               'format' => "%s\n%s\n%s\n%s, %s %s"),

        'assistantPhone' => 'object_assistantphone',

        'workFax' => 'object_workfax',

        'workPhone' => 'object_workphone',

        'workPhone2' => 'object_workphone2',

        'callback' => 'object_callback',

        'carPhone' => 'object_carphone',

        'companyPhone' => 'object_companyphone',

        'homeFax' => 'object_homefax',

        'homePhone' => 'object_homephone',

        'homePhone2' => 'object_homephone2',

        'isdn' => 'object_isdn',

        'cellPhone' => 'object_cellphone',

        'otherFax' => 'object_otherfax',

        'otherPhone' => 'object_otherphone',

        'pager' => 'object_pager',

        'primaryPhone' => 'object_primaryphone',

        'radio' => 'object_radio',

        'tty/tdd' => 'object_ttytdd',

        'telex' => 'object_telex',

        'anniversary' => 'object_anniversary',

        'assistant' => 'object_assistant',

        'birthday' => 'object_birthday',

        'category' => 'object_category',

        'email' => 'object_email',

        'email2' => 'object_email2',

        'email3' => 'object_email3',

        'freebusyUrl' => 'object_freebusyurl',

        'manager' => 'object_manager',

        'notes' => 'object_notes',

        'office' => 'object_office',

        'profession' => 'object_profession',

        'spouse' => 'object_spouse',

        'website' => 'object_website',

        'alias' => 'object_alias',

        'nickname' => 'object_nickname',

        'pgpPublicKey' => 'object_pgppublickey',

        'smimePublicKey' => 'object_smimepublickey',

    ),

And, use the following for your sql source's 'tabs' parameter. This is not included in the default sources.php, so you will have to add it.


    'tabs' => array(

        'General' => array('name', 'firstname', 'middlename', 'lastname', 'jobtitle', 'company', 'email', 'email2',

                           'email3', 'alias', 'website', 'category'),

        'Phone Numbers' => array('primaryPhone', 'homePhone', 'homePhone2', 'homeFax', 'workPhone', 'workPhone2',

                                 'workFax', 'cellPhone', 'pager', 'assistantPhone', 'callback', 'carPhone',

                                 'companyPhone', 'isdn', 'otherPhone', 'otherFax', 'radio', 'telex', 'tty/tdd'),

        'Home Address' => array('homeStreet', 'homeStreet2', 'homeStreet3', 'homeCity', 'homeProvince', 'homePostalCode', 'homeCountry', 'homeAddress'),

        'Work Address' => array('workStreet', 'workStreet2', 'workStreet3', 'workCity', 'workProvince', 'workPostalCode', 'workCountry', 'workAddress'),

        'Other Address' => array('otherStreet', 'otherStreet2', 'otherStreet3', 'otherCity', 'otherProvince', 'otherPostalCode', 'otherCountry', 'otherAddress'),

        'Details' => array('department', 'office', 'profession', 'manager', 'assistant', 'nickname', 'title',

                           'suffix', 'spouse', 'birthday', 'anniversary', 'freebusyUrl', 'notes'),

        'Certificates' => array('pgpPublicKey', 'smimePublicKey'),

    ),

Preparing the database to use new fields