InfoLog view for organisations or multiple contacts

This commit is contained in:
Ralf Becker 2006-10-23 11:48:56 +00:00
parent c02a67c9af
commit 3ae17a35cf
7 changed files with 149 additions and 51 deletions

View File

@ -243,7 +243,7 @@ class bocontacts extends socontacts
$contact['n_fn'],$contact['org_name'],$contact['org_unit'],$contact['adr_one_locality']),$type);
// removing empty delimiters, caused by empty contact fields
$fileas = str_replace(array(', : ',': , ',', , ',': : '),array(': ',': ',', ',': '),$fileas);
$fileas = str_replace(array(', , : ',', : ',': , ',', , ',': : '),array(': ',': ',': ',', ',': '),$fileas);
while ($fileas{0} == ':' || $fileas{0} == ',') $fileas = substr($fileas,2);
while (substr($fileas,-2) == ': ' || substr($fileas,-2) == ', ') $fileas = substr($fileas,0,-2);

View File

@ -112,6 +112,11 @@ class uicontacts extends bocontacts
}
}
}
if ($content['nm']['rows']['infolog'])
{
list($org) = each($content['nm']['rows']['infolog']);
return $this->infolog_org_view($org);
}
if ($content['nm']['rows']['view']) // show all contacts of an organisation
{
list($org_view) = each($content['nm']['rows']['view']);
@ -185,6 +190,10 @@ class uicontacts extends bocontacts
// 'export' => lang('Export selection'),
// ToDo: 'copy' => lang('Copy a contact and edit the copy'),
);
if ($GLOBALS['egw_info']['user']['apps']['infolog'])
{
$sel_options['action']['infolog'] = lang('View linked InfoLog entries');
}
if ($do_email)
{
$sel_options['action']['email'] = lang('Add %1',lang('business email'));
@ -275,6 +284,40 @@ class uicontacts extends bocontacts
return $this->index($content,$msg,true);
}
/**
* Show the infologs of an whole organisation
*
* @param string $org
*/
function infolog_org_view($org)
{
$query = $GLOBALS['egw']->session->appsession('index','addressbook');
$query['num_rows'] = -1; // all
$query['org_view'] = $org;
$this->get_rows($query,$checked,$readonlys,true); // true = only return the id's
if (count($checked) > 1) // use a nicely formatted org-name as title in infolog
{
$parts = array();
foreach(explode('|||',$org) as $part)
{
list(,$part) = explode(':',$part,2);
if ($part) $parts[] = $part;
}
$org = implode(', ',$parts);
}
else
{
$org = ''; // use infolog default of link-title
}
$GLOBALS['egw']->redirect_link('/index.php',array(
'menuaction' => 'infolog.uiinfolog.index',
'action' => 'addressbook',
'action_id' => implode(',',$checked),
'action_title' => $org,
));
}
/**
* apply an action to multiple contacts
*
@ -304,6 +347,10 @@ class uicontacts extends bocontacts
{
if (substr($id,0,9) == 'org_name:')
{
if (count($checked) == 1)
{
return $this->infolog_org_view($id); // uses the org-name, instead of 'selected contacts'
}
unset($checked[$n]);
$query = $GLOBALS['egw']->session->appsession('index','addressbook');
$query['num_rows'] = -1; // all
@ -347,6 +394,15 @@ class uicontacts extends bocontacts
// does not return!
$Ok = false;
break;
case 'infolog':
$GLOBALS['egw']->redirect_link('/index.php',array(
'menuaction' => 'infolog.uiinfolog.index',
'action' => 'addressbook',
'action_id' => implode(',',$checked),
'action_title' => count($checked) > 1 ? lang('selected contacts') : '',
));
break;
}
foreach($checked as $id)
{
@ -428,7 +484,7 @@ class uicontacts extends bocontacts
* @param array &$query
* @param array &$rows returned rows/cups
* @param array &$readonlys eg. to disable buttons based on acl
* @param boolena $id_only=false if true only return (via $rows) an array of contact-ids, dont save state to session
* @param boolean $id_only=false if true only return (via $rows) an array of contact-ids, dont save state to session
* @return int total number of contacts matching the selection
*/
function get_rows(&$query,&$rows,&$readonlys,$id_only=false)
@ -596,6 +652,7 @@ class uicontacts extends bocontacts
$row['type_label'] = lang('Organisation');
$readonlys["delete[$row[id]]"] = $query['filter'] && !($this->grants[(int)$query['filter']] & EGW_ACL_DELETE);
$readonlys["infolog[$row[id]]"] = !$GLOBALS['egw_info']['user']['apps']['infolog'];
}
else
{
@ -934,9 +991,12 @@ class uicontacts extends bocontacts
lang('Copied by %1, from record #%2.',$GLOBALS['egw']->common->display_fullname('',
$GLOBALS['egw_info']['user']['account_firstname'],$GLOBALS['egw_info']['user']['account_lastname']),
$content['id']));
unset($content['id']);
// create a new contact with the content of the old
foreach(array('id','modified','modifier') as $key) unset($content[$key]);
$content['owner'] = $this->prefs['add_default'];
$content['creator'] = $this->user;
$content['created'] = $this->now_su;
$content['msg'] = lang('Contact copied');
}
else
{
@ -945,7 +1005,7 @@ class uicontacts extends bocontacts
}
$content['disable_change_org'] = $view || !$content['org_name'];
//_debug_array($content);
$readonlys['button[delete]'] = !$this->check_perms(EGW_ACL_DELETE,$content);
$readonlys['button[delete]'] = !$content['owner'] || !$this->check_perms(EGW_ACL_DELETE,$content);
$readonlys['button[copy]'] = $readonlys['button[edit]'] = $readonlys['button[vcard]'] = true;
$sel_options['fileas_type'] = $this->fileas_options($content);
@ -1109,7 +1169,7 @@ class uicontacts extends bocontacts
);
$readonlys['link_to'] = $readonlys['customfields'] = $readonlys['fileas_type'] = true;
$readonlys['button[save]'] = $readonlys['button[apply]'] = $readonlys['change_photo'] = true;
$readonlys['button[delete]'] = !$this->check_perms(EGW_ACL_DELETE,$content);
$readonlys['button[delete]'] = !$content['owner'] || !$this->check_perms(EGW_ACL_DELETE,$content);
$readonlys['button[edit]'] = !$this->check_perms(EGW_ACL_EDIT,$content);
// ToDo: fix vCard export
$readonlys['button[vcard]'] = true;

File diff suppressed because one or more lines are too long

View File

@ -68,6 +68,7 @@ company name addressbook de Firmenname
configuration common de Konfiguration
contact common de Kontakt
contact application admin de Kontakt Anwendung
contact copied addressbook de Kontakt kopiert
contact deleted addressbook de Kontakt gelöscht
contact id addressbook de Kontakt ID
contact repository admin de Speicherort Kontakte
@ -235,9 +236,11 @@ select phone number as prefered way of contact addressbook de Telefonnummer als
select the type of conversion addressbook de Typ der Umwandlung auswählen
select the type of conversion: addressbook de Typ der Umwandlung auswählen:
select where you want to store / retrieve contacts admin de Auswählen wo Sie Adressen speichern wollen
selected contacts addressbook de ausgewählte Kontakte
show addressbook de Anzeigen
show a column for %1 addressbook de Zeige eine %1 Spalte
show birthday reminders on main screen addressbook de Geburtstagserinnerungen auf der Startseite anzeigen
show infolog entries for this organisation addressbook de InfoLog Einträge dieser Organisation anzeigen
show the contacts of this organisation addressbook de Kontakte dieser Organisation anzeigen
size of popup (wxh, eg.400x300, if a popup should be used) admin de Größe des Popup (WxH, zB. 400x300, falls ein Popup verwendet werden soll)
start admin de Starten
@ -267,6 +270,7 @@ used for links and for the own sorting of the list addressbook de wird f
vcard common de VCard
vcards require a first name entry. addressbook de VCards benötigen einen Vornamen.
vcards require a last name entry. addressbook de VCards benötigen einen Nachnamen.
view linked infolog entries addressbook de Verknüpfte InfoLog Einträge anzeigen
warning!! ldap is valid only if you are not using contacts for accounts storage! admin de WARNUNG!! LDAP darf nur verwendet werden, wenn sie die Benutzerkonten nicht im Adressbuch speichern!
warning: all contacts found will be deleted! addressbook de WARNUNG: Alle gefundenen Kontakte werden gelöscht!
what should links to the addressbook display in other applications. empty values will be left out. you need to log in anew, if you change this setting! addressbook de Was sollen Verknüpfungen zum Adressbuch in anderen Anwendungen anzeigen. Leere Werte werden ausgelassen. Sie müssen sich neu anmelden, wenn Sie hier eine Änderung vornehmen!

View File

@ -68,6 +68,7 @@ company name addressbook en company name
configuration common en Configuration
contact common en Contact
contact application admin en Contact application
contact copied addressbook en Contact copied
contact deleted addressbook en Contact deleted
contact id addressbook en Contact ID
contact repository admin en Contact repository
@ -235,9 +236,11 @@ select phone number as prefered way of contact addressbook en select phone numbe
select the type of conversion addressbook en Select the type of conversion
select the type of conversion: addressbook en Select the type of conversion:
select where you want to store / retrieve contacts admin en Select where you want to store / retrieve contacts
selected contacts addressbook en selected contacts
show addressbook en Show
show a column for %1 addressbook en Show a column for %1
show birthday reminders on main screen addressbook en Show birthday reminders on main screen
show infolog entries for this organisation addressbook en Show InfoLog entries for this organisation
show the contacts of this organisation addressbook en Show the contacts of this organisation
size of popup (wxh, eg.400x300, if a popup should be used) admin en Size of popup (WxH, eg.400x300, if a popup should be used)
start admin en Start
@ -267,6 +270,7 @@ used for links and for the own sorting of the list addressbook en used for links
vcard common en VCard
vcards require a first name entry. addressbook en VCards require a first name entry.
vcards require a last name entry. addressbook en Vcards require a last name entry.
view linked infolog entries addressbook en View linked InfoLog entries
warning!! ldap is valid only if you are not using contacts for accounts storage! admin en WARNING!! LDAP is valid only if you are NOT using contacts for accounts storage!
warning: all contacts found will be deleted! addressbook en WARNING: All contacts found will be deleted!
what should links to the addressbook display in other applications. empty values will be left out. you need to log in anew, if you change this setting! addressbook en What should links to the addressbook display in other applications. Empty values will be left out. You need to log in anew, if you change this setting!

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,72 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<template id="addressbook.index.org_rows" template="" lang="" group="0" version="1.3.002">
<grid width="100%">
<columns>
<column/>
<column/>
<column/>
<column/>
<column/>
<column disabled="@no_customfields"/>
<column width="90"/>
</columns>
<rows>
<row class="th">
<description/>
<description value="#" align="center"/>
<nextmatch-sortheader id="org_name" label="Organisation"/>
<description value="department"/>
<description value="Business address"/>
<grid spacing="0" padding="0">
<columns>
<column/>
</columns>
<rows>
<row>
<description no_lang="1" id="customfields[$row][label]"/>
</row>
</rows>
</grid>
<hbox align="center" class="noPrint">
<description value="Actions" align="center"/>
<button image="check" label="Check all" id="check_all" statustext="Check all" onclick="toggle_all(this.form,form::name('checked[]')); return false;" needed="1" align="right"/>
</hbox>
</row>
<row class="row" valign="top">
<image label="$row_cont[type_label]" src="${row}[type]" align="center" no_lang="1"/>
<int id="${row}[org_count]" readonly="true" align="center"/>
<description id="${row}[org_name]" no_lang="1"/>
<description id="${row}[org_unit]" no_lang="1"/>
<vbox options="0,0">
<description id="${row}[adr_one_countryname]" no_lang="1"/>
<hbox options="0,0" orient="0">
<description no_lang="1" id="${row}[adr_one_locality]"/>
<description id="${row}[adr_one_postalcode]" class="leftPad5" value=" " no_lang="1"/>
</hbox>
<description no_lang="1" id="${row}[adr_one_street]"/>
<description id="${row}[adr_one_street2]" no_lang="1"/>
</vbox>
<grid height="60" spacing="0" padding="0" overflow="auto">
<columns>
<column/>
</columns>
<rows>
<row>
<description class="fixedHeight" id="$row" no_lang="1"/>
</row>
</rows>
</grid>
<hbox options="0" class="noPrint" orient="0">
<button image="view" label="View" id="view[$row_cont[id]]" statustext="Show the contacts of this organisation"/>
<button image="new" label="Add" onclick="window.open(egw::link('/index.php','menuaction=addressbook.uicontacts.edit&amp;org=$row_cont[id]'),'_blank','dependent=yes,width=850,height=440,scrollbars=yes,status=yes'); return false;" id="add[$row_cont[id]]" statustext="Add a contact to this organisation"/>
<button id="delete[$row_cont[id]]" image="delete" label="Delete" statustext="Delete this organisation including ALL its contacts" onclick="return confirm('Delete this organisation including ALL its contacts');"/>
<button image="infolog" label="InfoLog" id="infolog[$row_cont[id]]" statustext="Show InfoLog entries for this organisation"/>
<checkbox id="checked[]" options="$row_cont[id]" statustext="Select multiple contacts for a further action" align="right"/>
</hbox>
</row>
</rows>
</grid>
</template>
</overlay>