merge from trunk(revision 23912:23925) to 1.4 branch

This commit is contained in:
Lars Kneschke 2007-05-23 21:39:52 +00:00
parent fa7b6e5504
commit 3ce7f3de4d
27 changed files with 323 additions and 329 deletions

View File

@ -850,13 +850,13 @@ class so_ldap
$bin = ldap_get_values_len($this->ds,ldap_first_entry($this->ds,$result),'jpegphoto'); $bin = ldap_get_values_len($this->ds,ldap_first_entry($this->ds,$result),'jpegphoto');
$contact['jpegphoto'] = $bin[0]; $contact['jpegphoto'] = $bin[0];
} }
if(preg_match('/cn=([^,]+),'.preg_quote($this->personalContactsDN).'$/i',$entry['dn'],$matches)) if(preg_match('/cn=([^,]+),'.preg_quote($this->personalContactsDN,'/').'$/i',$entry['dn'],$matches))
{ {
// personal addressbook // personal addressbook
$contact['owner'] = $GLOBALS['egw']->accounts->name2id($matches[1],'account_lid','u'); $contact['owner'] = $GLOBALS['egw']->accounts->name2id($matches[1],'account_lid','u');
$contact['private'] = 1; $contact['private'] = 1;
} }
elseif(preg_match('/cn=([^,]+),'.preg_quote($this->sharedContactsDN).'$/i',$entry['dn'],$matches)) elseif(preg_match('/cn=([^,]+),'.preg_quote($this->sharedContactsDN,'/').'$/i',$entry['dn'],$matches))
{ {
// group addressbook // group addressbook
$contact['owner'] = $GLOBALS['egw']->accounts->name2id($matches[1],'account_lid','g'); $contact['owner'] = $GLOBALS['egw']->accounts->name2id($matches[1],'account_lid','g');
@ -1062,10 +1062,10 @@ class so_ldap
} }
else else
{ {
$parts = preg_split('/'. preg_quote($data['givenname'][0]) .'.*'. preg_quote($data['sn'][0]) .'/', $data['cn'][0]); $parts = preg_split('/'. preg_quote($data['givenname'][0],'/') .'.*'. preg_quote($data['sn'][0],'/') .'/', $data['cn'][0]);
$contact['n_prefix'] = trim($parts[0]); $contact['n_prefix'] = trim($parts[0]);
$contact['n_suffix'] = trim($parts[1]); $contact['n_suffix'] = trim($parts[1]);
if(preg_match('/'. preg_quote($data['givenname'][0]) .' (.*) '. preg_quote($data['sn'][0]) .'/',$data['cn'][0], $matches)) if(preg_match('/'. preg_quote($data['givenname'][0],'/') .' (.*) '. preg_quote($data['sn'][0],'/') .'/',$data['cn'][0], $matches))
{ {
$contact['n_middle'] = $matches[1]; $contact['n_middle'] = $matches[1];
} }

View File

@ -41,6 +41,11 @@ class uicontacts extends bocontacts
var $private_addressbook = false; var $private_addressbook = false;
var $org_views; var $org_views;
/**
* Addressbook configuration (stored as phpgwapi = general server config)
*
* @var array
*/
var $config; var $config;
/** /**
* Name(s) of the tabs in the edit dialog * Name(s) of the tabs in the edit dialog
@ -345,6 +350,7 @@ class uicontacts extends bocontacts
$query = $GLOBALS['egw']->session->appsession('index','addressbook'); $query = $GLOBALS['egw']->session->appsession('index','addressbook');
$query['num_rows'] = -1; // all $query['num_rows'] = -1; // all
$query['org_view'] = $org; $query['org_view'] = $org;
$query['searchletter'] = '';
$this->get_rows($query,$checked,$readonlys,true); // true = only return the id's $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 if (count($checked) > 1) // use a nicely formatted org-name as title in infolog
@ -393,6 +399,7 @@ class uicontacts extends bocontacts
if ($use_all) if ($use_all)
{ {
@set_time_limit(0); // switch off the execution time limit, as it's for big selections to small
$query['num_rows'] = -1; // all $query['num_rows'] = -1; // all
$this->get_rows($query,$checked,$readonlys,true); // true = only return the id's $this->get_rows($query,$checked,$readonlys,true); // true = only return the id's
} }
@ -424,6 +431,14 @@ class uicontacts extends bocontacts
$to_list = (int)substr($action,8); $to_list = (int)substr($action,8);
$action = 'to_list'; $action = 'to_list';
} }
// Security: stop non-admins to export more then the configured number of contacts
if (in_array($action,array('csv','vcard')) && (int)$this->config['contact_export_limit'] &&
!isset($GLOBALS['egw_info']['user']['apps']['admin']) && count($checked) > $this->config['contact_export_limit'])
{
$action_msg = lang('exported');
$failed = count($checked);
return false;
}
switch($action) switch($action)
{ {
case 'csv': case 'csv':
@ -766,7 +781,7 @@ class uicontacts extends bocontacts
$wildcard = $query['advanced_search']['meth_select']; $wildcard = $query['advanced_search']['meth_select'];
unset($query['advanced_search']['meth_select']); unset($query['advanced_search']['meth_select']);
} }
$rows = parent::search($query['advanced_search'] ? $query['advanced_search'] : $query['search'],false, $rows = parent::search($query['advanced_search'] ? $query['advanced_search'] : $query['search'],$id_only,
$order,'',$wildcard,false,$op,array((int)$query['start'],(int) $query['num_rows']),$query['col_filter']); $order,'',$wildcard,false,$op,array((int)$query['start'],(int) $query['num_rows']),$query['col_filter']);
// do we need the custom fields // do we need the custom fields
@ -1582,7 +1597,9 @@ $readonlys['button[vcard]'] = true;
} }
/** /**
* returns link to call the given phonenumer * returns link to call the given phonenumber
*
* replaces '%1' with the phonenumber to call, '%u' with the user's account_lid and '%t' with his work-phone-number
* *
* @param string $number phone number * @param string $number phone number
* @param string &$link returns the link * @param string &$link returns the link
@ -1592,7 +1609,14 @@ $readonlys['button[vcard]'] = true;
{ {
if (!$number || !$this->config['call_link']) return false; if (!$number || !$this->config['call_link']) return false;
$link = str_replace('%1',urlencode($number),$this->config['call_link']); static $userphone;
if (is_null($userphone))
{
$user = $this->read('account_id:'.$GLOBALS['egw_info']['user']['account_id']);
$userphone = is_array($user) ? ($user['tel_work'] ? $user['tel_work'] : $user['tel_home']) : false;
}
$link = str_replace(array('%1','%u','%t'),array(urlencode($number),$GLOBALS['egw_info']['user']['account_lid'],$userphone),
$this->config['call_link']);
} }
function js() function js()

View File

@ -14,7 +14,7 @@ actions addressbook de Befehle
add %1 addressbook de %1 hinzufügen add %1 addressbook de %1 hinzufügen
add a contact to this organisation addressbook de Einen Kontakt zu dieser Organisation hinzufügen add a contact to this organisation addressbook de Einen Kontakt zu dieser Organisation hinzufügen
add a new contact addressbook de Neuen Kontakt anlegen add a new contact addressbook de Neuen Kontakt anlegen
add a new list addressbook de Neuen Verteiler hinzfügen add a new list addressbook de Neuen Verteiler hinzufügen
add a single entry by passing the fields. addressbook de Hinzufügen eines einzelnen Eintrags durch Übergeben der Felder. add a single entry by passing the fields. addressbook de Hinzufügen eines einzelnen Eintrags durch Übergeben der Felder.
add custom field addressbook de Benutzerdefiniertes Feld hinzufügen add custom field addressbook de Benutzerdefiniertes Feld hinzufügen
add to distribution list: addressbook de Hinzufügen zu Verteiler: add to distribution list: addressbook de Hinzufügen zu Verteiler:
@ -167,6 +167,7 @@ home phone addressbook de Tel. privat
home state addressbook de Bundesland privat home state addressbook de Bundesland privat
home street addressbook de Straße privat home street addressbook de Straße privat
home zip code addressbook de PLZ privat home zip code addressbook de PLZ privat
how many contacts should non-admins be able to export (empty = no limit) admin de Wieviele Kontakte sollen nicht-Adminstratoren exportieren können (leer = keine Begrenzung)
icon addressbook de Icon icon addressbook de Icon
if accounts are already in ldap admin de wenn die Benutzer bereits im LDAP sind if accounts are already in ldap admin de wenn die Benutzer bereits im LDAP sind
import addressbook de Import import addressbook de Import
@ -289,7 +290,7 @@ translation addressbook de
type addressbook de Typ type addressbook de Typ
update a single entry by passing the fields. addressbook de Aktualisiert einen einzelnen Eintrag durch Übergabe seiner Felder. update a single entry by passing the fields. addressbook de Aktualisiert einen einzelnen Eintrag durch Übergabe seiner Felder.
upload or delete the photo addressbook de Foto hochladen oder löschen upload or delete the photo addressbook de Foto hochladen oder löschen
url to link telephone numbers to (use %1 for the number) admin de URL mit denen Telefonnummern verlinkt werden sollen (%1 für die Nummber verwenden) url to link telephone numbers to (use %1 = number to call, %u = account name, %t = account phone) admin de URL mit denen Telefonnummern verlinkt werden sollen (verwenden Sie %1 = anzurufende Nummer, %u = Benutzernamen, %t = Telefon des Benutzers)
use an extra category tab? addressbook de Separaten Reiter für Kategorien verwenden? use an extra category tab? addressbook de Separaten Reiter für Kategorien verwenden?
use country list addressbook de Länderliste benutzen use country list addressbook de Länderliste benutzen
use setup for a full account-migration admin de für eine komplette Benutzer Migration setup verwenden use setup for a full account-migration admin de für eine komplette Benutzer Migration setup verwenden
@ -302,7 +303,7 @@ warning!! ldap is valid only if you are not using contacts for accounts storage!
warning: all contacts found will be deleted! addressbook de WARNUNG: Alle gefundenen Kontakte werden gelöscht! 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! 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!
which address format should the addressbook use for countries it does not know the address format. if the address format of a country is known, it uses it independent of this setting. addressbook de Welches Format soll das Adressbuch für Adressen verwenden deren landesübliches Adressformat unbekannt ist. Wenn das Adressformat eines Landes dem Adressbuch bekannt ist, wird das unabhänig von dieser Einstellung benutzt. which address format should the addressbook use for countries it does not know the address format. if the address format of a country is known, it uses it independent of this setting. addressbook de Welches Format soll das Adressbuch für Adressen verwenden deren landesübliches Adressformat unbekannt ist. Wenn das Adressformat eines Landes dem Adressbuch bekannt ist, wird das unabhänig von dieser Einstellung benutzt.
which addressbook should be selected when adding a contact and you have no add rights to the current addressbook. addressbook de Welches Adressbuch soll ausgewählt sein beim Hinzfügen von Kontakten, wenn Sie keine Hinzufügen Rechte zum aktuellen Adressbuch haben. which addressbook should be selected when adding a contact and you have no add rights to the current addressbook. addressbook de Welches Adressbuch soll ausgewählt sein beim Hinzufügen von Kontakten, wenn Sie keine Hinzufügen Rechte zum aktuellen Adressbuch haben.
which charset should be used for the csv export. the system default is the charset of this egroupware installation. addressbook de Welcher Zeichensatz soll für den CSV Export verwendet werden. Die systemweite Vorgabe ist der Zeichensatz der eGroupWare Installation. which charset should be used for the csv export. the system default is the charset of this egroupware installation. addressbook de Welcher Zeichensatz soll für den CSV Export verwendet werden. Die systemweite Vorgabe ist der Zeichensatz der eGroupWare Installation.
which fields should be exported. all means every field stored in the addressbook incl. the custom fields. the business or home address only contains name, company and the selected address. addressbook de Welche Felder sollen exportiert werden. Alle bedeutet jedes Feld das im Adressbuch gespeichert ist einschl. der benutzerdefinierten Felder. Die Geschäfts- oder Privatadresse enthält nur Name, Firma und die ausgewählte Adresse. which fields should be exported. all means every field stored in the addressbook incl. the custom fields. the business or home address only contains name, company and the selected address. addressbook de Welche Felder sollen exportiert werden. Alle bedeutet jedes Feld das im Adressbuch gespeichert ist einschl. der benutzerdefinierten Felder. Die Geschäfts- oder Privatadresse enthält nur Name, Firma und die ausgewählte Adresse.
whole query addressbook de gesamte Abfrage whole query addressbook de gesamte Abfrage

View File

@ -167,6 +167,7 @@ home phone addressbook en Home Phone
home state addressbook en Home State home state addressbook en Home State
home street addressbook en Home Street home street addressbook en Home Street
home zip code addressbook en Home ZIP Code home zip code addressbook en Home ZIP Code
how many contacts should non-admins be able to export (empty = no limit) admin en How many contacts should non-admins be able to export (empty = no limit)
icon addressbook en Icon icon addressbook en Icon
if accounts are already in ldap admin en if accounts are already in LDAP if accounts are already in ldap admin en if accounts are already in LDAP
import addressbook en Import import addressbook en Import
@ -289,7 +290,7 @@ translation addressbook en Translation
type addressbook en Type type addressbook en Type
update a single entry by passing the fields. addressbook en Update a single entry by passing the fields. update a single entry by passing the fields. addressbook en Update a single entry by passing the fields.
upload or delete the photo addressbook en Upload or delete the photo upload or delete the photo addressbook en Upload or delete the photo
url to link telephone numbers to (use %1 for the number) admin en URL to link telephone numbers to (use %1 for the number) url to link telephone numbers to (use %1 = number to call, %u = account name, %t = account phone) admin en URL to link telephone numbers to (use %1 = number to call, %u = account name, %t = account phone)
use an extra category tab? addressbook en Use an extra category tab? use an extra category tab? addressbook en Use an extra category tab?
use country list addressbook en Use Country List use country list addressbook en Use Country List
use setup for a full account-migration admin en use setup for a full account-migration use setup for a full account-migration admin en use setup for a full account-migration

View File

@ -14,7 +14,7 @@
<td colspan="2">&nbsp;<b>{lang_Telephony_integration}</b></td> <td colspan="2">&nbsp;<b>{lang_Telephony_integration}</b></td>
</tr> </tr>
<tr class="row_on"> <tr class="row_on">
<td>&nbsp;{lang_URL_to_link_telephone_numbers_to_(use_%1_for_the_number)}:</td> <td>&nbsp;{lang_URL_to_link_telephone_numbers_to_(use_%1_=_number_to_call,_%u_=_account_name,_%t_=_account_phone)}:</td>
<td><input name="newsettings[call_link]" value="{value_call_link}" size="40"></td> <td><input name="newsettings[call_link]" value="{value_call_link}" size="40"></td>
</tr> </tr>
<tr class="row_off"> <tr class="row_off">
@ -46,6 +46,10 @@
</select> </select>
</td> </td>
</tr> </tr>
<tr class="row_off">
<td>&nbsp;<b>{lang_Security}</b>: {lang_How_many_contacts_should_non-admins_be_able_to_export_(empty_=_no_limit)}:</td>
<td><input name="newsettings[contact_export_limit]" value="{value_contact_export_limit}" size="5"></td>
</tr>
<tr class="th"> <tr class="th">
<td colspan="2">&nbsp;<b>{lang_Contact_repository}</b></td> <td colspan="2">&nbsp;<b>{lang_Contact_repository}</b></td>
</tr> </tr>

View File

@ -181,8 +181,8 @@
static $chars_shortcut; static $chars_shortcut;
if (is_null($chars_shortcut)) $chars_shortcut = (int)lang('3 number of chars for month-shortcut'); // < 0 to take the chars from the end if (is_null($chars_shortcut)) $chars_shortcut = (int)lang('3 number of chars for month-shortcut'); // < 0 to take the chars from the end
$value['M'] = lang(substr($month[$value['m']],0,3)); // check if we have a translation of the short-cut $value['M'] = lang($m = substr($month[$value['m']],0,3)); // check if we have a translation of the short-cut
if ($substr($value['M'],-1) == '*') // if not generate one by truncating the translation of the long name if ($value['M'] == $m || $substr($value['M'],-1) == '*') // if not generate one by truncating the translation of the long name
{ {
$value['M'] = $chars_shortcut > 0 ? $substr(lang($month[$value['m']]),0,$chars_shortcut) : $value['M'] = $chars_shortcut > 0 ? $substr(lang($month[$value['m']]),0,$chars_shortcut) :
$substr(lang($month[$value['m']]),$chars_shortcut); $substr(lang($month[$value['m']]),$chars_shortcut);

View File

@ -178,9 +178,6 @@
$extension_data['old_value'] = $value = $nm_global['col_filter'][$this->last_part($name)]; $extension_data['old_value'] = $value = $nm_global['col_filter'][$this->last_part($name)];
return True; return True;
} }
if (!$value['filter_onchange']) $value['filter_onchange'] = 'this.form.submit();';
if (!$value['filter2_onchange']) $value['filter2_onchange'] = 'this.form.submit();';
// presetting the selectboxes with their default values, to NOT loop, because post-process thinks they changed // presetting the selectboxes with their default values, to NOT loop, because post-process thinks they changed
if (!isset($value['cat_id'])) $value['cat_id'] = ''; if (!isset($value['cat_id'])) $value['cat_id'] = '';
if (!isset($value['search'])) $value['search'] = ''; if (!isset($value['search'])) $value['search'] = '';
@ -192,6 +189,12 @@
if (!is_string($value[$f])) $value[$f] = (string) $value[$f]; if (!is_string($value[$f])) $value[$f] = (string) $value[$f];
} }
} }
// save values in persistent extension_data to be able use it in post_process
$extension_data += $value;
if (!$value['filter_onchange']) $value['filter_onchange'] = 'this.form.submit();';
if (!$value['filter2_onchange']) $value['filter2_onchange'] = 'this.form.submit();';
list($app,$class,$method) = explode('.',$value['get_rows']); list($app,$class,$method) = explode('.',$value['get_rows']);
if ($app && $class) if ($app && $class)
{ {
@ -401,9 +404,6 @@
$cell['type'] = 'template'; $cell['type'] = 'template';
$cell['label'] = $cell['help'] = ''; $cell['label'] = $cell['help'] = '';
// save values in persistent extension_data to be able use it in post_process
$extension_data += $value;
foreach(array('sort','order','col_filter') as $n) // save them for the sortheader foreach(array('sort','order','col_filter') as $n) // save them for the sortheader
{ {
$nm_global[$n] = $value[$n]; $nm_global[$n] = $value[$n];

View File

@ -1,16 +1,14 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - InfoLog: CSV - Import * * InfoLog - CSV import
* http://www.egroupware.org * *
* Written by Ralf Becker <RalfBecker@outdoor-training.de> * * @link http://www.egroupware.org
* -------------------------------------------- * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* This program is free software; you can redistribute it and/or modify it * * @package infolog
* under the terms of the GNU General Public License as published by the * * @copyright (c) 2003-6 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* Free Software Foundation; either version 2 of the License, or (at your * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* option) any later version. * * @version $Id$
\**************************************************************************/ */
/* $Id$ */
$GLOBALS['egw_info']['flags'] = array( $GLOBALS['egw_info']['flags'] = array(
'currentapp' => 'infolog', 'currentapp' => 'infolog',

View File

@ -1,24 +1,17 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - InfoLog Admin-, Preferences- and SideboxMenu-Hooks * * InfoLog - Admin-, Preferences- and SideboxMenu-Hooks
* http://www.eGroupWare.org * *
* Written and (c) by Ralf Becker <RalfBecker@outdoor-training.de> * * @link http://www.egroupware.org
* ------------------------------------------------------- * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* This program is free software; you can redistribute it and/or modify it * * @package infolog
* under the terms of the GNU General Public License as published by the * * @copyright (c) 2003-6 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* Free Software Foundation; either version 2 of the License, or (at your * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* option) any later version. * * @version $Id$
\**************************************************************************/ */
/* $Id$ */
/** /**
* Class containing admin, preferences and sidebox-menus (used as hooks) * Class containing admin, preferences and sidebox-menus (used as hooks)
*
* @package infolog
* @author Ralf Becker <RalfBecker@outdoor-training.de>
* @copyright (c) by Ralf Becker <RalfBecker@outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
*/ */
class admin_prefs_sidebox_hooks class admin_prefs_sidebox_hooks
{ {
@ -84,5 +77,3 @@ class admin_prefs_sidebox_hooks
} }
} }
} }
?>

View File

@ -1,16 +1,15 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - ProjectManager - DataSource for InfoLog * * InfoLog - Datasource for ProjektManager
* http://www.egroupware.org * *
* Written and (c) 2005 by Ralf Becker <RalfBecker@outdoor-training.de> * * @link http://www.egroupware.org
* -------------------------------------------- * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* This program is free software; you can redistribute it and/or modify it * * @package infolog
* under the terms of the GNU General Public License as published by the * * @subpackage projectmanager
* Free Software Foundation; either version 2 of the License, or (at your * * @copyright (c) 2005 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* option) any later version. * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
\**************************************************************************/ * @version $Id$
*/
/* $Id$ */
include_once(EGW_INCLUDE_ROOT.'/projectmanager/inc/class.datasource.inc.php'); include_once(EGW_INCLUDE_ROOT.'/projectmanager/inc/class.datasource.inc.php');
@ -23,11 +22,6 @@ include_once(EGW_INCLUDE_ROOT.'/projectmanager/inc/class.datasource.inc.php');
* - planned start from the end of a start constrain * - planned start from the end of a start constrain
* - planned end from the planned time and a start-time * - planned end from the planned time and a start-time
* - planned start and end from the "real" values * - planned start and end from the "real" values
*
* @package infolog
* @author RalfBecker-AT-outdoor-training.de
* @copyright (c) 2005 by RalfBecker-AT-outdoor-training.de
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
*/ */
class datasource_infolog extends datasource class datasource_infolog extends datasource
{ {

View File

@ -1,37 +1,29 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - InfoLog * * InfoLog - Link-registry
* http://www.egroupware.org * *
* Written by Ralf Becker <RalfBecker@outdoor-training.de> * * @link http://www.egroupware.org
* originaly based on todo written by Joseph Engo <jengo@phpgroupware.org> * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* -------------------------------------------- * * @package infolog
* This program is free software; you can redistribute it and/or modify it * * @copyright (c) 2003-6 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* under the terms of the GNU General Public License as published by the * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* Free Software Foundation; either version 2 of the License, or (at your * * @version $Id$
* option) any later version. * */
\**************************************************************************/
/* $Id$ */
include_once(EGW_INCLUDE_ROOT.'/infolog/inc/class.boinfolog.inc.php'); include_once(EGW_INCLUDE_ROOT.'/infolog/inc/class.boinfolog.inc.php');
/** /**
* This class returns the link-registry for infolog * This class returns the link-registry for infolog
* *
* To prevent an invinit recursion, it has to be outside the boinfolog class, * To prevent an invinit recursion, it has to be outside the boinfolog class,
* which itself instanciats the link class by default. * which itself instanciats the link class by default.
* */
* @package infolog class infolog_link_registry
* @author Ralf Becker <RalfBecker@outdoor-training.de> {
* @copyright (c) by RalfBecker-At-outdoor-training.de function search_link($location)
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
*/
class infolog_link_registry
{ {
function search_link($location) $bo =& new boinfolog(0,false); // false = dont instanciate the link class
{
$bo =& new boinfolog(0,false); // false = dont instanciate the link class return $bo->search_link($location);
}
return $bo->search_link($location); }
}
}

View File

@ -1,15 +1,14 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - iCalendar Parser * * InfoLog - SIF Parser
* http://www.egroupware.org * *
* Written by Lars Kneschke <lkneschke@egroupware.org> * * @link http://www.egroupware.org
* -------------------------------------------- * * @author Lars Kneschke <lkneschke@egroupware.org>
* This program is free software; you can redistribute it and/or modify it * * @package infolog
* under the terms of the GNU General Public License as published by the * * @subpackage syncml
* Free Software Foundation; either version 2 of the License. * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
\**************************************************************************/ * @version $Id$
*/
/* $Id$ */
require_once PHPGW_SERVER_ROOT.'/infolog/inc/class.boinfolog.inc.php'; require_once PHPGW_SERVER_ROOT.'/infolog/inc/class.boinfolog.inc.php';
require_once EGW_SERVER_ROOT.'/phpgwapi/inc/horde/Horde/iCalendar.php'; require_once EGW_SERVER_ROOT.'/phpgwapi/inc/horde/Horde/iCalendar.php';

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* InfoLog - Custome fields * InfoLog - Custom fields
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de> * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>

View File

@ -179,7 +179,7 @@ class uiinfolog
$readonlys["sp[$id]"] = !$this->bo->check_access($info,EGW_ACL_ADD); $readonlys["sp[$id]"] = !$this->bo->check_access($info,EGW_ACL_ADD);
$readonlys["view[$id]"] = $info['info_anz_subs'] < 1; $readonlys["view[$id]"] = $info['info_anz_subs'] < 1;
$readonlys['view[0]'] = True; // no parent $readonlys['view[0]'] = True; // no parent
$readonlys["timesheet[$id]"] = !$this->prefs['show_times'] || !isset($GLOBALS['egw_info']['user']['apps']['timesheet']); $readonlys["timesheet[$id]"] = !isset($GLOBALS['egw_info']['user']['apps']['timesheet']);
if (!$show_links) $show_links = $this->prefs['show_links']; if (!$show_links) $show_links = $this->prefs['show_links'];
@ -321,9 +321,12 @@ class uiinfolog
} }
else else
{ {
unset($query['columnselection_pref']); // it might be set $query['columnselection_pref'] = 'infolog.index.rows';
$query['default_cols'] = '!cat_id,info_datemodified,info_used_time_info_planned_time,info_id'; $query['default_cols'] = '!cat_id,info_datemodified,info_used_time_info_planned_time,info_id';
} }
// set old show_times pref, that get_info calculates the cumulated time of the timesheets
$this->prefs['show_times'] = strpos($this->prefs['nextmatch-'.$query['columnselection_pref']],'info_used_time_info_planned_time') !== false;
$readonlys = $rows = array(); $readonlys = $rows = array();
foreach($ids as $id => $info) foreach($ids as $id => $info)
{ {

View File

@ -1,15 +1,14 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - iCalendar Parser * * InfoLog - iCalendar Parser
* http://www.egroupware.org * *
* Written by Lars Kneschke <lkneschke@egroupware.org> * * @link http://www.egroupware.org
* -------------------------------------------- * * @author Lars Kneschke <lkneschke@egroupware.org>
* This program is free software; you can redistribute it and/or modify it * * @package infolog
* under the terms of the GNU General Public License as published by the * * @subpackage syncml
* Free Software Foundation; either version 2 of the License. * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
\**************************************************************************/ * @version $Id$
*/
/* $Id$ */
require_once EGW_SERVER_ROOT.'/infolog/inc/class.boinfolog.inc.php'; require_once EGW_SERVER_ROOT.'/infolog/inc/class.boinfolog.inc.php';
require_once EGW_SERVER_ROOT.'/phpgwapi/inc/horde/Horde/iCalendar.php'; require_once EGW_SERVER_ROOT.'/phpgwapi/inc/horde/Horde/iCalendar.php';

View File

@ -1,22 +1,22 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare * * InfoLog - delete account hook
* http://www.egroupware.org * *
* -------------------------------------------- * * @link http://www.egroupware.org
* This program is free software; you can redistribute it and/or modify it * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* under the terms of the GNU General Public License as published by the * * @package infolog
* Free Software Foundation; either version 2 of the License, or (at your * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* option) any later version. * * @version $Id$
\**************************************************************************/ */
/* $Id$ */
// Delete all records for a user // Delete all records for a user
if((int)$GLOBALS['hook_values']['account_id'] > 0) if((int)$GLOBALS['hook_values']['account_id'] > 0)
{ {
$info =& CreateObject('infolog.soinfolog'); require_once(EGW_INCLUDE_ROOT.'/infolog/inc/class.soinfolog.inc.php');
$info->change_delete_owner((int)$GLOBALS['hook_values']['account_id'],(int)$_POST['new_owner']); $info =& new soinfolog;
unset($info); $info->change_delete_owner((int)$GLOBALS['hook_values']['account_id'],(int)$_POST['new_owner']);
}
?> unset($info);
}

View File

@ -1,57 +1,56 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - Info Log on Homepage * * InfoLog - homepage hook
* http://www.egroupware.org * *
* -------------------------------------------- * * @link http://www.egroupware.org
* This program is free software; you can redistribute it and/or modify it * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* under the terms of the GNU General Public License as published by the * * @package infolog
* Free Software Foundation; either version 2 of the License, or (at your * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* option) any later version. * * @version $Id$
\**************************************************************************/ */
/* $Id$ */
if (($showevents = $GLOBALS['egw_info']['user']['preferences']['infolog']['homeShowEvents'])) if (($showevents = $GLOBALS['egw_info']['user']['preferences']['infolog']['homeShowEvents']))
{
$save_app = $GLOBALS['egw_info']['flags']['currentapp'];
$GLOBALS['egw_info']['flags']['currentapp'] = 'infolog';
$GLOBALS['egw']->translation->add_app('infolog');
$app_id = $GLOBALS['egw']->applications->name2id('infolog');
$GLOBALS['portal_order'][] = $app_id;
$infolog =& CreateObject('infolog.uiinfolog');
$infolog->called_by = 'home';
if (in_array($showevents,array('1','2'))) $showevents = 'own-open-today';
$html = $infolog->index(array('nm' => array('filter' => $showevents)),'','',0,False,True);
$title = lang('InfoLog').' - '.lang($infolog->filters[$showevents]);
unset($infolog);
$portalbox =& CreateObject('phpgwapi.listbox',array(
'title' => $title,
'primary' => $GLOBALS['egw_info']['theme']['navbar_bg'],
'secondary' => $GLOBALS['egw_info']['theme']['navbar_bg'],
'tertiary' => $GLOBALS['egw_info']['theme']['navbar_bg'],
'width' => '100%',
'outerborderwidth' => '0',
'header_background_image' => $GLOBALS['egw']->common->image('phpgwapi/templates/default','bg_filler')
));
foreach(array('up','down','close','question','edit') as $key)
{ {
$save_app = $GLOBALS['egw_info']['flags']['currentapp']; $portalbox->set_controls($key,Array('url' => '/set_box.php', 'app' => $app_id));
$GLOBALS['egw_info']['flags']['currentapp'] = 'infolog'; }
$portalbox->data = $data;
$GLOBALS['egw']->translation->add_app('infolog'); if (!file_exists(EGW_SERVER_ROOT.($et_css_file ='/etemplate/templates/'.$GLOBALS['egw_info']['user']['preferences']['common']['template_set'].'/app.css')))
{
$app_id = $GLOBALS['egw']->applications->name2id('infolog'); $et_css_file = '/etemplate/templates/default/app.css';
$GLOBALS['portal_order'][] = $app_id; }
if (!file_exists(EGW_SERVER_ROOT.($css_file ='/infolog/templates/'.$GLOBALS['egw_info']['user']['preferences']['common']['template_set'].'/app.css')))
$infolog =& CreateObject('infolog.uiinfolog'); {
$infolog->called_by = 'home'; $css_file = '/infolog/templates/default/app.css';
}
if (in_array($showevents,array('1','2'))) $showevents = 'own-open-today'; echo '
$html = $infolog->index(array('nm' => array('filter' => $showevents)),'','',0,False,True);
$title = lang('InfoLog').' - '.lang($infolog->filters[$showevents]);
unset($infolog);
$portalbox =& CreateObject('phpgwapi.listbox',array(
'title' => $title,
'primary' => $GLOBALS['egw_info']['theme']['navbar_bg'],
'secondary' => $GLOBALS['egw_info']['theme']['navbar_bg'],
'tertiary' => $GLOBALS['egw_info']['theme']['navbar_bg'],
'width' => '100%',
'outerborderwidth' => '0',
'header_background_image' => $GLOBALS['egw']->common->image('phpgwapi/templates/default','bg_filler')
));
foreach(array('up','down','close','question','edit') as $key)
{
$portalbox->set_controls($key,Array('url' => '/set_box.php', 'app' => $app_id));
}
$portalbox->data = $data;
if (!file_exists(EGW_SERVER_ROOT.($et_css_file ='/etemplate/templates/'.$GLOBALS['egw_info']['user']['preferences']['common']['template_set'].'/app.css')))
{
$et_css_file = '/etemplate/templates/default/app.css';
}
if (!file_exists(EGW_SERVER_ROOT.($css_file ='/infolog/templates/'.$GLOBALS['egw_info']['user']['preferences']['common']['template_set'].'/app.css')))
{
$css_file = '/infolog/templates/default/app.css';
}
echo '
<!-- BEGIN InfoLog info --> <!-- BEGIN InfoLog info -->
<style type="text/css"> <style type="text/css">
<!-- <!--
@ -59,12 +58,11 @@
@import url('.$GLOBALS['egw_info']['server']['webserver_url'].$css_file.'); @import url('.$GLOBALS['egw_info']['server']['webserver_url'].$css_file.');
--> -->
</style> </style>
'. $portalbox->draw($html)."\n<!-- END InfoLog info -->\n"; '. $portalbox->draw($html)."\n<!-- END InfoLog info -->\n";
unset($css_file); unset($et_css_file); unset($css_file); unset($et_css_file);
unset($portalbox); unset($portalbox);
unset($html); unset($html);
$GLOBALS['egw_info']['flags']['currentapp'] = $save_app; $GLOBALS['egw_info']['flags']['currentapp'] = $save_app;
} }
unset($showevents); unset($showevents);
?>

View File

@ -1,16 +1,13 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - InfoLog Preferences * * InfoLog - Preferences
* http://www.eGroupWare.org * *
* Written by Ralf Becker <RalfBecker@outdoor-training.de> * * @link http://www.egroupware.org
* -------------------------------------------- * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* This program is free software; you can redistribute it and/or modify it * * @package infolog
* under the terms of the GNU General Public License as published by the * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* Free Software Foundation; either version 2 of the License, or (at your * * @version $Id$
* option) any later version. * */
\**************************************************************************/
/* $Id$ */
/* Setup some values to fill the array of this app's settings below */ /* Setup some values to fill the array of this app's settings below */
$ui =& CreateObject('infolog.uiinfolog'); // need some labels from $ui =& CreateObject('infolog.uiinfolog'); // need some labels from

View File

@ -1,78 +1,73 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - infolog * * InfoLog - Setup
* http://www.egroupware.org * *
* -------------------------------------------- * * @link http://www.egroupware.org
* This program is free software; you can redistribute it and/or modify it * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* under the terms of the GNU General Public License as published by the * * @package infolog
* Free Software Foundation; either version 2 of the License, or (at your * * @subpackage setup
* option) any later version. * * @copyright (c) 2003-6 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
\**************************************************************************/ * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
/* $Id$ */ */
$setup_info['infolog']['name'] = 'infolog';
$setup_info['infolog']['version'] = '1.4';
$setup_info['infolog']['app_order'] = 5;
$setup_info['infolog']['tables'] = array('egw_infolog','egw_infolog_extra');
$setup_info['infolog']['enable'] = 1;
$setup_info['infolog']['author'] =
$setup_info['infolog']['maintainer'] = array(
'name' => 'Ralf Becker',
'email' => 'ralfbecker@outdoor-training.de'
);
$setup_info['infolog']['license'] = 'GPL';
$setup_info['infolog']['description'] =
'<p><b>CRM</b> (customer-relation-management) type app using Addressbook providing
Todo List, Notes and Phonelog. <b>InfoLog</b> is orininaly based on eGroupWare\'s
old ToDo-List and has the features of all 3 mentioned applications plus fully working ACL
(including Add+Private attributes, add for to addreplys/subtasks).</p>
<p>Responsibility for a task (ToDo) or a phonecall can be <b>delegated</b> to an other
user. All entries can be linked to addressbook entries, projects and/or calendar events.
This allows you to <b>log all activity of a contact</b>/address or project.
The entries may be viewed or added from InfoLog direct or from within
the contact/address, project or calendar view.</p>
<p>Other documents / files can be linked to InfoLog entries and are store in the VFS
(eGroupWare\'s virtual file system). An extension of the VFS allows to symlink
the files to a fileserver, instead of placeing a copy in the VFS
(<i>need to be configured in the admin-section</i>).
It is planed to include emails and faxes into InfoLog in the future.</p>';
$setup_info['infolog']['note'] =
'<p>There is a <b>CSV import filter</b> (in the admin-section) to import existing data.
It allows to interactivly assign fields, customize the values with regular
expressions and direct calls to php-functions (e.g. to link the phone calls
(again) to the addressbook entrys).</p>
<p><b>More information</b> about InfoLog and the current development-status can be found on the
<a href="http://www.egroupware.org/infolog" target="_blank">InfoLog page on our Website</a>.</p>';
/* The hooks this app includes, needed for hooks registration */
$setup_info['infolog']['hooks']['preferences'] = 'infolog.admin_prefs_sidebox_hooks.all_hooks';
$setup_info['infolog']['hooks'][] = 'settings';
$setup_info['infolog']['hooks']['admin'] = 'infolog.admin_prefs_sidebox_hooks.all_hooks';
$setup_info['infolog']['hooks'][] = 'deleteaccount';
$setup_info['infolog']['hooks'][] = 'home';
$setup_info['infolog']['hooks']['addressbook_view'] = 'infolog.uiinfolog.hook_view';
$setup_info['infolog']['hooks']['projects_view'] = 'infolog.uiinfolog.hook_view';
$setup_info['infolog']['hooks']['calendar_view'] = 'infolog.uiinfolog.hook_view';
$setup_info['infolog']['hooks']['infolog'] = 'infolog.uiinfolog.hook_view';
$setup_info['infolog']['hooks']['calendar_include_events'] = 'infolog.boinfolog.cal_to_include';
$setup_info['infolog']['hooks']['calendar_include_todos'] = 'infolog.boinfolog.cal_to_include';
$setup_info['infolog']['hooks']['sidebox_menu'] = 'infolog.admin_prefs_sidebox_hooks.all_hooks';
$setup_info['infolog']['hooks']['search_link'] = 'infolog.infolog_link_registry.search_link';
$setup_info['infolog']['hooks']['pm_custom_app_icons'] = 'infolog.boinfolog.pm_icons';
/* Dependencies for this app to work */
$setup_info['infolog']['depends'][] = array(
'appname' => 'phpgwapi',
'versions' => Array('1.3','1.4','1.5')
);
$setup_info['infolog']['depends'][] = array(
'appname' => 'etemplate',
'versions' => Array('1.3','1.4','1.5')
);
$setup_info['infolog']['name'] = 'infolog';
$setup_info['infolog']['version'] = '1.4';
$setup_info['infolog']['app_order'] = 5;
$setup_info['infolog']['tables'] = array('egw_infolog','egw_infolog_extra');
$setup_info['infolog']['enable'] = 1;
$setup_info['infolog']['author'] =
$setup_info['infolog']['maintainer'] = array(
'name' => 'Ralf Becker',
'email' => 'ralfbecker@outdoor-training.de'
);
$setup_info['infolog']['license'] = 'GPL';
$setup_info['infolog']['description'] =
'<p><b>CRM</b> (customer-relation-management) type app using Addressbook providing
Todo List, Notes and Phonelog. <b>InfoLog</b> is orininaly based on eGroupWare\'s
old ToDo-List and has the features of all 3 mentioned applications plus fully working ACL
(including Add+Private attributes, add for to addreplys/subtasks).</p>
<p>Responsibility for a task (ToDo) or a phonecall can be <b>delegated</b> to an other
user. All entries can be linked to addressbook entries, projects and/or calendar events.
This allows you to <b>log all activity of a contact</b>/address or project.
The entries may be viewed or added from InfoLog direct or from within
the contact/address, project or calendar view.</p>
<p>Other documents / files can be linked to InfoLog entries and are store in the VFS
(eGroupWare\'s virtual file system). An extension of the VFS allows to symlink
the files to a fileserver, instead of placeing a copy in the VFS
(<i>need to be configured in the admin-section</i>).
It is planed to include emails and faxes into InfoLog in the future.</p>';
$setup_info['infolog']['note'] =
'<p>There is a <b>CSV import filter</b> (in the admin-section) to import existing data.
It allows to interactivly assign fields, customize the values with regular
expressions and direct calls to php-functions (e.g. to link the phone calls
(again) to the addressbook entrys).</p>
<p><b>More information</b> about InfoLog and the current development-status can be found on the
<a href="http://www.egroupware.org/infolog" target="_blank">InfoLog page on our Website</a>.</p>';
/* The hooks this app includes, needed for hooks registration */
$setup_info['infolog']['hooks']['preferences'] = 'infolog.admin_prefs_sidebox_hooks.all_hooks';
$setup_info['infolog']['hooks'][] = 'settings';
$setup_info['infolog']['hooks']['admin'] = 'infolog.admin_prefs_sidebox_hooks.all_hooks';
$setup_info['infolog']['hooks'][] = 'deleteaccount';
$setup_info['infolog']['hooks'][] = 'home';
$setup_info['infolog']['hooks']['addressbook_view'] = 'infolog.uiinfolog.hook_view';
$setup_info['infolog']['hooks']['projects_view'] = 'infolog.uiinfolog.hook_view';
$setup_info['infolog']['hooks']['calendar_view'] = 'infolog.uiinfolog.hook_view';
$setup_info['infolog']['hooks']['infolog'] = 'infolog.uiinfolog.hook_view';
$setup_info['infolog']['hooks']['calendar_include_events'] = 'infolog.boinfolog.cal_to_include';
$setup_info['infolog']['hooks']['calendar_include_todos'] = 'infolog.boinfolog.cal_to_include';
$setup_info['infolog']['hooks']['sidebox_menu'] = 'infolog.admin_prefs_sidebox_hooks.all_hooks';
$setup_info['infolog']['hooks']['search_link'] = 'infolog.infolog_link_registry.search_link';
$setup_info['infolog']['hooks']['pm_custom_app_icons'] = 'infolog.boinfolog.pm_icons';
/* Dependencies for this app to work */
$setup_info['infolog']['depends'][] = array(
'appname' => 'phpgwapi',
'versions' => Array('1.3','1.4','1.5')
);
$setup_info['infolog']['depends'][] = array(
'appname' => 'etemplate',
'versions' => Array('1.3','1.4','1.5')
);

View File

@ -1,15 +1,15 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare * * InfoLog - Setup
* http://www.egroupware.org * *
* -------------------------------------------- * * @link http://www.egroupware.org
* This program is free software; you can redistribute it and/or modify it * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* under the terms of the GNU General Public License as published by the * * @package infolog
* Free Software Foundation; either version 2 of the License, or (at your * * @subpackage setup
* option) any later version. * * @copyright (c) 2003-6 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
\**************************************************************************/ * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
/* $Id$ */ */
$phpgw_baseline = array( $phpgw_baseline = array(
'egw_infolog' => array( 'egw_infolog' => array(

View File

@ -1,15 +1,15 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - Setup * * InfoLog - Setup
* http://www.egroupware.org * *
* -------------------------------------------- * * @link http://www.egroupware.org
* This program is free software; you can redistribute it and/or modify it * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* under the terms of the GNU General Public License as published by the * * @package infolog
* Free Software Foundation; either version 2 of the License, or (at your * * @subpackage setup
* option) any later version. * * @copyright (c) 2003-6 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
\**************************************************************************/ * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
/* $Id$ */ */
$test[] = '0.9.11'; $test[] = '0.9.11';
function infolog_upgrade0_9_11() function infolog_upgrade0_9_11()

View File

@ -88,8 +88,8 @@ class jscalendar
static $chars_shortcut; static $chars_shortcut;
if (is_null($chars_shortcut)) $chars_shortcut = (int)lang('3 number of chars for month-shortcut'); // < 0 to take the chars from the end if (is_null($chars_shortcut)) $chars_shortcut = (int)lang('3 number of chars for month-shortcut'); // < 0 to take the chars from the end
$short = lang(adodb_date('M',$ts)); // check if we have a translation of the short-cut $short = lang($m = adodb_date('M',$ts)); // check if we have a translation of the short-cut
if ($substr($short,-1) == '*') // if not generate one by truncating the translation of the long name if ($short == $m || $substr($short,-1) == '*') // if not generate one by truncating the translation of the long name
{ {
$short = $chars_shortcut > 0 ? $substr(lang(adodb_date('F',$ts)),0,$chars_shortcut) : $short = $chars_shortcut > 0 ? $substr(lang(adodb_date('F',$ts)),0,$chars_shortcut) :
$substr(lang(adodb_date('F',$ts)),$chars_shortcut); $substr(lang(adodb_date('F',$ts)),$chars_shortcut);

View File

@ -1255,17 +1255,24 @@
$url = str_replace ( 'http:', 'https:', $url); $url = str_replace ( 'http:', 'https:', $url);
} }
} }
$vars = array();
// add session params if not using cookies
if (!$GLOBALS['egw_info']['server']['usecookies'])
{
$vars['sessionid'] = $this->sessionid;
$vars['kp3'] = $this->kp3;
$vars['domain'] = $this->account_domain;
}
// check if the url already contains a query and ensure that vars is an array and all strings are in extravars // check if the url already contains a query and ensure that vars is an array and all strings are in extravars
list($url,$othervars) = explode('?',$url); list($url,$othervars) = explode('?',$url);
if ($extravars && is_array($extravars)) if ($extravars && is_array($extravars))
{ {
$vars = $extravars; $vars += $extravars;
$extravars = $othervars; $extravars = $othervars;
} }
else else
{ {
$vars = array();
if ($othervars) $extravars .= '&'.$othervars; if ($othervars) $extravars .= '&'.$othervars;
} }
@ -1286,14 +1293,6 @@
} }
} }
// add session params if not using cookies
if (!$GLOBALS['egw_info']['server']['usecookies'])
{
$vars['sessionid'] = $this->sessionid;
$vars['kp3'] = $this->kp3;
$vars['domain'] = $this->account_domain;
}
// if there are vars, we add them urlencoded to the url // if there are vars, we add them urlencoded to the url
if (count($vars)) if (count($vars))
{ {

View File

@ -68,13 +68,12 @@
/** /**
* Create a new session id, called by session::create() * Create a new session id, called by session::create()
* *
* Reimplemented to tell the php-sessions to use the id * Reimplemented to use php session-id
* *
* @return string a new session id * @return string a new session id
*/ */
function new_session_id() function new_session_id()
{ {
session_id(parent::new_session_id());
session_start(); session_start();
return session_id(); return session_id();

View File

@ -281,8 +281,8 @@ $monthnames = array('January','February','March','April','May','June','July','Au
$chars_shortcut = (int)lang('3 number of chars for month-shortcut'); // < 0 to take the chars from the end $chars_shortcut = (int)lang('3 number of chars for month-shortcut'); // < 0 to take the chars from the end
foreach($monthnames as $n => $name) foreach($monthnames as $n => $name)
{ {
$short = lang(substr($name,0,3)); // test if our lang-file have a translation for the english short with 3 chars $short = lang($m = substr($name,0,3)); // test if our lang-file have a translation for the english short with 3 chars
if ($substr($short,-1) == '*') // else create one by truncating the full translation to x chars if ($short == $m || $substr($short,-1) == '*') // else create one by truncating the full translation to x chars
{ {
$short = $chars_shortcut > 0 ? $substr(lang($name),0,$chars_shortcut) : $substr(lang($name),$chars_shortcut); $short = $chars_shortcut > 0 ? $substr(lang($name),0,$chars_shortcut) : $substr(lang($name),$chars_shortcut);
} }

View File

@ -40,10 +40,10 @@
{ {
$format .= 'H:i'; $format .= 'H:i';
} }
for($i = -23; $i<24; $i++) for($i = -23.5; $i < 24.0; $i += 0.5)
{ {
$t = time() + $i * 60*60; $t = time() + round($i * 3600);
$tz_offset[$i] = $i . ' ' . lang('hours').': ' . date($format,$t); $tz_offset[(string)$i] = sprintf('%3.1lf',$i) . ' ' . lang('hours').': ' . date($format,$t);
} }
$date_formats = array( $date_formats = array(

View File

@ -372,7 +372,7 @@
if (!isset($args['warning'])) if (!isset($args['warning']))
{ {
$args['warning'] = lang('The %1 extension is needed from: %2.',$name, $args['warning'] = lang('The %1 extension is needed from: %2.',$name,
is_array($args['from'] ? implode(', ',$args['from']) : $args['from'])); is_array($args['from']) ? implode(', ',$args['from']) : $args['from']);
} }
echo "<div class='setup_info'>".$args['warning'].'</div>'; echo "<div class='setup_info'>".$args['warning'].'</div>';
} }