New options for exporting categories: New field for each category, new field for main categories

New options for multi-select custom fields: new field for each option
This commit is contained in:
Nathan Gray 2010-11-09 17:38:51 +00:00
parent 99861c8774
commit a9d2259339
3 changed files with 220 additions and 5 deletions

View File

@ -8,7 +8,7 @@
* @link http://www.egroupware.org
* @author Cornelius Weiss <nelius@cwtech.de>
* @copyright Cornelius Weiss <nelius@cwtech.de>
* @version $Id: $
* @version $Id$
*/
/**
@ -23,6 +23,14 @@ class addressbook_export_contacts_csv implements importexport_iface_export_plugi
'select-cat' => array('cat_id'),
);
/**
* Constants used for exploding categories & multi-selectboxes into seperate fields
*/
const NO_EXPLODE = False;
const MAIN_CATS = 'main_cats'; // Only the top-level categories get their own field
const EACH_CAT = 'each_cat'; // Every category gets its own field
const EXPLODE = 'explode'; // For [custom] multi-selects, each option gets its own field
/**
* Exports records as defined in $_definition
*
@ -46,6 +54,92 @@ class addressbook_export_contacts_csv implements importexport_iface_export_plugi
$selection = explode(',',$options['selection']);
}
if($options['explode_multiselects']) {
$customfields = config::get_customfields('addressbook');
$additional_fields = array();
$cat_obj = new categories('', 'addressbook');
foreach($options['explode_multiselects'] as $field => $explode) {
switch($explode['explode']) {
case self::MAIN_CATS:
$cats = $cat_obj->return_array('mains', 0, false);
foreach($cats as $settings) {
$additional_fields[$field][$settings['id']] = array(
'count' => 0,
'label' => $settings['name'],
'subs' => array(),
);
$subs = $cat_obj->return_array('subs', 0, false, '', 'ASC','', True, $settings['id']);
foreach($subs as $sub) {
$additional_fields[$field][$settings['id']]['subs'][$sub['id']] = $sub['name'];
}
}
break;
case self::EACH_CAT:
$cats = $cat_obj->return_array('all', 0, false);
foreach($cats as $settings) {
$additional_fields[$field][$settings['id']] = array(
'count' => 0,
'label' => $settings['name']
);
}
break;
case self::EXPLODE:
// Only works for custom fields
$index = substr($field, 1);
foreach($customfields[$index]['values'] as $key => $value) {
$additional_fields[$field][$key] = array(
'count' => 0,
'label' => $customfields[$index]['label'] . ': ' . $value,
);
}
break;
}
}
// Check records to see if additional fields are acutally used
foreach ($selection as $identifier) {
$contact = new addressbook_egw_record($identifier);
foreach($additional_fields as $field => &$values) {
if(!$contact->$field) continue;
foreach($values as $value => &$settings) {
if(!is_array($contact->$field)) {
$contact->$field = explode(',', $contact->$field);
}
if(is_array($contact->$field) && in_array($value, $contact->$field)) {
$settings['count']++;
} elseif($contact->$field == $value) {
$settings['count']++;
}
}
}
}
unset($field);
unset($value);
unset($settings);
// Add additional columns
foreach($additional_fields as $field => $additional_values) {
// Remove original
unset($options['mapping'][$field]);
// Add exploded
$field_count = 0;
foreach($additional_values as $value => $settings) {
if($settings['count'] > 0) {
$field_count += $settings['count'];
$options['mapping'][$field.'-'.$value] = $settings['label'];
}
}
if($field_count > 0) {
// Set some options for converting
$options['explode_multiselects'][$field]['values'] = $additional_values;
} else {
// Don't need this anymore
unset($options['explode_multiselects'][$field]);
}
}
}
$export_object = new importexport_export_csv($_stream, (array)$options);
$export_object->set_mapping($options['mapping']);
@ -54,8 +148,8 @@ class addressbook_export_contacts_csv implements importexport_iface_export_plugi
foreach ($selection as $identifier) {
$contact = new addressbook_egw_record($identifier);
// Some conversion
$this->convert($contact, $options);
importexport_export_csv::convert($contact, self::$types, 'addressbook');
$this->convert($contact);
$export_object->export_record($contact);
unset($contact);
}
@ -115,11 +209,38 @@ class addressbook_export_contacts_csv implements importexport_iface_export_plugi
*
* Dates, times, user IDs, category IDs
*/
public static function convert(addressbook_egw_record &$record) {
public static function convert(addressbook_egw_record &$record, $options) {
if ($record->tel_prefer) {
$field = $record->tel_prefer;
$record->tel_prefer = $record->$field;
}
foreach((array)$options['explode_multiselects'] as $field => $explode_settings) {
if(!is_array($record->$field)) $record->$field = explode(',', $record->$field);
foreach($explode_settings['values'] as $value => $settings) {
$field_name = "$field-$value";
$record->$field_name = array();
if(is_array($record->$field) && in_array($value, $record->$field) || $record->$field == $value) {
if($explode_settings['explode'] != self::MAIN_CATS) {
$record->$field_name = lang('Yes');
} else {
// 3 part assign due to magic get method
$record_value = $record->$field_name;
$record_value[] = $settings['label'];
$record->$field_name = $record_value;
}
}
if($explode_settings['explode'] == self::MAIN_CATS && count(array_intersect($record->$field, array_keys($settings['subs'])))) {
// 3 part assign due to magic get method
$record_value = $record->$field_name;
foreach(array_intersect($record->$field, array_keys($settings['subs'])) as $sub_id) {
$record_value[] = $settings['subs'][$sub_id];
}
$record->$field_name = $record_value;
}
if(is_array($record->$field_name)) $record->$field_name = implode(', ', $record->$field_name);
}
}
}
}

View File

@ -13,6 +13,10 @@ class addressbook_wizard_export_contacts_csv extends importexport_wizard_basic_e
{
public function __construct() {
parent::__construct();
$this->steps['wizard_step50'] = lang('Choose export options');
$this->step_templates['wizard_step50'] = 'addressbook.export_explode_fields';
// Field mapping
$bocontacts = new addressbook_bo();
$this->export_fields = $bocontacts->contact_fields;
@ -21,4 +25,92 @@ class addressbook_wizard_export_contacts_csv extends importexport_wizard_basic_e
}
unset($this->export_fields['jpegphoto']); // can't cvs export that
}
/**
* Choose how to export multi-selects (includes categories)
*/
function wizard_step50(&$content, &$sel_options, &$readonlys, &$preserv)
{
if($this->debug) error_log(get_class($this) . '::wizard_step50->$content '.print_r($content,true));
// return from step50
if ($content['step'] == 'wizard_step50')
{
if($content['explode_multiselects']) {
$explodes = $content['explode_multiselects'];
$content['explode_multiselects'] = array();
foreach($explodes as $row => $settings) {
if($settings['explode'] != addressbook_export_contacts_csv::NO_EXPLODE) {
$content['explode_multiselects'][$settings['field']] = $settings;
}
}
}
switch (array_search('pressed', $content['button']))
{
case 'next':
return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1);
case 'previous' :
return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],-1);
case 'finish':
return 'wizard_finish';
default :
return $this->wizard_step50($content,$sel_options,$readonlys,$preserv);
}
}
// init step50
else
{
$content['msg'] = $this->steps['wizard_step50'];
$content['step'] = 'wizard_step50';
unset ($preserv['button']);
$field_list = array();
// Category gets special handling
if(in_array('cat_id', array_keys($content['mapping']))) {
$field_list['cat_id'] = $this->export_fields['cat_id'];
}
// Add any multi-select custom fields
$custom = config::get_customfields('addressbook');
foreach($custom as $name => $c_field) {
if($c_field['type'] = 'select' && $c_field['rows'] > 1 && in_array('#'.$name, array_keys($content['mapping']))) {
$field_list['#'.$name] = $c_field['label'];
}
}
$settings = $content['explode_multiselects'] ? $content['explode_multiselects'] : $content['plugin_options']['explode_multiselects'];
// Skip this step if no fields applicable
if(count($field_list) == 0) {
$content['explode_multiselects'] = array();
}
$cat_options = array(
addressbook_export_contacts_csv::NO_EXPLODE => lang('All in one field'),
addressbook_export_contacts_csv::MAIN_CATS => lang('Main categories in their own field'),
addressbook_export_contacts_csv::EACH_CAT => lang('Each category in its own field'),
);
$multi_options = array(
addressbook_export_contacts_csv::NO_EXPLODE => lang('All in one field'),
addressbook_export_contacts_csv::EXPLODE => lang('Each option in its own field'),
);
$row = 1;
foreach($field_list as $field => $name) {
$content['explode_multiselects'][$row] = array(
'field' => $field,
'name' => $name,
'explode'=> $settings[$field]
);
if($field == 'cat_id') {
$sel_options[$row] = $cat_options;
} else {
$sel_options[$row] = $multi_options;
}
$row++;
}
$preserv = $content;
//_debug_array($content['explode_multiselects']);
return $this->step_templates[$content['step']];
}
}
}

View File

@ -2,7 +2,7 @@
/**
* eGroupWare - eTemplates for Application addressbook
* http://www.egroupware.org
* generated by soetemplate::dump4setup() 2010-10-12 16:05
* generated by soetemplate::dump4setup() 2010-11-09 10:33
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package addressbook
@ -64,10 +64,12 @@ $templ_data[] = array('name' => 'addressbook.email.left','template' => '','lang'
$templ_data[] = array('name' => 'addressbook.email.rows','template' => '','lang' => '','group' => '0','version' => '1.7.004','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:5:{s:2:"c1";s:2:"th";s:2:"c2";s:7:"row,top";s:1:"C";s:17:",!@order=n_family";s:1:"B";s:16:",!@order=n_given";s:1:"E";s:32:",!@order=/^(org_name|n_fileas)$/";}i:1;a:8:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:7:"n_given";s:5:"label";s:9:"Firstname";}i:2;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Name";s:4:"name";s:8:"n_family";}}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Name";s:4:"name";s:8:"n_family";}i:2;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:7:"n_given";s:5:"label";s:9:"Firstname";}}s:1:"D";a:3:{s:4:"name";s:8:"org_name";s:5:"label";s:7:"Company";s:4:"type";s:20:"nextmatch-sortheader";}s:1:"E";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Name";s:4:"name";s:8:"n_family";}i:2;a:4:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:7:"n_given";s:5:"label";s:9:"Firstname";s:4:"span";s:9:",leftPad5";}}s:1:"F";a:3:{s:4:"type";s:5:"label";s:5:"label";s:14:"Business email";s:4:"name";s:5:"email";}s:1:"G";a:3:{s:4:"type";s:5:"label";s:4:"name";s:10:"email_home";s:5:"label";s:10:"Home email";}s:1:"H";a:6:{s:4:"type";s:4:"hbox";s:5:"align";s:6:"center";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:5:"label";s:5:"label";s:7:"Actions";s:5:"align";s:6:"center";}i:2;a:8:{s:4:"type";s:6:"button";s:4:"size";s:5:"check";s:5:"label";s:9:"Check all";s:4:"name";s:9:"check_all";s:4:"help";s:9:"Check all";s:7:"onclick";s:60:"toggle_all(this.form,form::name(\'checked[]\')); return false;";s:6:"needed";s:1:"1";s:5:"align";s:5:"right";}s:4:"span";s:8:",noPrint";}}i:2;a:8:{s:1:"A";a:5:{s:4:"type";s:5:"image";s:5:"label";s:21:"$row_cont[type_label]";s:4:"name";s:12:"${row}[type]";s:5:"align";s:6:"center";s:7:"no_lang";s:1:"1";}s:1:"B";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:4:{s:4:"type";s:5:"label";s:4:"name";s:15:"${row}[n_given]";s:5:"label";s:1:" ";s:7:"no_lang";s:1:"1";}i:2;a:4:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[n_family]";s:4:"span";s:9:",leftPad5";}}s:1:"C";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:7:"2,0,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[n_family]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"name";s:15:"${row}[n_given]";s:4:"span";s:9:",leftPad5";s:5:"label";s:1:" ";s:7:"no_lang";s:1:"1";}}s:1:"D";a:3:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[org_name]";s:7:"no_lang";s:1:"1";}s:1:"E";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:16:"${row}[n_family]";}i:2;a:5:{s:4:"type";s:5:"label";s:4:"name";s:15:"${row}[n_given]";s:4:"span";s:9:",leftPad5";s:5:"label";s:1:" ";s:7:"no_lang";s:1:"1";}}s:1:"F";a:5:{s:4:"type";s:3:"box";s:4:"size";s:6:"1,,0,0";s:7:"no_lang";s:1:"1";s:4:"span";s:9:",emailCol";i:1;a:4:{s:4:"type";s:5:"label";s:4:"size";s:86:",javascript:addEmail(\'$row_cont[n_fn] &lt;$row_cont[email]&gt;\');,,,,,$row_cont[email]";s:4:"name";s:13:"${row}[email]";s:7:"no_lang";s:1:"1";}}s:1:"G";a:5:{s:4:"type";s:3:"box";s:4:"size";s:6:"1,,0,0";s:7:"no_lang";s:1:"1";s:4:"span";s:9:",emailCol";i:1;a:4:{s:4:"type";s:5:"label";s:4:"size";s:96:",javascript:addEmail(\'$row_cont[n_fn] &lt;$row_cont[email_home]&gt;\');,,,,,$row_cont[email_home]";s:4:"name";s:18:"${row}[email_home]";s:7:"no_lang";s:1:"1";}}s:1:"H";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:5:"3,0,0";i:1;a:5:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:4:"Edit";s:7:"onclick";s:193:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit&contact_id=$row_cont[id]\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";s:4:"name";s:19:"edit[$row_cont[id]]";}i:2;a:6:{s:4:"type";s:6:"button";s:4:"name";s:21:"delete[$row_cont[id]]";s:4:"size";s:6:"delete";s:5:"label";s:6:"Delete";s:4:"help";s:19:"Delete this contact";s:7:"onclick";s:38:"return confirm(\'Delete this contact\');";}i:3;a:5:{s:4:"type";s:8:"checkbox";s:4:"name";s:9:"checked[]";s:4:"size";s:13:"$row_cont[id]";s:4:"help";s:45:"Select multiple contacts for a further action";s:5:"align";s:5:"right";}s:4:"span";s:8:",noPrint";}}}s:4:"rows";i:2;s:4:"cols";i:8;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1264155025',);
$templ_data[] = array('name' => 'addressbook.export_csv_options','template' => '','lang' => '','group' => '0','version' => '','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:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:9:"Seperator";}s:1:"B";a:3:{s:4:"type";s:4:"text";s:4:"size";s:1:"1";s:4:"name";s:9:"seperator";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:9:"Enclosure";}s:1:"B";a:3:{s:4:"type";s:4:"text";s:4:"size";s:1:"1";s:4:"name";s:9:"enclosure";}}}s:4:"rows";i:2;s:4:"cols";i:2;}}','size' => '','style' => '','modified' => '1160148382',);
$templ_data[] = array('name' => 'addressbook.export_csv_options','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:1:{s:1:"B";s:5:"180px";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:5:"label";s:7:"no_lang";s:1:"1";s:4:"name";s:3:"msg";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:14:"Fieldseperator";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:7:"no_lang";s:1:"1";s:4:"name";s:9:"delimiter";s:4:"size";s:1:"1";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:14:"Include header";}s:1:"B";a:2:{s:4:"type";s:11:"select-bool";s:4:"name";s:21:"begin_with_fieldnames";}}}s:4:"rows";i:3;s:4:"cols";i:2;}}','size' => '','style' => '.width180 select { width:150px;}','modified' => '1286490285',);
$templ_data[] = array('name' => 'addressbook.export_csv_selectors','template' => '','lang' => '','group' => '0','version' => '','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:4:{s:4:"type";s:5:"radio";s:5:"label";s:7:"Use all";s:4:"size";s:12:"all_contacts";s:4:"name";s:9:"selection";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:5:"radio";s:5:"label";s:18:"Use search results";s:4:"name";s:9:"selection";s:4:"size";s:7:"use_all";}}}s:4:"rows";i:2;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1268429802',);
$templ_data[] = array('name' => 'addressbook.export_explode_fields','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:2:{s:2:"h2";s:23:",!@explode_multiselects";s:2:"h3";s:22:",@explode_multiselects";}i:1;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:24:"List as seperate columns";}}i:2;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:4:"100%";s:4:"name";s:20:"explode_multiselects";s:4:"data";a:3:{i:0;a:1:{s:2:"c1";s:2:"th";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Field";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Style";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[name]";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:15:"${row}[explode]";}}}s:4:"rows";i:2;s:4:"cols";i:2;s:7:"options";a:1:{i:0;s:4:"100%";}}}i:3;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:43:"No multi-select columns selected for export";}}}s:4:"rows";i:3;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1289253873',);
$templ_data[] = array('name' => 'addressbook.importexport_wizard_chooseowner','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:6:{i:0;a:1:{s:2:"h2";s:14:",@no_owner_map";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"name";s:3:"msg";s:7:"no_lang";s:1:"1";}}i:2;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:30:"Use field from CSV if possible";s:4:"name";s:14:"owner_from_csv";}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:6:"select";s:4:"name";s:13:"contact_owner";s:4:"size";s:4:"None";}}i:4;a:1:{s:1:"A";a:1:{s:4:"type";s:5:"label";}}i:5;a:1:{s:1:"A";a:3:{s:4:"type";s:11:"select-bool";s:5:"label";s:32:"Change addressbook when updating";s:4:"name";s:12:"change_owner";}}}s:4:"rows";i:5;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1268327427',);
$templ_data[] = array('name' => 'addressbook.index','template' => '','lang' => '','group' => '0','version' => '1.7.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:5:{i:0;a:3:{s:2:"h1";s:6:",!@msg";s:2:"h2";s:2:",1";s:2:"c4";s:7:"noPrint";}i:1;a:2:{s:1:"A";a:5:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:5:"align";s:6:"center";s:4:"name";s:3:"msg";s:7:"no_lang";s:1:"1";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:8:"template";s:4:"name";s:22:"addressbook.index.left";}s:1:"B";a:3:{s:4:"type";s:8:"template";s:5:"align";s:5:"right";s:4:"name";s:27:"addressbook.index.right_add";}}i:3;a:2:{s:1:"A";a:4:{s:4:"type";s:9:"nextmatch";s:4:"size";s:22:"addressbook.index.rows";s:4:"name";s:2:"nm";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:4;a:2:{s:1:"A";a:5:{s:4:"type";s:6:"button";s:4:"name";s:3:"add";s:5:"label";s:3:"Add";s:4:"help";s:17:"Add a new contact";s:7:"onclick";s:168:"window.open(egw::link(\'/index.php\',\'menuaction=addressbook.addressbook_ui.edit\'),\'_blank\',\'dependent=yes,width=850,height=440,scrollbars=yes,status=yes\'); return false;";}s:1:"B";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";s:5:"align";s:5:"right";i:1;a:5:{s:4:"type";s:8:"checkbox";s:4:"name";s:7:"use_all";s:5:"label";s:11:"whole query";s:8:"onchange";s:126:"if (this.checked==true && !confirm(\'Apply the action on the whole query, NOT only the shown contacts!!!\')) this.checked=false;";s:4:"help";s:67:"Apply the action on the whole query, NOT only the shown contacts!!!";}i:2;a:6:{s:4:"type";s:6:"select";s:8:"onchange";s:16:"do_action(this);";s:4:"size";s:45:"Select an action or addressbook to move to...";s:7:"no_lang";s:1:"1";s:4:"name";s:6:"action";s:4:"help";s:42:"Select an action or addressbook to move to";}i:3;a:8:{s:4:"type";s:6:"button";s:4:"size";s:9:"arrow_ltr";s:5:"label";s:9:"Check all";s:4:"name";s:9:"check_all";s:4:"help";s:9:"Check all";s:7:"onclick";s:70:"toggle_all(this.form,form::name(\'nm[rows][checked][]\')); return false;";s:6:"needed";s:1:"1";s:4:"span";s:14:",checkAllArrow";}}}}s:4:"rows";i:4;s:4:"cols";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1243585623',);