\n");
if (empty($tpl_name) && !empty($content['tpl_form_name'])) $tpl_name =$content['tpl_form_name'];
@@ -53,6 +60,7 @@ class addressbook_contactform
$contact = new addressbook_bo();
if ($content['owner']) // save the contact in the addressbook
{
+ $content['private'] = 0; // in case default_private is set
if (($id = $contact->save($content)))
{
// check for fileuploads and attach the found files
@@ -70,7 +78,7 @@ class addressbook_contactform
}
}
- return '
'.$content['msg'].'
';
+ return '
'.($msg ? $msg : $content['msg']).'
';
}
else
{
@@ -110,7 +118,7 @@ class addressbook_contactform
$custom = 1;
foreach($fields as $name)
{
- if ($name{0} == '#') // custom field
+ if ($name[0] == '#') // custom field
{
static $contact;
if (is_null($contact))
@@ -135,15 +143,17 @@ class addressbook_contactform
}
}
$preserv['start_time'] = time();
+ $content['lang'] = $GLOBALS['egw_info']['user']['preferences']['common']['lang'];
}
- if (is_array($content) && $submitted == 'truebutfalse') {
+ elseif ($submitted == 'truebutfalse')
+ {
$preserv['tpl_form_name'] = $tpl_name;
unset($content['submitit']);
$custom = 1;
// fieldnames are "defined" by the commit attempt, that way, we do not have to remember them
foreach($content as $name => $value) {
$preserv[$name]=$value;
- if ($name{0} == '#') // custom field
+ if ($name[0] == '#') // custom field
{
static $contact;
if (is_null($contact)) $contact = new addressbook_bo();
@@ -184,6 +194,6 @@ class addressbook_contactform
$content['captcha_task'] = sprintf('%d - %d =',$num1,$num2);
$preserv['captcha_result'] = $num1-$num2;
}
- return $tpl->exec('addressbook.addressbook_contactform.display',$content,$sel_options,$readonlys,$preserv);
+ return $tpl->exec($this->callback,$content,$sel_options,$readonlys,$preserv);
}
}
From cff42abd0738d3c63dc5b5620e6a84f7147b2bd4 Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Thu, 29 Jul 2010 17:02:20 +0000
Subject: [PATCH 07/88] modernising uiconfig a little bit and fixed mulitiple
levels for framework for framed templates
---
admin/inc/class.uiconfig.inc.php | 472 +++++++++++++++----------------
1 file changed, 221 insertions(+), 251 deletions(-)
diff --git a/admin/inc/class.uiconfig.inc.php b/admin/inc/class.uiconfig.inc.php
index 9e958182e8..423dd866e5 100644
--- a/admin/inc/class.uiconfig.inc.php
+++ b/admin/inc/class.uiconfig.inc.php
@@ -1,270 +1,240 @@
*
- * http://www.egroupware.org *
- * -------------------------------------------- *
- * This program is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU General Public License as published by the *
- * Free Software Foundation; either version 2 of the License, or (at your *
- * option) any later version. *
- \**************************************************************************/
+/**
+ * eGgroupWare admin - site configuration
+ *
+ * @link http://www.egroupware.org
+ * @author Miles Lott
+ * @package admin
+ * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
+ * @version $Id$
+ */
- /* $Id$ */
+/**
+ * Site configuration for all apps using an $app/templates/default/config.tpl
+ */
+class uiconfig
+{
+ var $public_functions = array('index' => True);
- class uiconfig
+ function index()
{
- var $public_functions = array('index' => True);
-
- function index()
+ if ($GLOBALS['egw']->acl->check('site_config_access',1,'admin'))
{
- if ($GLOBALS['egw']->acl->check('site_config_access',1,'admin'))
- {
- $GLOBALS['egw']->redirect_link('/index.php');
- }
- $referer = $_POST['submit'] || $_POST['cancel'] ? $_POST['referer'] : $_SERVER['HTTP_REFERER'];
- if (!$referer) $referer = $GLOBALS['egw']->link('/admin/index.php');
- if ($GLOBALS['egw_info']['server']['webserver_url'])
- {
- list(,$show_app) = explode($GLOBALS['egw_info']['server']['webserver_url'],$referer);
- }
- else
- {
- $parts = parse_url($referer);
- $show_app = $parts['path'];
- unset($parts);
- }
- list(,$show_app) = explode('/',$show_app);
- if (!$show_app) $show_app = 'admin';
+ egw::redirect_link('/index.php');
+ }
+ $referer = $_POST['submit'] || $_POST['cancel'] ? $_POST['referer'] :
+ common::get_referer('/admin/index.php',$_POST['referer']);
+ list(,$show_app) = explode('/',$referer);
+ if (!$show_app) $show_app = 'admin';
- // load the translations of the app we show too, so they dont need to be in admin!
- if ($_GET['appname'] != 'admin')
+ // load the translations of the app we show too, so they dont need to be in admin!
+ if ($_GET['appname'] != 'admin')
+ {
+ translation::add_app($_GET['appname']);
+ }
+
+ if(get_magic_quotes_gpc() && is_array($_POST['newsettings']))
+ {
+ $_POST['newsettings'] = array_stripslashes($_POST['newsettings']);
+ }
+
+ switch($_GET['appname'])
+ {
+ case 'admin':
+ case 'addressbook':
+ case 'calendar':
+ case 'email':
+ case 'nntp':
+ /*
+ Other special apps can go here for now, e.g.:
+ case 'bogusappname':
+ */
+ $appname = $_GET['appname'];
+ $config_appname = 'phpgwapi';
+ break;
+ case 'phpgwapi':
+ case '':
+ /* This keeps the admin from getting into what is a setup-only config */
+ egw::redirect_link('/admin/index.php');
+ break;
+ default:
+ $appname = $_GET['appname'];
+ $config_appname = $appname;
+ break;
+ }
+ $t =& CreateObject('phpgwapi.Template',$GLOBALS['egw']->common->get_tpl_dir($appname));
+ $t->set_unknowns('keep');
+ $t->set_file(array('config' => 'config.tpl'));
+ $t->set_block('config','header','header');
+ $t->set_block('config','body','body');
+ $t->set_block('config','footer','footer');
+
+ $c =& CreateObject('phpgwapi.config',$config_appname);
+ $c->read_repository();
+
+ if ($_POST['cancel'] || $_POST['submit'] && $GLOBALS['egw']->acl->check('site_config_access',2,'admin'))
+ {
+ egw::redirect_link($referer);
+ }
+
+ if ($_POST['submit'])
+ {
+ /* Load hook file with functions to validate each config (one/none/all) */
+ $GLOBALS['egw']->hooks->single('config_validate',$appname);
+
+ foreach($_POST['newsettings'] as $key => $config)
{
- $GLOBALS['egw']->translation->add_app($_GET['appname']);
+ if ($config)
+ {
+ $c->config_data[$key] = $config;
+ if($GLOBALS['egw_info']['server']['found_validation_hook'] && function_exists($key))
+ {
+ call_user_func($key,$config);
+ if($GLOBALS['config_error'])
+ {
+ $errors .= lang($GLOBALS['config_error']) . ' ';
+ $GLOBALS['config_error'] = False;
+ }
+ }
+ }
+ /* don't erase passwords, since we also don't print them */
+ elseif(strpos($key,'passwd') === false && strpos($key,'password') === false && strpos($key,'root_pw') === false)
+ {
+ unset($c->config_data[$key]);
+ }
+ }
+ if($GLOBALS['egw_info']['server']['found_validation_hook'] && function_exists('final_validation'))
+ {
+ final_validation($_POST['newsettings']);
+ if($GLOBALS['config_error'])
+ {
+ $errors .= lang($GLOBALS['config_error']) . ' ';
+ $GLOBALS['config_error'] = False;
+ }
+ unset($GLOBALS['egw_info']['server']['found_validation_hook']);
}
- if(get_magic_quotes_gpc() && is_array($_POST['newsettings']))
- {
- $_POST['newsettings'] = $this->array_stripslashes($_POST['newsettings']);
- }
+ $c->save_repository();
- switch($_GET['appname'])
+ if(!$errors)
{
- case 'admin':
- case 'addressbook':
- case 'calendar':
- case 'email':
- case 'nntp':
- /*
- Other special apps can go here for now, e.g.:
- case 'bogusappname':
- */
- $appname = $_GET['appname'];
- $config_appname = 'phpgwapi';
+ egw::redirect_link($referer);
+ }
+ }
+
+ if($errors)
+ {
+ $t->set_var('error',lang('Error') . ': ' . $errors);
+ $t->set_var('th_err','#FF8888');
+ unset($errors);
+ unset($GLOBALS['config_error']);
+ }
+ else
+ {
+ $t->set_var('error','');
+ $t->set_var('th_err',$GLOBALS['egw_info']['theme']['th_bg']);
+ }
+ // set currentapp to our calling app, to show the right sidebox-menu
+ $GLOBALS['egw_info']['flags']['currentapp'] = $show_app;
+ $GLOBALS['egw']->common->egw_header();
+ echo parse_navbar();
+
+ $t->set_var('title',lang('Site Configuration'));
+ $t->set_var('action_url',$GLOBALS['egw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname));
+ $t->set_var('th_bg', $GLOBALS['egw_info']['theme']['th_bg']);
+ $t->set_var('th_text', $GLOBALS['egw_info']['theme']['th_text']);
+ $t->set_var('row_on', $GLOBALS['egw_info']['theme']['row_on']);
+ $t->set_var('row_off', $GLOBALS['egw_info']['theme']['row_off']);
+ $t->set_var('hidden_vars','');
+ $t->pparse('out','header');
+
+ $vars = $t->get_undefined('body');
+
+ if ($GLOBALS['egw']->hooks->single('config',$appname)) // reload the config-values, they might have changed
+ {
+ $c->read_repository();
+ }
+ foreach($vars as $value)
+ {
+ $valarray = explode('_',$value);
+ $type = array_shift($valarray);
+ $newval = implode(' ',$valarray);
+
+ switch ($type)
+ {
+ case 'lang':
+ $t->set_var($value,lang($newval));
break;
- case 'phpgwapi':
- case '':
- /* This keeps the admin from getting into what is a setup-only config */
- $GLOBALS['egw']->redirect_link('/admin/index.php');
+ case 'value':
+ $newval = str_replace(' ','_',$newval);
+ /* Don't show passwords in the form */
+ if(strpos($value,'passwd') !== false || strpos($value,'password') !== false || strpos($value,'root_pw') !== false)
+ {
+ $t->set_var($value,'');
+ }
+ else
+ {
+ $t->set_var($value,$c->config_data[$newval]);
+ }
+ break;
+ /*
+ case 'checked':
+ $newval = str_replace(' ','_',$newval);
+ if ($c->config_data[$newval])
+ {
+ $t->set_var($value,' checked');
+ }
+ else
+ {
+ $t->set_var($value,'');
+ }
+ break;
+ */
+ case 'selected':
+ $configs = array();
+ $config = '';
+ $newvals = explode(' ',$newval);
+ $setting = end($newvals);
+ for ($i=0;$i<(count($newvals) - 1); $i++)
+ {
+ $configs[] = $newvals[$i];
+ }
+ $config = implode('_',$configs);
+ /* echo $config . '=' . $c->config_data[$config]; */
+ if ($c->config_data[$config] == $setting)
+ {
+ $t->set_var($value,' selected');
+ }
+ else
+ {
+ $t->set_var($value,'');
+ }
+ break;
+ case 'hook':
+ $newval = str_replace(' ','_',$newval);
+ if(function_exists($newval))
+ {
+ $t->set_var($value,$newval($c->config_data));
+ }
+ else
+ {
+ $t->set_var($value,'');
+ }
+ break;
+ case 'call': // eg. call_class::method or call_app.class.method
+ $newval = str_replace(' ','_',$newval);
+ $t->set_var($value,ExecMethod($newval,$c->config_data));
break;
default:
- $appname = $_GET['appname'];
- $config_appname = $appname;
+ $t->set_var($value,'');
break;
}
- $t =& CreateObject('phpgwapi.Template',$GLOBALS['egw']->common->get_tpl_dir($appname));
- $t->set_unknowns('keep');
- $t->set_file(array('config' => 'config.tpl'));
- $t->set_block('config','header','header');
- $t->set_block('config','body','body');
- $t->set_block('config','footer','footer');
-
- $c =& CreateObject('phpgwapi.config',$config_appname);
- $c->read_repository();
-
- if ($_POST['cancel'] || $_POST['submit'] && $GLOBALS['egw']->acl->check('site_config_access',2,'admin'))
- {
- $GLOBALS['egw']->redirect($referer);
- }
-
- if ($_POST['submit'])
- {
- /* Load hook file with functions to validate each config (one/none/all) */
- $GLOBALS['egw']->hooks->single('config_validate',$appname);
-
- foreach($_POST['newsettings'] as $key => $config)
- {
- if ($config)
- {
- $c->config_data[$key] = $config;
- if($GLOBALS['egw_info']['server']['found_validation_hook'] && function_exists($key))
- {
- call_user_func($key,$config);
- if($GLOBALS['config_error'])
- {
- $errors .= lang($GLOBALS['config_error']) . ' ';
- $GLOBALS['config_error'] = False;
- }
- }
- }
- /* don't erase passwords, since we also don't print them */
- elseif(strpos($key,'passwd') === false && strpos($key,'password') === false && strpos($key,'root_pw') === false)
- {
- unset($c->config_data[$key]);
- }
- }
- if($GLOBALS['egw_info']['server']['found_validation_hook'] && function_exists('final_validation'))
- {
- final_validation($_POST['newsettings']);
- if($GLOBALS['config_error'])
- {
- $errors .= lang($GLOBALS['config_error']) . ' ';
- $GLOBALS['config_error'] = False;
- }
- unset($GLOBALS['egw_info']['server']['found_validation_hook']);
- }
-
- $c->save_repository();
-
- if(!$errors)
- {
- $GLOBALS['egw']->redirect($referer);
- }
- }
-
- if($errors)
- {
- $t->set_var('error',lang('Error') . ': ' . $errors);
- $t->set_var('th_err','#FF8888');
- unset($errors);
- unset($GLOBALS['config_error']);
- }
- else
- {
- $t->set_var('error','');
- $t->set_var('th_err',$GLOBALS['egw_info']['theme']['th_bg']);
- }
- // set currentapp to our calling app, to show the right sidebox-menu
- $GLOBALS['egw_info']['flags']['currentapp'] = $show_app;
- $GLOBALS['egw']->common->egw_header();
- echo parse_navbar();
-
- $t->set_var('title',lang('Site Configuration'));
- $t->set_var('action_url',$GLOBALS['egw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname));
- $t->set_var('th_bg', $GLOBALS['egw_info']['theme']['th_bg']);
- $t->set_var('th_text', $GLOBALS['egw_info']['theme']['th_text']);
- $t->set_var('row_on', $GLOBALS['egw_info']['theme']['row_on']);
- $t->set_var('row_off', $GLOBALS['egw_info']['theme']['row_off']);
- $t->set_var('hidden_vars','');
- $t->pparse('out','header');
-
- $vars = $t->get_undefined('body');
-
- if ($GLOBALS['egw']->hooks->single('config',$appname)) // reload the config-values, they might have changed
- {
- $c->read_repository();
- }
- foreach($vars as $value)
- {
- $valarray = explode('_',$value);
- $type = array_shift($valarray);
- $newval = implode(' ',$valarray);
-
- switch ($type)
- {
- case 'lang':
- $t->set_var($value,lang($newval));
- break;
- case 'value':
- $newval = str_replace(' ','_',$newval);
- /* Don't show passwords in the form */
- if(strpos($value,'passwd') !== false || strpos($value,'password') !== false || strpos($value,'root_pw') !== false)
- {
- $t->set_var($value,'');
- }
- else
- {
- $t->set_var($value,$c->config_data[$newval]);
- }
- break;
- /*
- case 'checked':
- $newval = str_replace(' ','_',$newval);
- if ($c->config_data[$newval])
- {
- $t->set_var($value,' checked');
- }
- else
- {
- $t->set_var($value,'');
- }
- break;
- */
- case 'selected':
- $configs = array();
- $config = '';
- $newvals = explode(' ',$newval);
- $setting = end($newvals);
- for ($i=0;$i<(count($newvals) - 1); $i++)
- {
- $configs[] = $newvals[$i];
- }
- $config = implode('_',$configs);
- /* echo $config . '=' . $c->config_data[$config]; */
- if ($c->config_data[$config] == $setting)
- {
- $t->set_var($value,' selected');
- }
- else
- {
- $t->set_var($value,'');
- }
- break;
- case 'hook':
- $newval = str_replace(' ','_',$newval);
- if(function_exists($newval))
- {
- $t->set_var($value,$newval($c->config_data));
- }
- else
- {
- $t->set_var($value,'');
- }
- break;
- case 'call': // eg. call_class::method or call_app.class.method
- $newval = str_replace(' ','_',$newval);
- $t->set_var($value,ExecMethod($newval,$c->config_data));
- break;
- default:
- $t->set_var($value,'');
- break;
- }
- }
-
- $t->pfp('out','body');
-
- $t->set_var('lang_submit', $GLOBALS['egw']->acl->check('site_config_access',2,'admin') ? lang('Cancel') : lang('Save'));
- $t->set_var('lang_cancel', lang('Cancel'));
- $t->pfp('out','footer');
}
- /**
- * applies stripslashes recursivly on each element of an array
- *
- * @param array &$var
- * @return array
- */
- function array_stripslashes($var)
- {
- if (!is_array($var))
- {
- return stripslashes($var);
- }
- foreach($var as $key => $val)
- {
- $var[$key] = is_array($val) ? $this->array_stripslashes($val) : stripslashes($val);
- }
- return $var;
- }
+ $t->pfp('out','body');
+
+ $t->set_var('lang_submit', $GLOBALS['egw']->acl->check('site_config_access',2,'admin') ? lang('Cancel') : lang('Save'));
+ $t->set_var('lang_cancel', lang('Cancel'));
+ $t->pfp('out','footer');
}
-?>
+}
From f185382b0ac2d4de79b1c737840727ef9b12a313 Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Thu, 29 Jul 2010 19:09:55 +0000
Subject: [PATCH 08/88] fixed not working link_query call to static callback
eg. "someclass::somemethod"
---
phpgwapi/inc/class.egw_link.inc.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/phpgwapi/inc/class.egw_link.inc.php b/phpgwapi/inc/class.egw_link.inc.php
index 0369ec457b..973fda4373 100644
--- a/phpgwapi/inc/class.egw_link.inc.php
+++ b/phpgwapi/inc/class.egw_link.inc.php
@@ -595,7 +595,7 @@ class egw_link extends solink
}
if(is_callable($method)) // php5.3+ call
{
- $result = $method($pattern,$options);
+ $result = call_user_func($method,$pattern,$options);
}
elseif(is_object($obj) && method_exists($obj,$method))
{
@@ -910,7 +910,7 @@ class egw_link extends solink
}
else
{
- error_log(__METHOD__."($app,$id,$file,$comment) Can't mkdir $entry_dir!");
+ error_log(__METHOD__."($app,$id,".array2string($file).",$comment) Can't mkdir $entry_dir!");
}
return $Ok ? -$stat['ino'] : false;
}
From 55463e493b331b08a7f7778bf84835d38d389f7b Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Fri, 30 Jul 2010 08:36:41 +0000
Subject: [PATCH 09/88] displaying label of link-entry widget as blur text
---
etemplate/inc/class.link_widget.inc.php | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/etemplate/inc/class.link_widget.inc.php b/etemplate/inc/class.link_widget.inc.php
index 6368dacc3e..32cb5f30ce 100644
--- a/etemplate/inc/class.link_widget.inc.php
+++ b/etemplate/inc/class.link_widget.inc.php
@@ -420,9 +420,11 @@ class link_widget
'no_app_sel' => !!$extension_data['app'],
'id' => is_array($value) ? $value['current'] : $id,
'query' => is_array($value) ? $value['query'] : '',
- 'blur' => count($options) == 1 ? lang($app) : lang('Search'),
+ 'blur' => $cell['label'] ? $cell['label'] :
+ (count($options) == 1 ? lang($app) : lang('Search')),
'extra' => $cell['onchange'] ? ','.self::AJAX_NEED_ONCHANGE : null, // store flang for ajax_search, to display extra_line required by onchange
);
+ $cell['label'] = ''; // displayed as blur text
if ($options) // limit the app-selectbox to the given apps
{
From 02d2ca5157169e768def2c4c386c8e9990038281 Mon Sep 17 00:00:00 2001
From: Klaus Leithoff
Date: Fri, 30 Jul 2010 10:19:06 +0000
Subject: [PATCH 10/88] improve the handling of overlong words, fix a bug
regarding the check of infolog_status existing in known status for the type
selected
---
infolog/inc/class.infolog_ui.inc.php | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/infolog/inc/class.infolog_ui.inc.php b/infolog/inc/class.infolog_ui.inc.php
index d9f081c740..6fcf638514 100644
--- a/infolog/inc/class.infolog_ui.inc.php
+++ b/infolog/inc/class.infolog_ui.inc.php
@@ -1013,7 +1013,7 @@ class infolog_ui
if ($content['js']) $content['js'] = '';
}
// on a type-change, set the status to the default status of that type, if the actual status is not supported by the new type
- if (!in_array($content['info_status'],$this->bo->status[$content['info_type']]))
+ if (!array_key_exists($content['info_status'],$this->bo->status[$content['info_type']]))
{
$content['info_status'] = $this->bo->status['defaults'][$content['info_type']];
if ($content['info_status'] != 'done') $content['info_datecompleted'] = '';
@@ -1041,14 +1041,21 @@ class infolog_ui
{
continue;
}
- foreach(array(',' => ', ', '.' => '. ') as $pattern => $replace) // set blank behind all , and .
+ $cont = split(' ', $content[$key]);
+ $ckarray = array();
+ foreach($cont as &$word)
{
- if(strpos($content[$key], $replace) === false)
+ // set blank behind all , and . if words are too long, apply wordwrap afterwards to make sure we get
+ if (strlen($word)>75)
{
- $content[$key] = str_replace($pattern, $replace, $content[$key]);
+ if (!(strpos($word,',')===false) && strpos($word,', ')===false) $word = str_replace(',',', ',$word);
+ if (!(strpos($word,'.')===false) && strpos($word,'. ')===false) $word = str_replace('.','. ',$word);
+ $word = wordwrap($word, 75, ' ', true);
}
+ $ckarray[] =$word;
}
- $content[$key] = wordwrap($content[$key], 75, ' ', true);
+ $content[$key] = join(' ',$ckarray);
+ unset($ckarray);
}
if (is_numeric($_REQUEST['cat_id']))
{
From 671313b3ea5088f60fb28b107615c5312c0b5391 Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Fri, 30 Jul 2010 13:38:49 +0000
Subject: [PATCH 11/88] quiten error_log if no CSS file for an app
---
phpgwapi/inc/class.egw_framework.inc.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/phpgwapi/inc/class.egw_framework.inc.php b/phpgwapi/inc/class.egw_framework.inc.php
index ed6cac8dea..604ac382eb 100644
--- a/phpgwapi/inc/class.egw_framework.inc.php
+++ b/phpgwapi/inc/class.egw_framework.inc.php
@@ -1166,7 +1166,7 @@ abstract class egw_framework
}
if (!file_exists(EGW_SERVER_ROOT.$path))
{
- error_log(__METHOD__."($app,$name) $path NOT found!");
+ //error_log(__METHOD__."($app,$name) $path NOT found!");
return false;
}
if (!in_array($path,self::$css_include_files))
From 4fc00c03aef1bc5afa3376ef50807401d7fd0bec Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Fri, 30 Jul 2010 14:02:19 +0000
Subject: [PATCH 12/88] forgot to translate the label
---
etemplate/inc/class.link_widget.inc.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/etemplate/inc/class.link_widget.inc.php b/etemplate/inc/class.link_widget.inc.php
index 32cb5f30ce..726040b406 100644
--- a/etemplate/inc/class.link_widget.inc.php
+++ b/etemplate/inc/class.link_widget.inc.php
@@ -420,7 +420,7 @@ class link_widget
'no_app_sel' => !!$extension_data['app'],
'id' => is_array($value) ? $value['current'] : $id,
'query' => is_array($value) ? $value['query'] : '',
- 'blur' => $cell['label'] ? $cell['label'] :
+ 'blur' => $cell['label'] ? lang($cell['label']) :
(count($options) == 1 ? lang($app) : lang('Search')),
'extra' => $cell['onchange'] ? ','.self::AJAX_NEED_ONCHANGE : null, // store flang for ajax_search, to display extra_line required by onchange
);
From 3dc949d08e09518fdca5a3f70596cd16314af294 Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Fri, 30 Jul 2010 15:27:51 +0000
Subject: [PATCH 13/88] display readonly link-entry widgets as links to the
linked entry
---
etemplate/inc/class.link_widget.inc.php | 56 ++++++++++++++++++-------
1 file changed, 40 insertions(+), 16 deletions(-)
diff --git a/etemplate/inc/class.link_widget.inc.php b/etemplate/inc/class.link_widget.inc.php
index 726040b406..7d46c2d415 100644
--- a/etemplate/inc/class.link_widget.inc.php
+++ b/etemplate/inc/class.link_widget.inc.php
@@ -219,22 +219,7 @@ class link_widget
{
foreach ($value as $link)
{
- $options .= " onMouseOver=\"self.status='".addslashes(html::htmlspecialchars($help))."'; return true;\"";
- $options .= " onMouseOut=\"self.status=''; return true;\"";
-
- if (($popup = egw_link::is_popup($link['app'],'view')))
- {
- list($w,$h) = explode('x',$popup);
- $options = ' onclick="window.open(this,this.target,\'width='.(int)$w.',height='.(int)$h.',location=no,menubar=no,toolbar=no,scrollbars=yes,status=yes\'); return false;"';
- }
- elseif (etemplate::$request->output_mode == 2 || // we are in a popup
- $link['app'] == egw_link::VFS_APPNAME) // or it's a link to an attachment
- {
- $options = ' target="_blank"';
- }
- $str .= ($str !== '' ? ', ' : '') . html::a_href(
- html::htmlspecialchars(egw_link::title($link['app'],$link['id'])),
- egw_link::view($link['app'],$link['id'],$link),'',$options);
+ $str .= ($str !== '' ? ', ' : '') . self::link2a_href($link,$help);
}
}
$cell['type'] = 'html';
@@ -341,6 +326,15 @@ class link_widget
break;
case 'link-entry':
+ if ($cell['readonly'] || $readonlys)
+ {
+ if(!is_array($value)) $value = array('app' => $cell['size'],'id' => $value);
+ $value = self::link2a_href($value,$help);
+ $cell['type'] = 'html';
+ $cell['readonly'] = true;
+ $extension_data = null;
+ return true;
+ }
$GLOBALS['egw_info']['flags']['include_xajax'] = true;
$tpl = new etemplate('etemplate.link_widget.entry');
$options = $cell['size'] ? explode(',',$cell['size']) : array();
@@ -470,6 +464,36 @@ class link_widget
return True; // extra Label is ok
}
+ /**
+ * return a_href to view a linked entry
+ *
+ * @param array $link array with values for keys 'id' and 'app'
+ * @param string $help=''
+ * @return string
+ */
+ static function link2a_href(array $link,$help='')
+ {
+ if (($popup = egw_link::is_popup($link['app'],'view')))
+ {
+ list($w,$h) = explode('x',$popup);
+ $options = ' onclick="window.open(this,this.target,\'width='.(int)$w.',height='.(int)$h.',location=no,menubar=no,toolbar=no,scrollbars=yes,status=yes\'); return false;"';
+ }
+ elseif (etemplate::$request->output_mode == 2 || // we are in a popup
+ $link['app'] == egw_link::VFS_APPNAME || // or it's a link to an attachment
+ ($target = egw_link::get_registry($link['app'],'view_target'))) // or explicit target set
+ {
+ $options = ' target="'.($target ? $target : '_blank').'"';
+ }
+ if ($help)
+ {
+ $options .= " onMouseOver=\"self.status='".addslashes(html::htmlspecialchars($help))."'; return true;\"";
+ $options .= " onMouseOut=\"self.status=''; return true;\"";
+ }
+ return html::a_href(
+ html::htmlspecialchars(egw_link::title($link['app'],$link['id'])),
+ egw_link::view($link['app'],$link['id'],$link),'',$options);
+ }
+
/**
* postprocessing method, called after the submission of the form
*
From 49db0c8838eb559bf45183befcd66118f4cc2883 Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Fri, 30 Jul 2010 15:30:46 +0000
Subject: [PATCH 14/88] allow to optional specify a database object (to access
addressbooks in other databases)
---
addressbook/inc/class.addressbook_bo.inc.php | 13 ++++++++++---
addressbook/inc/class.addressbook_so.inc.php | 16 +++++++++++-----
addressbook/inc/class.addressbook_sql.inc.php | 12 +++++++++---
3 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/addressbook/inc/class.addressbook_bo.inc.php b/addressbook/inc/class.addressbook_bo.inc.php
index a91c199aa8..7be00f21d6 100755
--- a/addressbook/inc/class.addressbook_bo.inc.php
+++ b/addressbook/inc/class.addressbook_bo.inc.php
@@ -7,7 +7,7 @@
* @author Ralf Becker
* @author Joerg Lehrke
* @package addressbook
- * @copyright (c) 2005-8 by Ralf Becker
+ * @copyright (c) 2005-10 by Ralf Becker
* @copyright (c) 2005/6 by Cornelius Weiss
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
@@ -144,9 +144,15 @@ class addressbook_bo extends addressbook_so
*/
protected $delete_history = '';
- function __construct($contact_app='addressbook')
+ /**
+ * Constructor
+ *
+ * @param string $contact_app='addressbook' used for acl->get_grants()
+ * @param egw_db $db=null
+ */
+ function __construct($contact_app='addressbook',egw_db $db=null)
{
- parent::__construct($contact_app);
+ parent::__construct($contact_app,$db);
if ($this->log)
{
$this->logfile = $GLOBALS['egw_info']['server']['temp_dir'].'/log-addressbook_bo';
@@ -1207,6 +1213,7 @@ class addressbook_bo extends addressbook_so
if($options['start'] || $options['num_rows']) {
$limit = array($options['start'], $options['num_rows']);
}
+ $filter = (array)$options['filter'];
if ($GLOBALS['egw_info']['user']['preferences']['addressbook']['hide_accounts']) $filter['account_id'] = null;
if (($contacts = parent::search($criteria,false,'org_name,n_family,n_given,cat_id','','%',false,'OR', $limit, $filter)))
{
diff --git a/addressbook/inc/class.addressbook_so.inc.php b/addressbook/inc/class.addressbook_so.inc.php
index d76d1fff02..60223ea617 100755
--- a/addressbook/inc/class.addressbook_so.inc.php
+++ b/addressbook/inc/class.addressbook_so.inc.php
@@ -6,7 +6,7 @@
* @author Cornelius Weiss
* @author Ralf Becker
* @package addressbook
- * @copyright (c) 2005-8 by Ralf Becker
+ * @copyright (c) 2005-10 by Ralf Becker
* @copyright (c) 2005/6 by Cornelius Weiss
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
@@ -205,9 +205,15 @@ class addressbook_so
var $sodistrib_list;
var $backend;
- function __construct($contact_app='addressbook')
+ /**
+ * Constructor
+ *
+ * @param string $contact_app='addressbook' used for acl->get_grants()
+ * @param egw_db $db=null
+ */
+ function __construct($contact_app='addressbook',egw_db $db=null)
{
- $this->db = $GLOBALS['egw']->db;
+ $this->db = is_null($db) ? $GLOBALS['egw']->db : $db;
$this->user = $GLOBALS['egw_info']['user']['account_id'];
$this->memberships = $GLOBALS['egw']->accounts->memberships($this->user,true);
@@ -244,7 +250,7 @@ class addressbook_so
{
$this->contact_repository = 'sql-ldap';
}
- $this->somain = new addressbook_sql();
+ $this->somain = new addressbook_sql($db);
if ($this->user) // not set eg. in setup
{
@@ -303,7 +309,7 @@ class addressbook_so
}
else
{
- $this->soextra = new addressbook_sql();
+ $this->soextra = new addressbook_sql($db);
}
$this->customfields = config::get_customfields('addressbook');
diff --git a/addressbook/inc/class.addressbook_sql.inc.php b/addressbook/inc/class.addressbook_sql.inc.php
index 56d8840235..4a8cb91622 100644
--- a/addressbook/inc/class.addressbook_sql.inc.php
+++ b/addressbook/inc/class.addressbook_sql.inc.php
@@ -5,7 +5,7 @@
* @link http://www.egroupware.org
* @author Ralf Becker
* @package addressbook
- * @copyright (c) 2006-8 by Ralf Becker
+ * @copyright (c) 2006-10 by Ralf Becker
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
@@ -54,9 +54,15 @@ class addressbook_sql extends so_sql_cf
*/
var $ab2list_table = 'egw_addressbook2list';
- function __construct()
+ /**
+ * Constructor
+ *
+ * @param egw_db $db=null
+ */
+ function __construct(egw_db $db=null)
{
- parent::__construct('phpgwapi','egw_addressbook','egw_addressbook_extra','contact_');
+ parent::__construct('phpgwapi','egw_addressbook','egw_addressbook_extra','contact_',
+ $extra_key='_name',$extra_value='_value',$extra_id='_id',$db);
// Get custom fields from addressbook instead of phpgwapi
$this->customfields = config::get_customfields('addressbook');
From 4325167239e4834b6b3ee66cd95f1a02da691261 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hans-J=C3=BCrgen=20Tappe?=
Date: Sat, 31 Jul 2010 06:11:05 +0000
Subject: [PATCH 15/88] Fix an invalid link definition in the adodb
documentation.
---
phpgwapi/inc/adodb/docs/docs-adodb.htm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/phpgwapi/inc/adodb/docs/docs-adodb.htm b/phpgwapi/inc/adodb/docs/docs-adodb.htm
index b4b4f000c0..8b09359c45 100644
--- a/phpgwapi/inc/adodb/docs/docs-adodb.htm
+++ b/phpgwapi/inc/adodb/docs/docs-adodb.htm
@@ -1266,7 +1266,7 @@ else {
the last error or use the PEAR_ERROR_DIE technique.
MetaError and MetaErrMsg
-
If you need error messages that work across multiple databases, then use MetaError(), which returns a virtualized error number, based on PEAR DB's error number system, and MetaErrMsg().
+
If you need error messages that work across multiple databases, then use MetaError(), which returns a virtualized error number, based on PEAR DB's error number system, and MetaErrMsg().
Error Messages
Error messages are outputted using the static method ADOConnnection::outp($msg,$newline=true).
From c6a4c409349205ad462b3edc16ffdba7f5effb16 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hans-J=C3=BCrgen=20Tappe?=
Date: Sat, 31 Jul 2010 07:03:15 +0000
Subject: [PATCH 16/88] Fix HTML code in etemplate documentation: - Close 'li'
tags - Close 'lt' tags by 'gt' tags - Convert ampersands to 'amp' tags.
---
etemplate/doc/reference.html | 458 +++++++++++++++++------------------
1 file changed, 229 insertions(+), 229 deletions(-)
diff --git a/etemplate/doc/reference.html b/etemplate/doc/reference.html
index 5435a5871a..4800a1fd98 100644
--- a/etemplate/doc/reference.html
+++ b/etemplate/doc/reference.html
@@ -25,9 +25,9 @@ there if your are not familiar with the overal concept.
There are two possibilities now to create an eTemplate:
Use the eTemplate-Editor (as descript in the Tutorial) to interactivly
- design your template.
+ design your template.
Write a xml-file in a Syntax similar to XUL (the mozilla UI-interface definition language) and import
- it into the database with the eTemplate-Editor
+ it into the database with the eTemplate-Editor
The xml-interface to the eTemplates
@@ -36,58 +36,58 @@ an eTemplate from the example app in the Tutorial
(here are screenshots of the template in the editor and the
show-function):
-<?xml version="1.0"?>
-<!-- $Id$ -->
-<overlay>
- <template id="et_media.edit" template="" lang="" group="" version="">
- <grid width="100%">
- <columns>
- <column/>
- <column/>
- <column/>
- <column/>
- </columns>
- <rows>
- <row>
- <description options="ib" span="all" value="eTemplates MediaDB" no_lang="1" id="msg"/>
- </row>
- <row>
- <hrule span="all"/>
- </row>
- <row>
- <description span="all"/>
- </row>
- <row>
- <description value="Name"/>
- <textbox size="100" maxlength="100" span="all" id="name" statustext="here goes the name of the publication / record"/>
- </row>
- <row>
- <description value="Author"/>
- <textbox size="100" maxlength="100" span="all" id="author" statustext="please use Name, First Name"/>
- </row>
- <row>
- <description value="Type"/>
- <menulist span="all" statustext="select the type fitting most">
- <menupopup id="type"/>
- </menulist>
- </row>
- <row>
- <description value="Description"/>
- <textbox ="" cols="3" rows="100" span="all" id="descr" statustext="we have a fulltext search using that description"/>
- </row>
- <row>
- <description span="all"/>
- </row>
- <row>
- <button label="Read" id="read" statustext="reads or searches for entries matching the criteria above"/>
- <button label="Save" id="save" statustext="saves the change to the db"/>
- <button label="Cancel" id="cancel" statustext="clears the form, without changing anything"/>
- <button label="Delete" id="delete" statustext="deletes an entry"/>
- </row>
- </rows>
- </grid>
- </template>
-</overlay>
+<?xml version="1.0"?>
+<!-- $Id$ -->
+<overlay>
+ <template id="et_media.edit" template="" lang="" group="" version="">
+ <grid width="100%">
+ <columns>
+ <column/>
+ <column/>
+ <column/>
+ <column/>
+ </columns>
+ <rows>
+ <row>
+ <description options="ib" span="all" value="eTemplates MediaDB" no_lang="1" id="msg"/>
+ </row>
+ <row>
+ <hrule span="all"/>
+ </row>
+ <row>
+ <description span="all"/>
+ </row>
+ <row>
+ <description value="Name"/>
+ <textbox size="100" maxlength="100" span="all" id="name" statustext="here goes the name of the publication / record"/>
+ </row>
+ <row>
+ <description value="Author"/>
+ <textbox size="100" maxlength="100" span="all" id="author" statustext="please use Name, First Name"/>
+ </row>
+ <row>
+ <description value="Type"/>
+ <menulist span="all" statustext="select the type fitting most">
+ <menupopup id="type"/>
+ </menulist>
+ </row>
+ <row>
+ <description value="Description"/>
+ <textbox ="" cols="3" rows="100" span="all" id="descr" statustext="we have a fulltext search using that description"/>
+ </row>
+ <row>
+ <description span="all"/>
+ </row>
+ <row>
+ <button label="Read" id="read" statustext="reads or searches for entries matching the criteria above"/>
+ <button label="Save" id="save" statustext="saves the change to the db"/>
+ <button label="Cancel" id="cancel" statustext="clears the form, without changing anything"/>
+ <button label="Delete" id="delete" statustext="deletes an entry"/>
+ </row>
+ </rows>
+ </grid>
+ </template>
+</overlay>
The tags / widget-names and attributes / parameters used are as close as possible to XUL. For more
information about XUL refer to www.xulplanet.com or the Mozilla docs
@@ -95,22 +95,22 @@ information about XUL refer to www.xulplanet.
@@ -161,12 +161,12 @@ implement only a subset of XUL. Here are the main differences:
$cont
the content-array the (sub-)template, on auto-repeated row's this could eg. be
used to generate button-names with id-values in it: "del[$cont[id]]" expands to "del[123]",
- if $cont = array('id' => 123)
+ if $cont = array('id' => 123)
$row_cont
the sub-array indexed by $row of the content-array, on auto-repeated row's this could eg. be
used to generate button-names with id-values in it: "del[$row_cont[id]]" expands to "del[123]",
- if $cont = array('1' => array('id' => 123),'2' => array('id' => 456)) and $row = 1
+ if $cont = array('1' => array('id' => 123),'2' => array('id' => 456)) and $row = 1
$c_ $col_ $row_
are the respective values of the previous template-inclusion,
@@ -375,7 +375,7 @@ implement only a subset of XUL. Here are the main differences:
Label
-
<description />
+
<description />
yes
label
@@ -385,7 +385,7 @@ implement only a subset of XUL. Here are the main differences:
Options has 5 comma-separated fields: 1. if it contains a 'i' and/or a 'b' the content (not the label) is rendered
in italic and/or bold.
- 2. link: if set to a menuaction string or an array with get-params (via the content-arry),
+ 2. link: if set to a menuaction string or an array with get-params (via the content-arry),
a link to that methode = app.class.method is put around the label 3. if set URLs in the content get activated 4. name of form-element the label is for: gives focus to that element if the label gets clicked
@@ -396,12 +396,12 @@ implement only a subset of XUL. Here are the main differences:
Text
-
<textbox />
+
<textbox />
yes
text
a single-line input field for text
- In the html-UI this is rendered as <input ...>
+ In the html-UI this is rendered as <input ...>
Options has 3 comma-separated fields:
xml: size: the length in chars of the input-field
xml: maxlength: the maximum length of the input
@@ -410,12 +410,12 @@ implement only a subset of XUL. Here are the main differences:
Integer
-
<textbox type="int" />
+
<textbox type="int" />
?
int
a input-field to enter an integer
- In the html-UI this is rendered as <input ...>. The input-validation is done at the moment only on server-side,
+ In the html-UI this is rendered as <input ...>. The input-validation is done at the moment only on server-side,
clientside validation and input-restriction to only numbers is planed.
Options has 3 comma-separated fields:
xml: min: minimum value, default none, empty values are Ok, as long as needed is not set
@@ -425,12 +425,12 @@ implement only a subset of XUL. Here are the main differences:
Float
-
<textbox type="float"/>
+
<textbox type="float"/>
?
float
a input-field to enter a float
- In the html-UI this is rendered as <input ...>. The input-validation is done at the moment only on server-side,
+ In the html-UI this is rendered as <input ...>. The input-validation is done at the moment only on server-side,
clientside validation and input-restriction to only numbers is planed.
Options has 4 comma-separated fields:
xml: min: minimum value, default none, empty values are Ok, as long as needed is not set
@@ -441,12 +441,12 @@ implement only a subset of XUL. Here are the main differences:
Textarea
-
<textbox multiline="true" />
+
<textbox multiline="true" />
yes
textarea
a multiline input-field for text
- In the html-UI this is rendered as <textarea ...>.
+ In the html-UI this is rendered as <textarea ...>.
Options has 2 comma-separated fields:
xml: cols: the width of the field in chars
xml: rows: the number of rows
@@ -454,12 +454,12 @@ implement only a subset of XUL. Here are the main differences:
Formatted Text (HTML)
-
<htmlarea />
+
<htmlarea />
no
htmlarea
a multiline input-field for formatted (HTML) text
- In the html-UI this is rendered as <textarea ...> and the HTMLarea javascript editor is used.
+ In the html-UI this is rendered as <textarea ...> and the HTMLarea javascript editor is used.
Options has 5 comma-separated fields:
xml: mode: {ascii|simple|extended|advanced}
xml: height: height of htmlarea
@@ -470,15 +470,15 @@ implement only a subset of XUL. Here are the main differences:
Checkbox
-
<checkbox />
+
<checkbox />
yes
checkbox
a widget that can be checked or unchecked
- In the html-UI this is rendered as <input type="checkbox" ...>.
-
Multiple checkboxes can have an identical name ending with [], in that case the value will be an array with the set_value's
- of the checked boxes. You can use a button with a custom javascript onclick action of eg.
- "toggle_all(this.form,form::name('nm[rows][checkbox][]')); return false;" and a set_value of "$row_cont[id]" to toggle
+ In the html-UI this is rendered as <input type="checkbox" ...>.
+
Multiple checkboxes can have an identical name ending with [], in that case the value will be an array with the set_value's
+ of the checked boxes. You can use a button with a custom javascript onclick action of eg.
+ "toggle_all(this.form,form::name('nm[rows][checkbox][]')); return false;" and a set_value of "$row_cont[id]" to toggle
all checkboxes in the lines of a nextmatch widget. The form::name( ) function translate the name used
in the template into the name used in the form. If the button is an image-button, check needed to render it as button
and not as image with link, which has no this.form property!
@@ -491,12 +491,12 @@ implement only a subset of XUL. Here are the main differences:
Radiobutton
-
<radio />
+
<radio />
?
radio
a widget in a group of which only one can be checked
- In the html-UI this is rendered as <input type="radio" ...>
+ In the html-UI this is rendered as <input type="radio" ...>
Unlike XUL (and like html) the radio-buttons are grouped by giving them the same name / id. Options: [set_value][,ro_true[,ro_false]] set_value: which value in the content represents the checked state, default=1
@@ -507,15 +507,15 @@ implement only a subset of XUL. Here are the main differences:
a button to submit the form / end the dialog
- In the html-UI this is rendered as <input type="submit" ...>.
+ In the html-UI this is rendered as <input type="submit" ...>.
If a button is set readonly (via seting its id in the $readonlys array passed to exec) it is not rendered
at all (if no ro_image is given), like it would be disabled.
- needed: if set and the user has JavaScript enabled the button is renderd as a link around the label
+ needed: if set and the user has JavaScript enabled the button is renderd as a link around the label
and a hidden input to set id if the link is clicked. Options xml: image, ro_image: Image to use instead of a Button with a label. There will
be no button around the image. If a ro_image is given (separated by a comma in the editors options)
@@ -523,35 +523,35 @@ implement only a subset of XUL. Here are the main differences:
onclick: specify some java-script to be called if the button gets pressed/clicked:
a) general javascript: "window.close();"
b) confirmation: "return window.confirm('');" (message get run through lang()!)
- c) popup: app.class.func&id=$cont[id],target(default _blank),width (default 600),height (default 450)
- You can use $cont[] or $row_cont[] (note no quotes!) to pass further information to the popup
+ c) popup: app.class.func&id=$cont[id],target(default _blank),width (default 600),height (default 450)
+ You can use $cont[] or $row_cont[] (note no quotes!) to pass further information to the popup
via the content array.)
a button
- Same as Submitbutton but it is rendered as <input type="button" ...> in the html-UI
+ Same as Submitbutton but it is rendered as <input type="button" ...> in the html-UI
Horizonatal Rule
-
<hrule />
+
<hrule />
no
hrule
a horizontal rule / line
- In the html-UI this is rendered as <hr ...>
+ In the html-UI this is rendered as <hr ...> Options can contain a width of the rule, default is 100%
Template
-
<template id="app.name" content="subarr" />
+
<template id="app.name" content="subarr" />
yes
template
@@ -565,7 +565,7 @@ implement only a subset of XUL. Here are the main differences:
Image
-
<image src="foo.gif" label="Get a foo" options="app.class.method" />
+
<image src="foo.gif" label="Get a foo" options="app.class.method" />
yes
image
@@ -582,16 +582,16 @@ implement only a subset of XUL. Here are the main differences:
@@ -601,11 +601,11 @@ implement only a subset of XUL. Here are the main differences:
shows a selectbox
The content of the selectbox / the options have to be in an array which can be in 2 locations:
-
in $content["options-$name"]
+
in $content["options-$name"]
or in an separate array only for select-box-options under the index name, this array is passed
- to the exec or show function of the etemplate-class
+ to the exec or show function of the etemplate-class
- Optionsin the editor: if set and > 1 the selectbox is a multiselection with options number of lines
+ Optionsin the editor: if set and > 1 the selectbox is a multiselection with options number of lines
xml: rows: only for <listbox>: number of rows to show
xml options: only for <menupopup/>: textual label for a first Row, e.g. 'All' or 'None'
(id will be ''), additional attr see sub-types
@@ -621,7 +621,7 @@ implement only a subset of XUL. Here are the main differences:
as you expect by the name select-year, select-month, select-day:
options for year: ,start,end (start and end can be a number of
- years from now or if > 100 a absolut year)
+ years from now or if > 100 a absolut year) select-number:
Select a number out of a range specified by the options-field:
,{start (default=1)},{end (incl., default=10)},{decrement (default={padding zeros}1)},{suffix}.
@@ -636,7 +636,7 @@ implement only a subset of XUL. Here are the main differences:
FileUpload
- <file id="name"/>
+ <file id="name"/>
no
file
@@ -649,33 +649,33 @@ implement only a subset of XUL. Here are the main differences:
Date-/Time-input via selectboxes or a field for the year
The order of the input-fields is determined by the prefs of the user.
- Options: [datetime-storage-format] [,&1=year-no-selectbox|&2=today-button|&4=one-min-steps|&8=ro-suppress-0h0]
- datetime-storage-format is the format, in which the date is stored in the variable:
- empty means an unix-timestamp (in GMT), or a string containing the letters Y, m,
- d, H, i plus separators, eg. 'Y-m-d': 2002-12-31. The storage format
+ Options: [datetime-storage-format] [,&1=year-no-selectbox|&2=today-button|&4=one-min-steps|&8=ro-suppress-0h0]
+ datetime-storage-format is the format, in which the date is stored in the variable:
+ empty means an unix-timestamp (in GMT), or a string containing the letters Y, m,
+ d, H, i plus separators, eg. 'Y-m-d': 2002-12-31. The storage format
for times is always 24h or timestamp with date 1.1.1970 (if no date used). (This has nothing
to do with the format of the display, which is only determined by the users preferences.)
- year-no-selectbox if set (&1) an int-widget (input-field) is used instead of a
+ year-no-selectbox if set (&1) an int-widget (input-field) is used instead of a
select-year widget.
- today-button: if set (&2) a [Today] button is displayed which sets the fields to
+ today-button: if set (&2) a [Today] button is displayed which sets the fields to
the up-to-date date (via javascript)
- one-min-steps: if set (&4) the minute-selectbox uses one minutes steps, default 5min steps
- ro-suppress-0h0: if set (&8) the time is suppressed for readonly and a time of 0h0
- day-of-week-prefix: if set (&16) readonly dates get prefixed with the day of week
- week-number-prefix: if set (&32) readonly dates get prefixed with lang('Wk') & weeknumber
+ one-min-steps: if set (&4) the minute-selectbox uses one minutes steps, default 5min steps
+ ro-suppress-0h0: if set (&8) the time is suppressed for readonly and a time of 0h0
+ day-of-week-prefix: if set (&16) readonly dates get prefixed with the day of week
+ week-number-prefix: if set (&32) readonly dates get prefixed with lang('Wk') & weeknumber Sub-widgets: date-time: a date and a time and date-timeonly or date-houronly: only a time / hour
- These widgets allow the input of times too or only, they use 12h am/pm or 24h format as
+ These widgets allow the input of times too or only, they use 12h am/pm or 24h format as
specified in the user prefs. If readonly is set, this widget can be used to display a date, without the need to convert it.
Duration a floating point input with an optional selectbox for the unit (hours or days)
@@ -689,18 +689,18 @@ implement only a subset of XUL. Here are the main differences:
@@ -805,57 +805,57 @@ implement only a subset of XUL. Here are the main differences:
$content[$id] = array( // I = value set by the app, 0 = value on return / output
- 'get_rows' => // I method/callback to request the data for the rows eg. 'notes.bo.get_rows'
- 'filter_label' => // I label for filter (optional)
- 'filter_help' => // I help-msg for filter (optional)
- 'no_filter' => True// I disable the 1. filter
- 'no_filter2' => True// I disable the 2. filter (params are the same as for filter)
- 'no_cat' => True// I disable the cat-selectbox
- 'cat_app' => // I application the cat's should be from, default app in get_rows
- 'template' => // I template to use for the rows, if not set via options
- 'header_left' => // I template to show left of the range-value, left-aligned (optional)
- 'header_right' => // I template to show right of the range-value, right-aligned (optional)
- 'bottom_too' => True// I show the nextmatch-line (arrows, filters, search, ...) again after the rows
- 'never_hide' => True// I never hide the nextmatch-line if less then maxmatch entrie
- 'lettersearch' => True// I show a lettersearch
- 'searchletter' => // I0 active letter of the lettersearch or false for [all]
- 'start' => // IO position in list
- 'num_rows' => // IO number of rows to show, defaults to maxmatches from the general prefs
- 'cat_id' => // IO category, if not 'no_cat' => True
- 'search' => // IO search pattern
- 'order' => // IO name of the column to sort after (optional for the sortheaders)
- 'sort' => // IO direction of the sort: 'ASC' or 'DESC'
- 'col_filter' => // IO array of column-name value pairs (optional for the filterheaders)
- 'filter' => // IO filter, if not 'no_filter' => True
- 'filter_no_lang' => True// I set no_lang for filter (=dont translate the options)
- 'filter_onchange'=> 'this.form.submit();'// I onChange action for filter, default: this.form.submit();
- 'filter2' => // IO filter2, if not 'no_filter2' => True
- 'filter2_no_lang'=> True// I set no_lang for filter2 (=dont translate the options)
- 'filter2_onchange'=> 'this.form.submit();'// I onChange action for filter, default: this.form.submit();
- 'rows' => // O content set by callback
- 'total' => // O the total number of entries
- 'sel_options' => // O additional or changed sel_options set by the callback and merged into $tmpl->sel_options
- 'no_columnselection' => // I turns off the columnselection completly, turned on by default
- 'columnselection-pref' => // I name of the preference (plus 'nextmatch-' prefix), default = template-name
- 'default_cols' => // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
- 'options-selectcols' => // I array with name/label pairs for the column-selection, this gets autodetected by default.
- A name => false hides the column from the column-selection.
+ 'get_rows' => // I method/callback to request the data for the rows eg. 'notes.bo.get_rows'
+ 'filter_label' => // I label for filter (optional)
+ 'filter_help' => // I help-msg for filter (optional)
+ 'no_filter' => True// I disable the 1. filter
+ 'no_filter2' => True// I disable the 2. filter (params are the same as for filter)
+ 'no_cat' => True// I disable the cat-selectbox
+ 'cat_app' => // I application the cat's should be from, default app in get_rows
+ 'template' => // I template to use for the rows, if not set via options
+ 'header_left' => // I template to show left of the range-value, left-aligned (optional)
+ 'header_right' => // I template to show right of the range-value, right-aligned (optional)
+ 'bottom_too' => True// I show the nextmatch-line (arrows, filters, search, ...) again after the rows
+ 'never_hide' => True// I never hide the nextmatch-line if less then maxmatch entrie
+ 'lettersearch' => True// I show a lettersearch
+ 'searchletter' => // I0 active letter of the lettersearch or false for [all]
+ 'start' => // IO position in list
+ 'num_rows' => // IO number of rows to show, defaults to maxmatches from the general prefs
+ 'cat_id' => // IO category, if not 'no_cat' => True
+ 'search' => // IO search pattern
+ 'order' => // IO name of the column to sort after (optional for the sortheaders)
+ 'sort' => // IO direction of the sort: 'ASC' or 'DESC'
+ 'col_filter' => // IO array of column-name value pairs (optional for the filterheaders)
+ 'filter' => // IO filter, if not 'no_filter' => True
+ 'filter_no_lang' => True// I set no_lang for filter (=dont translate the options)
+ 'filter_onchange'=> 'this.form.submit();'// I onChange action for filter, default: this.form.submit();
+ 'filter2' => // IO filter2, if not 'no_filter2' => True
+ 'filter2_no_lang'=> True// I set no_lang for filter2 (=dont translate the options)
+ 'filter2_onchange'=> 'this.form.submit();'// I onChange action for filter, default: this.form.submit();
+ 'rows' => // O content set by callback
+ 'total' => // O the total number of entries
+ 'sel_options' => // O additional or changed sel_options set by the callback and merged into $tmpl->sel_options
+ 'no_columnselection' => // I turns off the columnselection completly, turned on by default
+ 'columnselection-pref' => // I name of the preference (plus 'nextmatch-' prefix), default = template-name
+ 'default_cols' => // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
+ 'options-selectcols' => // I array with name/label pairs for the column-selection, this gets autodetected by default.
+ A name => false hides the column from the column-selection.
To completely hide a column, you need to use the Grid column attributes - disabled in eTemplate, and have your get_rows function
- set a key that matches.
- For example, if your column name is private_phone, use the eTemplate editor to set column disabled to @no_private_phone,
+ set a key that matches.
+ For example, if your column name is private_phone, use the eTemplate editor to set column disabled to @no_private_phone,
and have your get_rows function set $rows['no_private_phone'] = true (or some calculated condition).
- 'return' => // IO allows to return something from the get_rows function if $query is a var-param!
- 'csv_fields' => // I false=disable csv export, true or unset=enable it with auto-detected fieldnames,
- or array with name=>label or name=>array('label'=>label,'type'=>type) pairs (type is a eT widget-type)
+ 'return' => // IO allows to return something from the get_rows function if $query is a var-param!
+ 'csv_fields' => // I false=disable csv export, true or unset=enable it with auto-detected fieldnames,
+ or array with name=>label or name=>array('label'=>label,'type'=>type) pairs (type is a eT widget-type)
);
/*
* example: the get_rows function from notes.bo.get_rows (has to be in public_functions !)
*/
-function get_rows($query,&$rows,&$readonlys)
+function get_rows($query,&$rows,&$readonlys)
{
- $rows = $this->read($query['start'],$query['search'],$query['filter'],$query['cat_id']);
+ $rows = $this->read($query['start'],$query['search'],$query['filter'],$query['cat_id']);
if (!is_array($rows))
{
$rows = array( );
@@ -863,16 +863,16 @@ function get_rows($query,&$rows,&$readonlys)
$readonlys = array( ); // set readonlys to enable/disable our edit/delete-buttons
while (list($n,$note) = each($rows))
{
- if (!$this->check_perms($this->grants[$note['owner_id']],PHPGW_ACL_EDIT))
+ if (!$this->check_perms($this->grants[$note['owner_id']],PHPGW_ACL_EDIT))
{
$readonlys["edit[$note[id]]"] = True;
}
- if (!$this->check_perms($this->grants[$note['owner_id']],PHPGW_ACL_DELETE))
+ if (!$this->check_perms($this->grants[$note['owner_id']],PHPGW_ACL_DELETE))
{
$readonlys["delete[$note[id]]"] = True;
}
}
- return $this->total_records;
+ return $this->total_records;
}
/*
@@ -882,35 +882,35 @@ function index($content = 0)
{
if (!is_array($content))
{
- $content = array('nm' => $this->session_data); // restore settings from the session
+ $content = array('nm' => $this->session_data); // restore settings from the session
}
if (isset($content['nm']['rows'])) // one of the buttons in the rows is pressed
{
- $this->session_data = $values['nm']; // save the settings in the session
- unset($this->session_data['rows']); // we dont want to save the content of the rows
- $this->save_sessiondata();
+ $this->session_data = $values['nm']; // save the settings in the session
+ unset($this->session_data['rows']); // we dont want to save the content of the rows
+ $this->save_sessiondata();
if (isset($values['nm']['rows']['edit']))
{
list($id) = each($values['nm']['rows']['edit']);
- return $this->edit($id);
+ return $this->edit($id);
}
elseif (isset($values['nm']['rows']['delete']))
{
list($id) = each($values['nm']['rows']['delete']);
- return $this->delete($id);
+ return $this->delete($id);
}
}
$values['nm']['options-filter'] = array ( // set up the data for our filter
- 'all' => 'Show all',
- 'public' => 'Only yours',
- 'private' => 'Private'
+ 'all' => 'Show all',
+ 'public' => 'Only yours',
+ 'private' => 'Private'
);
$values['nm']['get_rows'] = 'notes.bo.get_rows';
$values['nm']['no_filter2'] = True; // disable the 2. filter
- $this->tpl->read('notes.index');
- $this->tpl->exec('notes.ui.index',$values);
+ $this->tpl->read('notes.index');
+ $this->tpl->exec('notes.ui.index',$values);
}
@@ -918,10 +918,10 @@ function index($content = 0)
@@ -930,7 +930,7 @@ function index($content = 0)
nextmatch-sortheader
Widget to be placed as a colum-header in the headerline of a nextmatch-template. It allows, by clicking on it,
to order the lines of the nextmatch after a certain column. The column-name is given as name (xml:id) the
- label is show as a link of button (no javascript). One can specify a default sorting: options={DESC|ASC} (default=ASC),
+ label is show as a link of button (no javascript). One can specify a default sorting: options={DESC|ASC} (default=ASC),
to be used when the header is clicked for the first time. Consecutive click on the header change the sorting
direction, indicated by a little up- or down-arrow. As a second comma-separated parameter one can specify an extra
label for the column-selection.
@@ -943,7 +943,7 @@ function index($content = 0)
The custom filterheader allows to use other (select-)widgets to filter by them. They have to be specified as the first
parameter in the comma-separated options attribute. In all other aspects it is identical to the filterheader.
nextmatch-accountfilter
- The Accountfilter allows to select users (via the prefered user-selection-method) to filter by them.
+ The Accountfilter allows to select users (via the prefered user-selection-method) to filter by them.
It's identical to a nextmatch-customfilter with options="select-account".
nextmatch-header
Just a header-label for a nextmatch column. It names the column for the column for the column-selection (in difference to the label).
@@ -956,9 +956,9 @@ function index($content = 0)
LinkWidgets
- <link type="link-to" id="name"/>
- <link type="link-list" id="name"/>
- <link type="link-string" id="name"/>
+ <link type="link-to" id="name"/>
+ <link type="link-list" id="name"/>
+ <link type="link-string" id="name"/>
no
link-to
link-list
link-string
@@ -1000,15 +1000,15 @@ $data['links']['to_id'] = $record_id;
'view_id' => 'link_id',
// name of the id variable provided to the view function above
'add' => array('menuaction' => 'myapp.ui_myapp.new_entry'),
- // Function to add a new entry
+ // Function to add a new entry
);
Also, make sure that the declared methods are implemented and methods from the UI class are listed in its $public_methods attribute:
The Ajax Select is a Combo Box. It lets the user type anything they want, and choose from a list of options that are presented below. The user is not limited to the choices, but there is
some checking done. If what they type returns several results, and they don't choose one, for example. You can reject
-any values you don't like in your UI code. It is best used where you might normally want to use a selectbox but your list of data is too large. You can have several on one page, but the name
+any values you don't like in your UI code. It is best used where you might normally want to use a selectbox but your list of data is too large. You can have several on one page, but the name
must be different for each.
Options can be found under the "AJAX Select options" section of the pop-up.
Data Source: the list options, can be any function that can provide data for a nextmatch widget.
Title Source: When an option from the list is selected, the text in the search function is replaced with the result of this function. The ID Field is passed. link_title() functions work well.
ID Field: Data Source is expected to return an array as for a nextmatch, with several columns. This is the key of the column you actually want returned for a value.
Result row template: (Optional) You can provide a custom eTemplate to use for the list options. It should be constructed similarly to a row template for a nextmatch, and will be repeated for each option.
-
Link: (Optional) If the field is read-only, and Link is provided, the widget will turn into a link. Link should look like: perp_ap.ui_perp_supplier.edit&supplier_id=${cont[supplier_id]} where ID Field is supplier_id.
+
Link: (Optional) If the field is read-only, and Link is provided, the widget will turn into a link. Link should look like: perp_ap.ui_perp_supplier.edit&supplier_id=${cont[supplier_id]} where ID Field is supplier_id.
Icon: (Optional) An icon placed to the left of the search box, to help indicate what the user is searching (addresses, suppliers, etc.). It will be automatically resized.
@@ -1037,11 +1037,11 @@ must be different for each.
The following eTemplate Widgets are parsing its content before displaying through htmlspecialchars() to
correctly display the content and to gard against malecious data (like scripts etc.):
-
Label
-
Text, Textarea
-
Integer, Float
-
SelectBoxes (it's options-strings)
-
LinkWidgets: link-to, link-list, link-string
+
Label
+
Text, Textarea
+
Integer, Float
+
SelectBoxes (it's options-strings)
+
LinkWidgets: link-to, link-list, link-string
This is done in most cases by the underlaying html-class and not direct in eTemplate.
From a66ae024a93c52e26a4916b5f2ce3cc2c0195af8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hans-J=C3=BCrgen=20Tappe?=
Date: Sat, 31 Jul 2010 07:51:52 +0000
Subject: [PATCH 17/88] Tracker #2453. Introduce a year view, which uses a
fixed month / day grid and displays the events inline (like in day / week
view).
---
calendar/inc/class.calendar_hooks.inc.php | 1 +
calendar/inc/class.calendar_ui.inc.php | 6 +
calendar/inc/class.calendar_uiviews.inc.php | 329 ++++++++++++++++++--
calendar/templates/default/app.css | 21 ++
4 files changed, 331 insertions(+), 26 deletions(-)
diff --git a/calendar/inc/class.calendar_hooks.inc.php b/calendar/inc/class.calendar_hooks.inc.php
index 83970b3aa1..2111e382bd 100644
--- a/calendar/inc/class.calendar_hooks.inc.php
+++ b/calendar/inc/class.calendar_hooks.inc.php
@@ -153,6 +153,7 @@ class calendar_hooks
'week' => lang('Weekview'),
'weekN' => lang('Multiple week view'),
'month' => lang('Monthview'),
+ 'year' => lang('yearview'),
'planner_cat' => lang('Planner by category'),
'planner_user' => lang('Planner by user'),
'listview' => lang('Listview'),
diff --git a/calendar/inc/class.calendar_ui.inc.php b/calendar/inc/class.calendar_ui.inc.php
index a0f854a9d0..60a04cd28f 100644
--- a/calendar/inc/class.calendar_ui.inc.php
+++ b/calendar/inc/class.calendar_ui.inc.php
@@ -545,6 +545,7 @@ class calendar_ui
'week' => array('icon'=>'week','text'=>'Weekview','menuaction' => 'calendar.calendar_uiviews.week'),
'weekN' => array('icon'=>'multiweek','text'=>'Multiple week view','menuaction' => 'calendar.calendar_uiviews.weekN'),
'month' => array('icon'=>'month','text'=>'Monthview','menuaction' => 'calendar.calendar_uiviews.month'),
+ //'year' => array('icon'=>'year','text'=>'yearview','menuaction' => 'calendar.calendar_uiviews.year'),
'planner' => array('icon'=>'planner','text'=>'Group planner','menuaction' => 'calendar.calendar_uiviews.planner','sortby' => $this->sortby),
'list' => array('icon'=>'list','text'=>'Listview','menuaction'=>'calendar.calendar_uilist.listview'),
) as $view => $data)
@@ -610,6 +611,11 @@ class calendar_ui
'value' => 'menuaction=calendar.calendar_uiviews.month',
'selected' => $this->view == 'month',
),
+ array(
+ 'text' => lang('yearview'),
+ 'value' => 'menuaction=calendar.calendar_uiviews.year',
+ 'selected' => $this->view == 'year',
+ ),
array(
'text' => lang('planner by category'),
'value' => 'menuaction=calendar.calendar_uiviews.planner&sortby=category'.
diff --git a/calendar/inc/class.calendar_uiviews.inc.php b/calendar/inc/class.calendar_uiviews.inc.php
index 3736afdafe..e6721ab775 100644
--- a/calendar/inc/class.calendar_uiviews.inc.php
+++ b/calendar/inc/class.calendar_uiviews.inc.php
@@ -32,6 +32,7 @@ class calendar_uiviews extends calendar_ui
'week' => True,
'weekN' => True,
'month' => True,
+ 'year' => True,
'planner' => True,
'index' => True,
);
@@ -67,14 +68,14 @@ class calendar_uiviews extends calendar_ui
var $timeRow_width = 40;
/**
- * how many rows per day get displayed, gets set be the timeGridWidget
+ * how many rows per day get displayed, gets set by the timeGridWidget
*
* @var int
*/
var $rowsToDisplay;
/**
- * height in percent of one row, gets set be the timeGridWidget
+ * height in percent of one row, gets set by the timeGridWidget
*
* @var int
*/
@@ -137,6 +138,7 @@ class calendar_uiviews extends calendar_ui
'4day' => lang('Four days view'),
'week' => lang('Weekview'),
'month' => lang('Monthview'),
+ 'year' => lang('yearview'),
'planner' => lang('Group planner'),
);
$GLOBALS['egw_info']['flags']['app_header'] = $GLOBALS['egw_info']['apps']['calendar']['title'].
@@ -217,6 +219,9 @@ class calendar_uiviews extends calendar_ui
case 'planner':
return $group_warning.$this->planner(true);
+ case 'year':
+ return $group_warning.$this->year(true);
+
case 'month':
return $group_warning.$this->month(0,true);
@@ -320,6 +325,230 @@ class calendar_uiviews extends calendar_ui
return $this->month($num,$home);
}
+ /** Month column width (usually 3 or 4) in year view */
+ const YEARVIEW_COLS = 3;
+
+ /**
+ * Displays a year view
+ *
+ * @param boolean $home=false if true return content suitable for home-page
+ */
+ function &year($home=false)
+ {
+ if ($this->debug > 0) $this->bo->debug_message('uiviews::year date=%2',True,$this->date);
+
+ $content = $this->edit_series();
+
+ $this->_month_align_year($this->first,$this->last);
+
+ $GLOBALS['egw_info']['flags']['app_header'] .= ': '.$this->year;
+
+ $days =& $this->bo->search(array(
+ 'start' => $this->first,
+ 'end' => $this->last,
+ ) + $this->search_params);
+
+ /* Loop through the week-aligned months. */
+ for ($month = 1; $month <= 12; $month++)
+ {
+ // The first date entry in the view may be in the last month.
+ if (($month - 1) % self::YEARVIEW_COLS == 0)
+ {
+ $content .= '
'."\n";
+ $content .= "\t".'
'."\n";
+ }
+
+ $month_start = $this->datetime->get_weekday_start($this->year,$month,1);
+ // Beginning of the last week in the month
+ $month_end = $this->datetime->get_weekday_start(
+ $this->year,
+ $month,
+ $this->datetime->days_in_month($month,$this->year));
+ // End of the last week in month
+ $month_end = strtotime("+6 days",$month_end);
+
+ $content .= "\t\t".'
'."\n";
+
+ // Year Header
+ $content .= "\t\t\t".'
\n";
+ }
+ }
+
+ if (!$home)
+ {
+ $this->do_header();
+
+ echo $content;
+ }
+
+ return $content;
+ }
+
/**
* Displays the monthview or a multiple week-view
*
@@ -414,6 +643,27 @@ class calendar_uiviews extends calendar_ui
$last = $this->bo->date2ts($last);
}
+ /**
+ * Get start and end of a year aligned to full months
+ *
+ * @param int &$first timestamp 0h of first day of week containing the first of the current year
+ * @param int &$last timestamp 23:59:59 of last day of week containg the last day of the current year
+ */
+ function _month_align_year(&$first,&$last)
+ {
+ $first = $this->datetime->get_weekday_start($this->year,$this->month=1,$this->day=1);
+ $last = $this->datetime->get_weekday_start($this->year,$this->month+12,
+ $this->datetime->days_in_month($this->month+12,$this->year));
+ // now we need to calculate the end of the last day of that week
+ // as simple $last += WEEK_s - 1; does NOT work, if daylight saving changes in that week!!!
+ $last = $this->bo->date2array($last);
+ $last['day'] += 6;
+ $last['hour'] = 23;
+ $last['min'] = $last['sec'] = 59;
+ unset($last['raw']); // otherwise date2ts does not calc raw new, but uses it
+ $last = $this->bo->date2ts($last);
+ }
+
/**
* Four days view, everythings done by the week-view code ...
*
@@ -763,7 +1013,7 @@ function open_edit(series)
}
/**
- * Calculates the height of a differenc between 2 times
+ * Calculates the height of a difference between 2 times
*
* workday start- and end-time, is taken into account, as well as timeGrids px_m - minutes per pixel param
*
@@ -927,23 +1177,14 @@ function open_edit(series)
}
/**
- * Creates (if necessary multiple) columns for the events of a day
- *
- * Uses the eventColWidget to display each column.
+ * Sorts the events of a day into columns with non-overlapping events, the events
+ * are already sorted by start-time
*
* @param string/int $day_ymd date as Ymd
- * @param array $events of events to show
- * @param int $left start of the widget
- * @param int $width width of the widget
- * @param string $indent string for correct indention
- * @param boolean/string $short_title=True should we add a label (weekday, day) with link to the day-view above each day or string with title
- * @param boolean $on_off=false start with row_on or row_off, default false=row_off
- * @param int $owner=0 if != 0 owner to add to the add-event link
+ * @param array &$events events to split into non-overlapping groups
*/
- function dayColWidget($day_ymd,$events,$left,$width,$indent,$short_title=True,$on_off=False,$owner=0)
+ function getEventCols($day_ymd, &$events)
{
- if ($this->debug > 1 || $this->debug==='dayColWidget') $this->bo->debug_message('uiviews::dayColWidget(%1,%2,left=%3,width=%4,)',False,$day_ymd,$events,$left,$width);
-
$day_start = $this->bo->date2ts((string)$day_ymd);
// if daylight saving is switched on or off, correct $day_start
@@ -952,7 +1193,7 @@ function open_edit(series)
{
$day_start -= $daylight_diff;
}
- // sorting the event into columns with none-overlapping events, the events are already sorted by start-time
+
$eventCols = $col_ends = array();
foreach($events as $event)
{
@@ -980,6 +1221,26 @@ function open_edit(series)
}
$eventCols[$c][] = $event;
}
+ return $eventCols;
+ }
+
+ /**
+ * Creates (if necessary multiple) columns for the events of a day
+ *
+ * Uses the eventColWidget to display each column.
+ *
+ * @param string/int $day_ymd date as Ymd
+ * @param array $events of events to show
+ * @param int $left start of the widget
+ * @param int $width width of the widget
+ * @param string $indent string for correct indention
+ * @param boolean/string $short_title=True should we add a label (weekday, day) with link to the day-view above each day or string with title
+ * @param boolean $on_off=false start with row_on or row_off, default false=row_off
+ * @param int $owner=0 if != 0 owner to add to the add-event link
+ */
+ function dayColWidget($day_ymd,$events,$left,$width,$indent,$short_title=True,$on_off=False,$owner=0)
+ {
+ if ($this->debug > 1 || $this->debug==='dayColWidget') $this->bo->debug_message('uiviews::dayColWidget(%1,%2,left=%3,width=%4,)',False,$day_ymd,$events,$left,$width);
$html = $indent.'
'."\n";
@@ -995,7 +1256,7 @@ function open_edit(series)
);
$this->_day_class_holiday($day_ymd,$class,$holidays);
// the weekday and date
- if (!$short_title && $holidays) $title .= ': '.$holidays;
+ if (!$short_title && $holidays) $title .= html::htmlspecialchars(': '.$holidays);
if ($short_title === true)
{
@@ -1027,8 +1288,10 @@ function open_edit(series)
$title .= ' '.$day_view;
}
}
- $html .= $indent."\t".'
From 5d6e6cdc9c3668fd7a324fbb02f0e177e9f4cbb1 Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Sat, 31 Jul 2010 09:23:41 +0000
Subject: [PATCH 20/88] new parameter $make_db_name_unique to append a
decrementing numeric postfix to db_name and db_user, if db already exists
---
setup/inc/class.setup_cmd_database.inc.php | 54 ++++++++++++++++++++--
1 file changed, 49 insertions(+), 5 deletions(-)
diff --git a/setup/inc/class.setup_cmd_database.inc.php b/setup/inc/class.setup_cmd_database.inc.php
index 87f031e19e..cb580b57c2 100644
--- a/setup/inc/class.setup_cmd_database.inc.php
+++ b/setup/inc/class.setup_cmd_database.inc.php
@@ -19,6 +19,13 @@ class setup_cmd_database extends setup_cmd
* Allow to run this command via setup-cli
*/
const SETUP_CLI_CALLABLE = true;
+
+ /**
+ * Maximum length of database name (at least for MySQL this is the limit)
+ *
+ * @var int
+ */
+ const MAX_DB_NAME_LEN = 16;
/**
* Instance of egw_db to connect or create the db
@@ -41,9 +48,11 @@ class setup_cmd_database extends setup_cmd
* @param string $db_root_pw=null
* @param string $sub_command='create_db' 'create_db', 'test_db', 'test_db_root'
* @param string $db_grant_host='localhost' host/ip of webserver for grant
+ * @param boolean $make_db_name_unique=false true: if create fails because db exists,
+ * try creating a unique name by shortening the name and adding a number to it
*/
function __construct($domain,$db_type=null,$db_host=null,$db_port=null,$db_name=null,$db_user=null,$db_pass=null,
- $db_root=null,$db_root_pw=null,$sub_command='create_db',$db_grant_host='localhost')
+ $db_root=null,$db_root_pw=null,$sub_command='create_db',$db_grant_host='localhost',$make_db_name_unique=false)
{
if (!is_array($domain))
{
@@ -59,9 +68,10 @@ class setup_cmd_database extends setup_cmd
'db_root_pw' => $db_root_pw,
'sub_command' => $sub_command,
'db_grant_host' => $db_grant_host,
+ 'make_db_name_unique' => $make_db_name_unique,
);
}
- //echo __CLASS__.'::__construct()'; _debug_array($domain);
+ //error_log(__METHOD__.'('.array2string($domain).") make_db_name_unique=".array2string($domain['make_db_name_unique']));
admin_cmd::__construct($domain);
}
@@ -153,12 +163,17 @@ class setup_cmd_database extends setup_cmd
* Check and if does not yet exist create the new database and user
*
* The check will fail if the database exists, but already contains tables
+ *
+ * if $this->make_db_name_unique is set, a decrementing nummeric prefix gets
+ * added to $this->db_name AND $this->db_user, if db already exists.
*
* @return string with success message
* @throws egw_exception_wrong_userinput
*/
private function create()
{
+ static $try_make_unique = 0; // to limit trials to create a unique name
+
try {
$msg = $this->connect();
}
@@ -168,9 +183,36 @@ class setup_cmd_database extends setup_cmd
$this->test_db->create_database($this->db_root,$this->db_root_pw,$this->db_charset,$this->db_grant_host);
$this->connect();
}
- catch(egw_exception_wrong_userinput $e) {
- // try connect as root to check if that's the problem
+ catch(egw_exception_db $e) { // catches failed to create database
+ // try connect as root to check if wrong root/root_pw is the problem
$this->connect($this->db_root,$this->db_root_pw,$this->db_meta);
+
+ // if we should create a db with a unique name (try it only N times, not endless!)
+ if ($this->make_db_name_unique && $try_make_unique++ < 20)
+ {
+ // check if we can connect as root to the db to create --> db exists already
+ try {
+ $this->connect($this->db_root,$this->db_root_pw);
+ // create new db_name by incrementing an existing numeric postfix
+ if (preg_match('/([0-9]+)$/',$this->db_name,$matches))
+ {
+ $num = (string)(++$matches[1]);
+ }
+ else // or adding one starting with 2
+ {
+ $num = '2';
+ }
+ $this->set_defaults['db_name'] = $this->db_name =
+ $this->set_defaults['db_user'] = $this->db_user = // change user too (otherwise existing user/db could not connect any more!)
+ substr($this->db_name,0,self::MAX_DB_NAME_LEN-strlen($num)).$num;
+
+ return $this->create();
+ }
+ catch (egw_exception_wrong_userinput $e2)
+ {
+ // we can NOT connect to db as root --> ignore exception to give general error
+ }
+ }
// if not give general error
throw new egw_exception_wrong_userinput(lang('Can not create %1 database %2 on %3 for user %4!',
$this->db_type,$this->db_name,$this->db_host.($this->db_port?':'.$this->db_port:''),$this->db_user));
@@ -263,7 +305,9 @@ class setup_cmd_database extends setup_cmd
if (strpos($this->$name,'$domain') !== false)
{
// limit names to 16 chars (16 char is user-name limit in MySQL)
- $this->set_defaults[$name] = $this->$name = substr(str_replace(array('$domain','.','-'),array($this->domain,'_','_'),$this->$name),0,16);
+ $this->set_defaults[$name] = $this->$name =
+ substr(str_replace(array('$domain','.','-'),array($this->domain,'_','_'),$this->$name),
+ 0,self::MAX_DB_NAME_LEN);
}
}
}
From a1c9f68a1e1820a1c7a61ade04da73f5a65109b9 Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Sun, 1 Aug 2010 10:02:04 +0000
Subject: [PATCH 21/88] remove not used advanced-search-widget
---
.../inc/class.advancedsearch_widget.inc.php | 279 ------------------
1 file changed, 279 deletions(-)
delete mode 100644 etemplate/inc/class.advancedsearch_widget.inc.php
diff --git a/etemplate/inc/class.advancedsearch_widget.inc.php b/etemplate/inc/class.advancedsearch_widget.inc.php
deleted file mode 100644
index b270f40faf..0000000000
--- a/etemplate/inc/class.advancedsearch_widget.inc.php
+++ /dev/null
@@ -1,279 +0,0 @@
-
- * @deprecated Don't use any more, this will be removed after 1.4 release.
- * Please manage advanced searches in you app!
- * @version $Id$
- */
-
- /**
- * eTemplate Extension: Advanced Search
- *
- * $content[$name] = array(
- * 'input_template' => app.template
- * 'search_method' => app.class.method in so_sql style
- * 'colums_to_present' => array with field_name => label
- * 'actions' => array with actions for resultset in etemplates style
- * can also contain a field 'method' which gets executed with resultset as first param
- * 'row_actions' => array with actions for each row
- *
- * @package etemplate
- * @subpackage extensions
- * @author Cornelius Weiss
- * @license GPL - GNU General Public License
- */
- class advancedsearch_widget
- {
- /**
- * @var $public_functions array with exported methods of this class
- */
- var $public_functions = array(
- 'pre_process' => True,
- 'post_process' => True
- );
-
- /**
- * @var $human_name
- */
- var $human_name = 'Advanced search';
-
- /**
- * @var $debug bool
- */
- var $debug = False;
-
- /**
- * Constructor of the extension
- *
- * @param string $ui '' for html
- */
- function advancedsearch_widget($ui='')
- {
- error_log(__LINE__. __FILE__. "@deprecated Don't use any more, this will be removed after 1.4 release. Please manage advanced searches in you app! ");
- }
-
- /**
- * pre-processing of the extension
- *
- * This function is called before the extension gets rendered
- *
- * @param string $name form-name of the control
- * @param mixed &$value value / existing content, can be modified
- * @param array &$cell array with the widget, can be modified for ui-independent widgets
- * @param array &$readonlys names of widgets as key, to be made readonly
- * @param mixed &$extension_data data the extension can store persisten between pre- and post-process
- * @param object &$tmpl reference to the template we belong too
- * @return boolean true if extra label is allowed, false otherwise
- */
- function pre_process($name,&$value,&$cell,&$readonlys,&$extension_data,&$tmpl)
- {
- $extension_data = is_array($extension_data) ? $extension_data :
- (is_array($GLOBALS['egw']->session->appsession('advanced_search_query',$GLOBALS['egw_info']['flags']['currentapp'])) ?
- $GLOBALS['egw']->session->appsession('advanced_search_query',$GLOBALS['egw_info']['flags']['currentapp']) : $value);
-
- $tpl = new etemplate;
- $tpl->init('*** generated advanced search widget','','',0,'',0,0); // make an empty template
-
- if($extension_data['message'])
- {
- $tpl->add_child($tpl,$message = $tpl->empty_cell('label','message',array(
- 'no_lang' => true,
- )));
- }
-
- if (isset($extension_data['result_nm']))
- {
- $tpl->add_child($tpl,$new_search_button = $tpl->empty_cell('button','button[new_search]',array(
- 'no_lang' => true,
- 'label' => lang('New search'),
- )));
- $tpl->add_child($tpl, $result_nm = $tpl->empty_cell('nextmatch','result_nm',array(
-// 'width' => '800px',
- )));
-
- $result_rows_tpl = new etemplate;
- $result_rows_tpl->init('*** generated rows template for advanced search results','','',0,'',0,0);
- $grid =& $result_rows_tpl->children[0];
- foreach((array)$extension_data['colums_to_present'] as $field => $label)
- {
- if($label == '') continue;
- $result_rows_tpl->add_child($grid,$result_nm_header = $result_rows_tpl->empty_cell('nextmatch-sortheader',$field,array(
- 'label' => $label,
- 'no_lang' => true,
- 'span' => ',nmh',
- )));
- unset($result_nm_header);
- }
- if(!empty($extension_data['row_actions']))
- {
- $result_rows_tpl->add_child($grid,$result_nm_header = $result_rows_tpl->empty_cell('label','action',array(
- 'label' => 'Action',
- 'no_lang' => true,
- 'span' => ',nmh',
- )));
- unset($result_nm_header);
- }
- $result_rows_tpl->add_child($grid,$rows);
- foreach((array)$extension_data['colums_to_present'] as $field => $label)
- {
- if($label == '') continue;
- $result_rows_tpl->add_child($grid,$result_nm_rows = $result_rows_tpl->empty_cell('text','${row}['.$field.']',array(
- 'no_lang' => true,
- 'readonly' => true,
- )));
- unset($result_nm_rows);
- }
- if(!empty($extension_data['row_actions']))
- {
- $row_actions =& $result_rows_tpl->empty_cell('hbox','row_action');
- $result_rows_tpl->add_child($grid,$row_actions);
- foreach($extension_data['row_actions'] as $action => $options)
- {
- $result_rows_tpl->add_child($row_actions, $row_action = $result_rows_tpl->empty_cell($options['type'],$action.'[$row_cont[id]]',$options['options']));
- unset($row_action);
- }
- }
- $value['result_nm'] = array_merge(
- $extension_data['result_nm'],
- array(
- 'no_filter' => true,
- 'no_filter2' => true,
- 'no_cat' => true,
- 'no_search' => true,
- 'get_rows' => 'etemplate.advancedsearch_widget.get_rows',
- 'search_method' => $extension_data['search_method'],
- 'colums_to_present' => $extension_data['colums_to_present'],
- 'template' => $result_rows_tpl,
- ));
-
- $tpl->add_child($tpl, $action_buttons = $tpl->empty_cell('hbox','action_buttons'));
- foreach ($extension_data['actions'] as $action => $options)
- {
- $tpl->add_child($action_buttons, $result_button = $tpl->empty_cell($options['type'],'action['.$action.']',$options['options']));
- unset($result_button);
- }
- }
- else
- {
- $GLOBALS['egw_info']['etemplate']['advanced_search'] = true;
-
- $tpl->add_child($tpl, $search_template = $tpl->empty_cell('template',$extension_data['input_template']));
- $button_box = $tpl->empty_cell('hbox','button_box');
- $tpl->add_child($tpl, $button_box);
- $tpl->add_child($button_box, $op_select = $tpl->empty_cell('select','opt_select',array(
- 'sel_options' => array(
- 'OR' => 'OR',
- 'AND' => 'AND'
- ),
- 'label' => 'Operator',
- 'no_lang' => true,
- )));
- $tpl->add_child($button_box, $meth_select = $tpl->empty_cell('select','meth_select',array(
- 'sel_options' => array(
- '%' => lang('contains'),
- false => lang('exact'),
- ),
- 'no_lang' => true,
- 'default' => '%',
- )));
- $tpl->add_child($button_box, $search_button = $tpl->empty_cell('button','button[search]',array(
- 'label' => 'Search',
- )));
- }
- $cell['size'] = $cell['name'];
- $cell['type'] = 'template';
- $cell['name'] = $tpl->name;
- $cell['obj'] =& $tpl;
-
- // keep the editor away from the generated tmpls
- $tpl->no_onclick = true;
- return True;
- }
-
- /**
- * postprocessing method, called after the submission of the form
- *
- * It has to copy the allowed/valid data from $value_in to $value, otherwise the widget
- * will return no data (if it has a preprocessing method). The framework insures that
- * the post-processing of all contained widget has been done before.
- *
- * @param string $name form-name of the widget
- * @param mixed &$value the extension returns here it's input, if there's any
- * @param mixed &$extension_data persistent storage between calls or pre- and post-process
- * @param boolean &$loop can be set to true to request a re-submision of the form/dialog
- * @param object &$tmpl the eTemplate the widget belongs too
- * @param mixed &value_in the posted values (already striped of magic-quotes)
- * @return boolean true if $value has valid content, on false no content will be returned!
- */
- function post_process($name,&$value,&$extension_data,&$loop,&$tmpl,$value_in)
- {
- //echo 'advancedsearch_widget::post_process->value'; _debug_array($value);
- //echo 'advancedsearch_widget::post_process->extension_data'; _debug_array($extension_data);
- if(!isset($extension_data['result_nm']['search_values']))
- {
- foreach($value as $haystack => $needle)
- {
- if($needle == '') unset($value[$haystack]);
- elseif($haystack{0} != '!' && $needle{0} != '!' && $value['!'.$haystack] == 1 ) $value[$haystack] = '!'.$value[$haystack];
- }
- $extension_data['result_nm']['search_values'] = $value;
- }
- else
- {
- $extension_data['result_nm'] = array_merge($extension_data['result_nm'],$value['result_nm']);
- }
-
- //we store extension_data in session to save it over a new request
- $GLOBALS['egw']->session->appsession('advanced_search_query',$GLOBALS['egw_info']['flags']['currentapp'],$extension_data);
-
- if(isset($value['action']))
- {
- // Also inputfileds etc. could be in actions
- foreach($value['action'] as $action => $label)
- {
- if($extension_data['actions'][$action]['type'] == 'button')
- {
- $result = $GLOBALS['egw']->session->appsession('advanced_search_result',$GLOBALS['egw_info']['flags']['currentapp']);
- $extension_data['message'] = ExecMethod2($extension_data['actions'][$action]['method'],$result);
- }
- }
- }
- if(is_array($value['result_nm']['rows']))
- {
- // Also inputfileds etc. could be in actions
- foreach($value['result_nm']['rows'] as $action => $id)
- {
- if($extension_data['row_actions'][$action]['type'] == 'button')
- {
- $result = $GLOBALS['egw']->session->appsession('advanced_search_result',$GLOBALS['egw_info']['flags']['currentapp']);
- $extension_data['message'] = ExecMethod2($extension_data['row_actions'][$action]['method'],key($id));
- }
- }
- }
-
- if(isset($value['button']['new_search']))
- {
- $GLOBALS['egw']->session->appsession('advanced_search_query',$GLOBALS['egw_info']['flags']['currentapp'],false);
- $extension_data = '';
- }
- }
-
- function get_rows($query,&$rows,&$readonlys)
- {
- $order_by = $query['order'] ? $query['order'].' '.$query['sort'] : '';
- $only_keys = implode(',',array_flip($query['colums_to_present']));
- $rows = ExecMethod2($query['search_method'],$query['search_values'],$only_keys,
- $order_by,'',$query['search_values']['meth_select'],'',$query['search_values']['opt_select'],$query['start']);
- $result = ExecMethod2($query['search_method'],$query['search_values'],$only_keys,
- '','',$query['search_values']['meth_select'],'',$query['search_values']['opt_select'],false,'','',false);
- // We store the result in session so actions can fetch them here:
- $GLOBALS['egw']->session->appsession('advanced_search_result',$GLOBALS['egw_info']['flags']['currentapp'],$result);
- return count($result);
-
- }
- }
From bb468774f7dd82788e01790a1d98603621901c00 Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Sun, 1 Aug 2010 12:47:26 +0000
Subject: [PATCH 22/88] quitened warning
---
etemplate/inc/class.etemplate.inc.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/etemplate/inc/class.etemplate.inc.php b/etemplate/inc/class.etemplate.inc.php
index 9a433c7005..2b71430d55 100644
--- a/etemplate/inc/class.etemplate.inc.php
+++ b/etemplate/inc/class.etemplate.inc.php
@@ -1602,7 +1602,7 @@ class etemplate extends boetemplate
break;
case 'image': // size: [link],[link_target],[imagemap],[link_popup],[id]
$image = $value != '' ? $value : $name;
- list($app,$img) = explode('/',$image,2);
+ if (!is_array($image)) list($app,$img) = explode('/',$image,2);
if (!$app || !$img || !is_dir(EGW_SERVER_ROOT.'/'.$app) || strpos($img,'/')!==false)
{
$img = $image;
From be91330030acc3627c2af8830c9ca9ffdd5b65ba Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Mon, 2 Aug 2010 14:15:05 +0000
Subject: [PATCH 23/88] fixed not working notifications for types: - responses:
on participant responses too (everytime) - modifications: on all
modification, but responses
---
calendar/inc/class.calendar_boupdate.inc.php | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/calendar/inc/class.calendar_boupdate.inc.php b/calendar/inc/class.calendar_boupdate.inc.php
index a6525236b1..15b6901709 100644
--- a/calendar/inc/class.calendar_boupdate.inc.php
+++ b/calendar/inc/class.calendar_boupdate.inc.php
@@ -364,7 +364,6 @@ class calendar_boupdate extends calendar_bo
else // update existing event
{
$this->check4update($event,$old_event);
-
}
// notify the link-class about the update, as other apps may be subscribt to it
egw_link::notify_update('calendar',$cal_id,$event);
@@ -434,9 +433,11 @@ class calendar_boupdate extends calendar_bo
*
* @param array $new_event the updated event
* @param array $old_event the event before the update
+ * @todo check if there is a real change, not assume every save is a change
*/
function check4update($new_event,$old_event)
{
+ //error_log(__METHOD__."($new_event[title])");
$modified = $added = $deleted = array();
//echo "
calendar_boupdate::check4update() new participants = ".print_r($new_event['participants'],true).", old participants =".print_r($old_event['participants'],true)."
\n";
@@ -504,12 +505,9 @@ class calendar_boupdate extends calendar_bo
switch($ru = $part_prefs['calendar']['receive_updates'])
{
case 'responses':
- if ($msg_is_response)
- {
- ++$want_update;
- }
+ ++$want_update;
case 'modifications':
- if ($msg_type == MSG_MODIFIED)
+ if (!$msg_is_response)
{
++$want_update;
}
@@ -532,7 +530,7 @@ class calendar_boupdate extends calendar_bo
case 'no':
break;
}
- //echo "
+
From 8d1f813be62058ce1781e68fd875a148a22621ec Mon Sep 17 00:00:00 2001
From: Klaus Leithoff
Date: Tue, 24 Aug 2010 08:36:54 +0000
Subject: [PATCH 61/88] USABILITY: if admin is setting the password,and
retyping the intended password was not successful, the retype now gets
deleted, and the inital password gets selected, after the alertbox is cleared
away
---
admin/templates/default/account_form.tpl | 4 +++-
admin/templates/default/account_form_ldap.tpl | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/admin/templates/default/account_form.tpl b/admin/templates/default/account_form.tpl
index b37f67943d..378e706f17 100644
--- a/admin/templates/default/account_form.tpl
+++ b/admin/templates/default/account_form.tpl
@@ -23,7 +23,9 @@ function check_password(id)
if (password && (password2 || id == 'password2') && password != password2)
{
alert('{lang_passwds_unequal}');
- document.getElementById('password2').focus();
+ document.getElementById('password2').value = '';
+ document.getElementById('password').select();
+ document.getElementById('password').focus();
return false;
}
return true;
diff --git a/admin/templates/default/account_form_ldap.tpl b/admin/templates/default/account_form_ldap.tpl
index 3970130928..0d6587fcb6 100644
--- a/admin/templates/default/account_form_ldap.tpl
+++ b/admin/templates/default/account_form_ldap.tpl
@@ -24,7 +24,9 @@ function check_password(id)
if (password && (password2 || id == 'password2') && password != password2)
{
alert('{lang_passwds_unequal}');
- document.getElementById('password2').focus();
+ document.getElementById('password2').value = '';
+ document.getElementById('password').select();
+ document.getElementById('password').focus();
return false;
}
return true;
From 9b62e51e2d0d8df9d71c0c0539a686bc4d524973 Mon Sep 17 00:00:00 2001
From: Nathan Gray
Date: Tue, 24 Aug 2010 16:59:13 +0000
Subject: [PATCH 62/88] Add action to list view for admins to recover events
from list view (egw.stylite.de bug #8140)
---
calendar/inc/class.calendar_uilist.inc.php | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/calendar/inc/class.calendar_uilist.inc.php b/calendar/inc/class.calendar_uilist.inc.php
index 264e9bcd89..1e39c00a55 100644
--- a/calendar/inc/class.calendar_uilist.inc.php
+++ b/calendar/inc/class.calendar_uilist.inc.php
@@ -171,6 +171,12 @@ class calendar_uilist extends calendar_ui
if($GLOBALS['egw_info']['apps']['timesheet']) {
$sel_options['action']['timesheet-add'] = array('label' => 'Create timesheet', 'title' => 'Create a timesheet entry from this event');
}
+ // Add in deleted for admins
+ $config = config::read('phpgwapi');
+ if($config['calendar_delete_history'] && $GLOBALS['egw_info']['user']['apps']['admin'])
+ {
+ $sel_options['action']['undelete'] = array('label' => 'Un-Delete', 'title' => 'Recover this event');
+ }
foreach($this->bo->verbose_status as $key => $value)
{
if($key == 'G') continue;
@@ -524,6 +530,20 @@ class calendar_uilist extends calendar_ui
$failure++;
}
break;
+ case 'undelete':
+ $action_msg = lang('recovered');
+ if ($id && ($event = $this->bo->read($id, $recur_date)) && $this->bo->check_perms(EGW_ACL_EDIT,$id) &&
+ is_array($event) && $event['deleted'])
+ {
+ $event['deleted'] = false;
+ if($this->bo->save($event))
+ {
+ $success++;
+ break;
+ }
+ }
+ $failure++;
+ break;
case 'status':
if($id && $event = $this->bo->read($id, $recur_date))
{
From 316ac13e31d0c24a81af342683b682b1f84778ea Mon Sep 17 00:00:00 2001
From: Klaus Leithoff
Date: Wed, 25 Aug 2010 11:15:29 +0000
Subject: [PATCH 63/88] translations provided by mkk
---
phpgwapi/lang/egw_fi.lang | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/phpgwapi/lang/egw_fi.lang b/phpgwapi/lang/egw_fi.lang
index d55c42ccd6..947fc7630d 100644
--- a/phpgwapi/lang/egw_fi.lang
+++ b/phpgwapi/lang/egw_fi.lang
@@ -53,6 +53,7 @@ alternate style-sheet: common fi Vaihtoehtoinen tyylisivu:
american samoa common fi AMERIKAN SAMOA
an error happened common fi Virheellinen toiminto
an existing and by the webserver readable directory enables the image browser and upload. common fi Olemassa oleva JA palvelimen lukuoikeudet omaava hakemisto sallii kuvien selaamisen ja lataamisen.
+and common fi ja
andorra common fi ANDORRA
angola common fi ANGOLA
anguilla common fi ANGUILLA
@@ -484,6 +485,7 @@ oops! you caught us in the middle of system maintainance. common fi Hups... Huol
open notify window common fi Avaa huomautusikkuna
open popup window common fi Avaa ponnahdusikkuna
open sidebox common fi Avaa sivuvalikko
+or common fi tai
ordered list common fi Listajärjestys
original common fi Alkuperäinen
other common fi Muu
@@ -531,7 +533,7 @@ postal common fi Posti
powered by common fi Kehittänyt
powered by egroupware version %1 common fi Tämä on EGroupware versio %1
preferences common fi Asetukset
-preferences for the idots template set common fi Idots-mallipohjan asetukset
+preferences for the %1 template set preferences fi Asetukset mallipohjalle: %1
prev. month (hold for menu) jscalendar fi Edellinen kuukausi (pidä alhaalla, niin näet valikon)
prev. year (hold for menu) jscalendar fi Edellinen vuosi (pidä alhaalla, niin näet valikon)
previous page common fi Edelliselle sivu
From 6c885b31fb405ee9b63b850efd1d5853d0264bb2 Mon Sep 17 00:00:00 2001
From: Ralf Becker
Date: Wed, 25 Aug 2010 12:24:11 +0000
Subject: [PATCH 64/88] - setting set_defaults also with values containing (now
replaced) replacements like $domain - shorten db-name/-user to
self::MAX_DB_NAME_LEN chars
---
setup/inc/class.setup_cmd_config.inc.php | 2 +-
setup/inc/class.setup_cmd_database.inc.php | 9 ++++++++-
setup/inc/class.setup_cmd_ldap.inc.php | 2 +-
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/setup/inc/class.setup_cmd_config.inc.php b/setup/inc/class.setup_cmd_config.inc.php
index 8e96c8df47..ca7eff2629 100644
--- a/setup/inc/class.setup_cmd_config.inc.php
+++ b/setup/inc/class.setup_cmd_config.inc.php
@@ -387,7 +387,7 @@ class setup_cmd_config extends setup_cmd
}
if (strpos($this->$name,'$') !== false)
{
- $this->$name = str_replace(array(
+ $this->set_defaults[$name] = $this->$name = str_replace(array(
'$domain',
),array(
$this->domain,
diff --git a/setup/inc/class.setup_cmd_database.inc.php b/setup/inc/class.setup_cmd_database.inc.php
index cb580b57c2..f750e7f182 100644
--- a/setup/inc/class.setup_cmd_database.inc.php
+++ b/setup/inc/class.setup_cmd_database.inc.php
@@ -174,6 +174,13 @@ class setup_cmd_database extends setup_cmd
{
static $try_make_unique = 0; // to limit trials to create a unique name
+ // shorten db-name/-user to self::MAX_DB_NAME_LEN chars
+ if ($this->make_db_name_unique && strlen($this->db_name) > self::MAX_DB_NAME_LEN)
+ {
+ $this->set_defaults['db_name'] = $this->db_name =
+ $this->set_defaults['db_user'] = $this->db_user = // change user too (otherwise existing user/db could not connect any more!)
+ substr($this->db_name,0,self::MAX_DB_NAME_LEN);
+ }
try {
$msg = $this->connect();
}
@@ -206,7 +213,7 @@ class setup_cmd_database extends setup_cmd
$this->set_defaults['db_user'] = $this->db_user = // change user too (otherwise existing user/db could not connect any more!)
substr($this->db_name,0,self::MAX_DB_NAME_LEN-strlen($num)).$num;
- return $this->create();
+ return $this->create();
}
catch (egw_exception_wrong_userinput $e2)
{
diff --git a/setup/inc/class.setup_cmd_ldap.inc.php b/setup/inc/class.setup_cmd_ldap.inc.php
index 9fbaf313f0..9dda24fde9 100644
--- a/setup/inc/class.setup_cmd_ldap.inc.php
+++ b/setup/inc/class.setup_cmd_ldap.inc.php
@@ -343,7 +343,7 @@ class setup_cmd_ldap extends setup_cmd
}
if (strpos($this->$name,'$') !== false)
{
- $this->$name = str_replace(array(
+ $this->set_defaults[$name] = $this->$name = str_replace(array(
'$domain',
'$suffix',
'$base',
From 2f0df89b4f36c96340e17e4eefccfd6fa0177ada Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Oscar=20Manuel=20G=C3=B3mez=20Senovilla?=
Date: Wed, 25 Aug 2010 16:14:29 +0000
Subject: [PATCH 65/88] Tracker #2703
---
addressbook/lang/egw_cs.lang | 19 +++++
admin/lang/egw_cs.lang | 56 +++++++++++++
admin/lang/egw_es-es.lang | 11 +++
calendar/lang/egw_cs.lang | 140 ++++++++++++++++++++++++++++++--
calendar/lang/egw_es-es.lang | 29 ++++++-
etemplate/lang/egw_cs.lang | 16 +++-
filemanager/lang/egw_cs.lang | 20 ++---
filemanager/lang/egw_es-es.lang | 21 +++--
home/lang/egw_cs.lang | 3 +-
importexport/lang/egw_cs.lang | 18 ++++
infolog/lang/egw_cs.lang | 16 +++-
notifications/lang/egw_cs.lang | 5 ++
phpgwapi/lang/egw_cs.lang | 20 ++++-
phpgwapi/lang/egw_es-es.lang | 19 ++++-
preferences/lang/egw_cs.lang | 18 +++-
resources/lang/egw_cs.lang | 7 +-
setup/lang/egw_cs.lang | 6 +-
timesheet/lang/egw_cs.lang | 3 +-
18 files changed, 383 insertions(+), 44 deletions(-)
diff --git a/addressbook/lang/egw_cs.lang b/addressbook/lang/egw_cs.lang
index 1314873587..b7f06c4f7e 100644
--- a/addressbook/lang/egw_cs.lang
+++ b/addressbook/lang/egw_cs.lang
@@ -12,6 +12,7 @@
(empty = use global limit, no = no export at all) admin cs (prázdné = použít globální limit, ne = žádný export)
no conversion type <none> could be located. please choose a conversion type from the list addressbook cs Žádný konverzní typ nebyl nalezen. Vyberte si prosím konverzní typ ze seznamu
@-eval() is only availible to admins!!! addressbook cs @-eval() je přístupná jen administrátorům!!!
+account id addressbook cs ID účtu
account repository admin cs Databáze účtů
accounts addressbook cs Účty
actions addressbook cs Akce
@@ -37,8 +38,10 @@ address line 2 addressbook cs Adresa - řádek 2
address type addressbook cs Typ adresy
addressbook common cs Adresář
addressbook csv export addressbook cs Export adresáře do CSV
+addressbook csv import addressbook cs Import do adresáře z CSV
addressbook field addressbook cs Položka adresáře
addressbook menu addressbook cs Menu adresáře
+addressbook of addressbook cs Adresář
addressbook preferences addressbook cs Předvolby adresáře
addressbook the contact should be saved to addressbook cs Kontakty adresáře by měly být uloženy do
addressbook the contact should be shown addressbook cs Kontakty adresáře by měly být zobrazeny
@@ -81,6 +84,7 @@ category tree admin cs Strom kategorií
cell phone addressbook cs Mobilní telefon
change all organisation members addressbook cs změnit všechny členy organizace
charset for the csv export addressbook cs Znaková sada pro export do CSV
+charset for the vcard export addressbook cs Znaková sada pro export do vCard
charset of file addressbook cs Znaková sada souboru
check all addressbook cs Označit všechny
choose an icon for this contact type admin cs Vybrat ikonu pro tento typ kontaktu
@@ -88,6 +92,7 @@ choose owner of imported data addressbook cs Vyberte vlastníka importovaných d
choose seperator and charset addressbook cs Vyberte oddělovač a znakovou sadu
chosse an etemplate for this contact type admin cs Vybrat eTemplate pro tento typ kontaktu
city common cs Město
+cleanup addressbook fields (apply if synchronization creates duplicates) addressbook cs Pročištění položek adresáře (použijte pokud synchronizace vytvořila duplicity)
company common cs Společnost
company name addressbook cs jméno firmy
configuration common cs Konfigurace
@@ -98,6 +103,7 @@ contact deleted addressbook cs Kontakt smazán
contact fields to show addressbook cs Zobrazovat položky kontaktu
contact fields: addressbook cs Položky kontaktu:
contact id addressbook cs ID kontaktu
+contact id cannot be changed by import addressbook cs ID kontaktu nelze měnit importem
contact maintenance admin cs Údržba kontaktu
contact modified by %1 at %2 addressbook cs Kontakt změněnil(a) %1v %2
contact not found! addressbook cs Kontakt nebyl nalezen!
@@ -173,7 +179,12 @@ error deleting the contact !!! addressbook cs Chyba při mazání kontaktu
error saving the contact !!! addressbook cs Chyba při ukládání kontaktu
error: the entry has been updated since you opened it for editing! addressbook cs Chyba: záznam byl zaktualizován v době, kdy jste ho měl(a) otevřený k editaci!
example $$if n_prefix~mr~hello mr.~hello ms.$$ - search the field "n_prefix", for "mr", if found, write hello mr., else write hello ms. addressbook cs Příklad $$IF n_prefix~Mr~Hello Mr.~Hello Ms.$$ - prohledej pole "n_prefix", pokud nalezneš "Mr", napiš Hello Mr., v opačném případě napiš Hello Ms.
+example $$letterprefix$$ - gives a letter prefix without double spaces, if the title is emty for example addressbook cs Příklad $$LETTERPREFIX$$ - Vrací titul bez mezer, např. pokud položka titul prázdná
+example $$letterprefixcustom n_prefix title n_family$$ - example: mr dr. james miller addressbook cs Příklad $$LETTERPREFIXCUSTOM n_prefix title n_family$$ - Příklad: Mr Dr. James Miller
+example $$nelf role$$ - if field role is not empty, you will get a new line with the value of field role addressbook cs Příklad $$NELF role$$ - pokud není položka role prázdná, vrací nový řádek s hodnotou položky role
+example $$nelfnv role$$ - if field role is not empty, set a lf without any value of the field addressbook cs Příklad $$NELFNV role$$ - pokud není položka role prázdná, vrací znak LF bez hodnoty položky
existing links addressbook cs Stávající odkazy
+exists addressbook cs existuje
export addressbook cs export
export as csv addressbook cs Exportovat jako CSV
export as vcard addressbook cs Exportovat jako VCard
@@ -210,6 +221,7 @@ group %1 addressbook cs Skupina %1
h addressbook cs h
hide accounts from addressbook addressbook cs Nezobrazovat účty v adresáři
hides accounts completly from the adressbook. addressbook cs Kompletně skryje účty před adresářem.
+history logging admin cs Protokolování historie
home address addressbook cs Domácí adresa
home address, birthday, ... addressbook cs Domácí adresa, narozeniny, ...
home city addressbook cs Domov - město
@@ -240,6 +252,7 @@ imports contacts into your addressbook from a csv file. csv means 'comma seperat
in %1 days (%2) is %3's birthday. addressbook cs Za %1 dní (%2) má %3 narozeniny.
income addressbook cs Hospodářský výsledek
infolog addressbook cs InfoLog
+insert addressbook cs vložit
insert in document addressbook cs Vložit do dokumentu
insufficent rights to delete this list! addressbook cs Nemáte dostatečná oprávnění ke smazání seznamu!
international addressbook cs Mezinárodní
@@ -315,6 +328,7 @@ preferred email address to use in distribution lists addressbook cs Preferovaná
preferred phone addressbook cs preferovaný telefon
preferred type of email address to add for distribution lists addressbook cs preferovaný typ e-mailové adresy pro přidávání do distribučních seznamů
prefix addressbook cs Titul/Oslovení
+prevent deleting of contacts admin cs Blokovat mazání kontaktů
private custom fields addressbook cs Soukromá uživatelsky definovaná pole
public key addressbook cs Veřejný klíč
publish into groups: addressbook cs Zveřejnit ve skupinách:
@@ -346,6 +360,7 @@ select the type of conversion addressbook cs Vybrat typ konverze
select the type of conversion: addressbook cs Vybrat typ konverze:
select where you want to store / retrieve contacts admin cs Vybrat úložiště kontaktů
selected contacts addressbook cs vybrané kontakty
+send emailcopy to receiver addressbook cs Odeslat příjemci kopii e-mailem
seperator addressbook cs Oddělovač
set full name and file as field in contacts of all users (either all or only empty values) admin cs Nastavit celé jméno a evidovat jako pole v kontaktech všech uživatelů (buď všechny nebo jen prázdné hodnoty)
set only full name addressbook cs Nastavit jen celé jméno
@@ -373,12 +388,14 @@ the anonymous user has probably no add rights for this addressbook. addressbook
the anonymous user needs add rights for it! addressbook cs Anonymní uživatel potřebuje práva k přidávání záznamů.
the anonymous user needs read it! addressbook cs Anonymní uživatel potřebuje právo pro čtení!
the document can contain placeholder like $$n_fn$$, to be replaced with the contact data (%1full list of placeholder names%2). addressbook cs Dokument může obsahovat rezervovaná místa jako $$n_fn$$, která budou nahrazena daty kontaktu (%1kompletní seznam názvů rezervovaných míst%2).
+the zip extension is needed, to insert contact data in openoffice or msoffice documents. addressbook cs Pro vložení údajů kontaktu do dokumentů OpenOffice a MS Office je zapotřebí rozšíření zip
there was an error saving your data :-( addressbook cs Došlo k chybě při ukládání Vašich dat :-(
this module displays a contactform, that stores direct into the addressbook. addressbook cs Tento modul zobrazuje formulář kontaktu, který ukládá data přímo do adresáře.
this module displays block from a adddressbook group. addressbook cs Tento modul zobrazuje blok z adresářové skupiny.
this person's first name was not in the address book. addressbook cs Křestní jméno této osoby nebylo v adresáři.
this person's last name was not in the address book. addressbook cs Příjmení této osoby nebylo v adresáři.
timezone addressbook cs Časová zóna
+title addressbook cs Titul
to many might exceed your execution-time-limit addressbook cs příliš mnoho může překročit nastavený časový limit spuštění
today is %1's birthday! common cs Dnes má narozeniny %1!
tomorrow is %1's birthday. common cs Zítra má narozeniny %1!
@@ -412,6 +429,7 @@ where to add the email address addressbook cs kam přidat e-mailovou adresu
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 cs Jaký formát adres má adresář používat u zemí, jejichž adresní formát nezná. Pokud je formát znám, je použit bez ohledu na toto nastavení.
which addressbook should be selected when adding a contact and you have no add rights to the current addressbook. addressbook cs Který adresář má být vybrán v případě, že přidáváte kontakt a pro aktuální adresář nemáte dostatečná práva.
which charset should be used for the csv export. the system default is the charset of this egroupware installation. addressbook cs Která znaková sada má být použita pro CSV export? Výchozí znakovou sadou je znaková sada použitá pro instalaci eGroupWare.
+which charset should be used for the vcard export. addressbook cs Jaká znaková sada má být použita pro export do vCard.
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 cs Které položky budou exportovány. Všechny znamená každou položku včetně uživatelsky definovaných. Firemní nebo domácí obsahuje jen jméno, firmu a vybranou adresu.
whole query addressbook cs celý dotaz
work email if given, else home email addressbook cs Pracovní e-mail, je-li definován, jinak domácí
@@ -422,6 +440,7 @@ yes, for the next three days addressbook cs Ano, po následující tři měsíce
yes, for the next two weeks addressbook cs Ano, po následující dva týdny
yes, for the next week addressbook cs Ano, po následující týden
yes, for today and tomorrow addressbook cs Ano, po dnešní a zítřejší den
+yes, only admins can purge deleted items admin cs Ano, jen administrátoři mohou trvale odstranit smazané položky
you are not permitted to delete contact %1 addressbook cs Nemáte oprávnění ke smazání kontaktu %1
you are not permittet to delete this contact addressbook cs Nemáte oprávnění ke smazání tohoto kontaktu
you are not permittet to edit this contact addressbook cs Nemáte oprávnění k editaci tohoto kontaktu
diff --git a/admin/lang/egw_cs.lang b/admin/lang/egw_cs.lang
index 6668277e93..03df391d15 100644
--- a/admin/lang/egw_cs.lang
+++ b/admin/lang/egw_cs.lang
@@ -26,6 +26,7 @@ account-id's have to be integers! admin cs ID účtů musí být celá kladná
acl manager admin cs Správce ACL
acl rights common cs ACL práva
action admin cs Akce
+actions admin cs Akce
activate wysiwyg-editor admin cs aktivovat WYSIWYG editor
add a category admin cs přidat kategorii
add a group admin cs přidat skupinu
@@ -72,6 +73,7 @@ applications list admin cs Seznam aplikací
applications run rights updated. admin cs Oprávnění pro běh aplikace byla zaktualizována.
applies the changes admin cs použije změny
apply the changes admin cs Použít změny
+archive: zip or tar admin cs Archiv: zip nebo tar
are you sure you want to delete the application %1 ? admin cs Určitě chcete smazat aplikaci %1 ?
are you sure you want to delete this account ? admin cs Určitě chcete smazat tento účet?
are you sure you want to delete this application ? admin cs Určitě chcete smazat tuto aplikaci?
@@ -95,12 +97,15 @@ bi-dir passthrough admin cs průchozí v obou směrech
bi-directional admin cs obousměrné
bottom admin cs Dolní okraj
calculate next run admin cs Vypočítat další spuštění
+calendar recurrence horizont in days (default 1000) admin cs Horizont opakujících se událostí v kalendáři (standardně 1000 dní)
can change password admin cs Může změnit heslo
cancel testjob! admin cs Ukočit testovací úlohu
cancel this scheduled command admin cs Ukončit tento naplánovaný příkaz
categories list admin cs Seznam kategorií
category %1 has been saved ! admin cs Kategorie %1 byla uložena!
+category deleted. admin cs Kategorie byla smazána
category list admin cs Seznam kategorie
+category saved. admin cs Kategorie byla uložena
change account_id admin cs Změnit ID účtu
change acl rights admin cs změnit ACL práva
change config settings admin cs Změnít konfigurační nastavení
@@ -109,12 +114,16 @@ change password for %1 admin cs změnit heslo pro %1
check acl for entries of not (longer) existing accounts admin cs Zkontrolovat ACL zda neobsahují záznamy již zrušených účtů
check ip address of all sessions admin cs Kontrolovat IP adresy všech relací
check items to %1 to %2 for %3 admin cs Zkontrolovat položky k %1 do %2 pro %3
+children admin cs Potomci
click to select a color admin cs Klikněte pro výběr barvy
color admin cs Barva
command scheduled to run at %1 admin cs Spuštění příkazu naplánováno na %1
+commercial: all sorts of companies admin cs Komerční: všechny typy společností
+config password or md5 hash from the header.inc.php admin cs Heslo konfigurace nebo MD5 hash ze souboru header.inc.php
cookie domain (default empty means use full domain name, for sitemgr eg. ".domain.com" allows to use the same cookie for egw.domain.com and www.domain.com) admin cs Cookie doména (výchozí prázdná hodnota znamená použití celého doménového jména; ve Správci webu např. ".domena.cz" dovoluje použít stejnou cookie pro egw.domena.cz i www.domena.cz)
cookie path (allows multiple egw sessions with different directories, has problemes with sitemgr!) admin cs Cookie cesta (umožňuje několik eGW relací s různými adresáři, nefunguje korektně ve Správci webu!)
could not remote execute the command admin cs Příkaz nebylo možné vzdáleně spustit.
+country admin cs Země
country selection admin cs Výběr země
create group admin cs Vytvořit skupinu
created admin cs Vytvořeno
@@ -161,7 +170,9 @@ deny access to peer servers admin cs Zablokovat přístup k peer serverům
deny access to phpinfo admin cs Zablokovat přístup k phpinfo
deny access to site configuration admin cs Zablokovat přístup k nastavení webu
deny access to user accounts admin cs Zablokovat přístup k uživatelským účtům
+deny all users access to create and manage private categories ? admin cs Zablokovat všem uživatelům přístup ke tvorbě a správě soukromých kategorií?
deny all users access to grant other users access to their entries ? admin cs Zablokovat všem uživatelům právo přidělit přístup k vlastním záznamům jiným uživatelům ?
+deny all users access to preferences ? admin cs Zablokovat všem uživatelům přístup k předvolbám?
description can not exceed 255 characters in length ! admin cs Popis nesmí překročit délku 255 znaků !
determines the order the fields are displayed admin cs určuje pořadí zobrazování položek
disable "auto completion" of the login form admin cs Zakázat funkci "automatického dokončení" na přihlašovacím formuláři
@@ -191,7 +202,9 @@ edit this group admin cs editovat tuto skupinu
edit this user admin cs editovat tohoto uživatele
edit user admin cs editovat uživatele
edit user account admin cs Editovat uživatelský účet
+educational: universities, schools, ... admin cs Vzdělávací: školy, univerzity...
egroupware directory admin cs Adresář eGroupWaru
+egroupware version admin cs Verze eGroupWaru
either install id and config password needed or the remote hash! admin cs Je zapotřebí instalační ID a konfigurační heslo nebo vzdálený hash!
email account active admin cs e-mailový účet aktivní
email address admin cs e-mailová adresa
@@ -250,6 +263,8 @@ forward also to admin cs přeposlat také na
forward emails to admin cs přeposlat e-maily na
forward only admin cs jen přeposlat
global categories common cs Globální kategorie
+go directly to admin menu, returning here the next time you click on administration. admin cs Přejít přímo do administrátorského menu, až se sem budete chtít vrátit příště, klikněte na administraci.
+governmental: incl. state or municipal authorities or services admin cs Vládní: včetně státních nebo městských úřadů a služeb
grant admin cs Povolit
group ? admin cs skupina?
group has been added common cs Skupina byla přidána
@@ -258,6 +273,7 @@ group has been updated common cs Skupina byla aktualizována
group list admin cs Seznam skupin
group manager admin cs Správce skupin
group name admin cs Název skupiny
+hash admin cs Hash
hide php information admin cs skrýt php informace
home directory admin cs Domovský adresář
host information admin cs Informace o serveru (host)
@@ -276,10 +292,13 @@ inbound admin cs příchozí
initial admin cs Počáteční
install crontab admin cs Instalovat crontab
install id admin cs Instalační ID
+installation type admin cs Typ instalace
installed applications common cs Instalované aplikace
+installed applications, percentage of allowed users and total number of entries. admin cs Instalované aplikace, procento povolených uživatelů a celkový počet záznamů.
installed crontab admin cs Nainstalovaný crontab
instance admin cs Instance
interface admin cs Rozhranní
+international use admin cs Mezinárodní použití
invalid formated date "%1"! admin cs Neplatný formát datumu "%1"!
invalid remote id or name "%1"! admin cs Neplatné vzdálené ID nebo název "%1"!
invalid value "%1" use yes or no! admin cs Neplatná hodnota "%1", použijte ano nebo ne!
@@ -291,6 +310,7 @@ last %1 logins admin cs Posledních %1 přihlášení
last %1 logins for %2 admin cs Posledních %1 přihlášení pro %2
last login admin cs poslední přihlášení
last login from admin cs poslední příhlášení z
+last submission: admin cs Naposledy odesláno:
last time read admin cs Naposledy přečteno
ldap accounts context admin cs LDAP kontext účtů
ldap default homedirectory prefix (e.g. /home for /home/username) admin cs LDAP výchozí prefix domovského adresáře (např. /home pro /home/username)
@@ -306,14 +326,18 @@ leave the group untouched and return back to the list admin cs ponechat skupinu
leave without saveing the entry admin cs ukončit bez uložení záznamu
leaves without saveing admin cs ukončí bez ukládání
length rows admin cs Délka Řádky
+limit global category to members of a certain group admin cs Omezit globální kategorie na členy konkrétní skupiny
+limit to members of admin cs Omezit na členy
list config settings admin cs Zobrazit konfigurační nastavení
list current sessions admin cs Zobrazit aktuální relace
list of current users admin cs seznam aktuálních uživatelů
+logged out admin cs odhlášen(a)
login history admin cs Historie přihlášení
login message admin cs Přihlašovací zpráva
login screen admin cs Přihlašovací obrazovka
login shell admin cs Přihlašovací shell
login time admin cs Čas přihlášení
+login-status admin cs Stav přihlášení
loginid admin cs Přihlašovací ID
logintime admin cs Čas přihlášení
logoutime admin cs Čas odhlášení
@@ -347,8 +371,19 @@ no modes available admin cs žádné režimy nejsou k dispozici
no permission to add groups admin cs nemáte oprávnění přidávat skupiny
no permission to add users admin cs nemáte oprávnění přidávat uživatele
no permission to create groups admin cs nemáte oprávnění vytvářet skupiny
+non profit: clubs, associations, ... admin cs Neziskové: spolky, asociace...
note: ssl available only if php is compiled with curl support admin cs Upozornění: SSL je k dispozici jen v případě, že je PHP zkompilováno s podporou curl
+number of active users admin cs počet aktivních uživatelů
number of row for a multiline inputfield or line of a multi-select-box admin cs počet řádků ve víceřádkovém vstupním poli nebo ve výběrovém okně
+number of sessions / egroupware logins in the last 30 days admin cs Počet relací / Přihlášení do eGroupWaru během posledních 30 dní
+number of users admin cs Počet uživatelů
+official egroupware usage statistic admin cs Oficiální statistika používání eGroupWaru
+one day admin cs jeden den
+one hour admin cs jednu hodinu
+one month admin cs jeden měsíc
+one week admin cs jeden týden
+only below displayed information is directly submitted to %s. admin cs Pouze níže zobrazené informace jsou přímo odeslány na %s.
+operating system admin cs Operační systém
order admin cs Pořadí
outbound admin cs odchozí
own install id: admin cs Vlastní instalační ID:
@@ -364,12 +399,15 @@ permission denied admin cs Přístup zamítnut
permission denied !!! admin cs Přístup zamítnut !!!
permissions admin cs Oprávnění
permissions this group has admin cs Oprávnění této skupiny
+personal: eg. within a family admin cs Osobní: např. v rámci rodiny
+php version admin cs Verze PHP
phpinfo admin cs Informace o PHP
please enter a name admin cs Prosím zadejte jméno
please enter a name for that server ! admin cs Zadejte prosím název serveru !
please run setup to become current admin cs Spusťte prosím setup pro aktualizaci
please select admin cs Prosím zvolte
postfix with ldap admin cs Postfix s LDAP
+postpone for admin cs Odložit o
preferences admin cs Předvolby
primary group admin cs primární skupina
qmaildotmode admin cs Tečkový režim Qmail
@@ -388,6 +426,7 @@ requested admin cs Požadovaný
return to admin mainscreen admin cs návrat na hlavní stránku administrace
return to view account admin cs Návrat na zobrazení účtu
route all mails to admin cs Směrovat všechny zprávy na
+rpm or debian package admin cs RPM nebo balíček Debianu
run asynchronous services admin cs Spustit asynchronní služby
save the category admin cs uložit katergorii
save the category and return back to the list admin cs uložit kategorii a vrátit se zpět na seznam
@@ -414,6 +453,7 @@ server password admin cs Heslo serveru
server type(mode) admin cs Typ (režim) serveru
server url admin cs URL serveru
server username admin cs Uživatelské jméno serveru
+sessions last 30 days admin cs Relací za posledních 30 dní
set preference values. admin cs Nastavit preferované hodnoty.
should exceptions contain a trace (including function arguments) admin cs Mají výjimky obsahovat i trasování (včetně argumentů funkcí)
should the login page include a language selectbox (useful for demo-sites) ? admin cs Má přihlašovací stránka zobrazovat rozbalovací nabídku s výběrem jazyka (užitečné pro demo stránky)?
@@ -437,8 +477,13 @@ standard pop3 server admin cs standardní POP3 server
standard smtp-server admin cs standardní SMTP server
start testjob! admin cs Zahájit testovací úlohu
submit changes admin cs Odeslat změny
+submit displayed information? admin cs Odeslat zobrazené informace?
+submit statistic information admin cs Odeslat statistické informace
submit the search string admin cs Odeslat hledaný řetězec
+submit to egroupware.org admin cs Odeslat na egroupware.org
subtype admin cs Podtyp
+subversion checkout admin cs Repozitář Subversion
+success admin cs podařilo se
switch it off, if users are randomly thrown out admin cs vypněte, pokud jsou uživatelé náhodně vyhazováni
template selection admin cs Výběr šablony
text entry admin cs Textový záznam
@@ -449,6 +494,7 @@ that name has been used already admin cs Takový název už byl použit
that server name has been used already ! admin cs Takový název serveru už byl použit!
the api is current admin cs API je aktuální
the api requires an upgrade admin cs API vyžaduje aktualizaci
+the cumulated and anonymised data will be publically available: admin cs Souhrnné anonymní výsledky budou veřejně dostupné na adrese:
the groups must include the primary group admin cs Skupiny musí obsahovat i primární skupinu
the install id of an instance can be found under admin > site configuration admin cs Instalační ID instance je možné najít pod Administrátor > Konfigurace webu
the login and password can not be the same admin cs Přihlašovací jméno a heslo se nesmí shodovat
@@ -466,12 +512,17 @@ this category is currently being used by applications as a parent category admin
timeout for application session data in seconds (default 86400 = 1 day) admin cs Časový limit vypršení dat aplikační relace v sekundách (výchozí hodnota je 86400 = 1 den)
timeout for sessions in seconds (default 14400 = 4 hours) admin cs Časový limit vypršení relace v sekundách (výchozí hodnota je 14400 = 4 hodiny)
times admin cs Časy
+to allow us to track the growth of your individual installation use this submit id, otherwise delete it: admin cs Pokud nám chcete umožnit sledovat vývoj Vaší vlastní instalace, použijte toto submit ID, jinak ho smažte:
top admin cs nahoře
total of %1 id's changed. admin cs Celkem změněno %1 ID.
total records admin cs Celkem záznamů
true admin cs ano
trust level admin cs Stupeň důvěry
trust relationship admin cs Vztah důvěry
+two days admin cs dva dny
+two hours admin cs dvě hodiny
+two months admin cs dva měsíce
+two weeks admin cs dva týdny
type '%1' already exists !!! admin cs typ '%1' již existuje !!!
type of customfield admin cs Typ uživatelsky definované položky
under windows you need to install the asyncservice %1manually%2 or use the fallback mode. fallback means the jobs get only checked after each page-view !!! admin cs Pod Windows musíte nainstalovat asynchronní službu %1ručně%2 nebo použít náhradní režim. Náhradní režim funguje tak, že úlohy jsou zkontrolovány jen po každém zobrazení stránky !!!
@@ -480,6 +531,7 @@ unknown command %1! admin cs Neznámý příkaz %1!
unknown option %1 admin cs Neznámá volba %1
updated admin cs aktualizováno
url of the egroupware installation, eg. http://domain.com/egroupware admin cs URL instalace eGroupWaru, např. http://domain.com/egroupware
+usage admin cs Využití
use cookies to pass sessionid admin cs Požívat cookies pro předání id relace
use pure html compliant code (not fully working yet) admin cs Používat HTML kompatibilní kód (zatím není zcela funkční)
use theme admin cs Použít téma
@@ -497,6 +549,8 @@ view error log admin cs Zobrazit chybový protokol
view sessions admin cs Zobrazit relace
view this user admin cs Zobrazit uživatele
view user account admin cs Zobrazit uživatelský účet
+we ask for the data to improve our profile in the press and to get a better understanding of egroupware's user base and it's needs. admin cs Tato data požadujeme jen pro statistické účely, abychom získali obecný přehled o využití eGroupWaru ve světě.
+we hope you understand the importance for this voluntary statistic and not deny it lightly. admin cs Neukládáme žádné údaje, které se týkají Vaší identity.
who would you like to transfer all records owned by the deleted user to? admin cs Komu chcete přesunout VŠECHNY záznamy vlastněné smazaným uživatelem?
would you like egroupware to cache the egw info array ? admin cs Chcete aby eGroupWare použil vyrovnávací paměť pro pole egw info?
would you like egroupware to check for a new version when admins login ? admin cs Chcete aby eGroupWare kontroloval dostupnost nové verze při přihlášení administrátora ?
@@ -507,6 +561,7 @@ wrong account type: %1 is no %2 !!! admin cs Špatný typ účtu: %1 NENÍ %2 !!
wrong admin-account or -password !!! admin cs Špatný účet administrátora nebo heslo !!!
xml-rpc admin cs XML-RPC
you have entered an invalid expiration date admin cs Zadal(a) jste neplatné datum expirace
+you have no email address for your user set !!! admin cs Váš uživatel nemá nastavenu žádnou e-mailovou adresu !!!
you have to enter a name, to create a new field!!! admin cs Musíte zadat název pro vytvoření nové položky!!!
you have to enter a name, to create a new type!!! admin cs Musíte zadat název pro vytvoření nového typu!!!
you must add at least 1 permission or group to this account admin cs Musíte zadat nejméně jedno oprávnění nebo skupinu k tomuto účtu
@@ -520,4 +575,5 @@ you must select a file type admin cs Musíte vybrat typ souboru
you must select at least one group member. admin cs Musíte vybrat alespoň jednoho člena skupiny
you need to enter install id and password! admin cs Musíte zadat instalační ID a heslo!
you will need to remove the subcategories before you can delete this category admin cs Než smažete tuto kategorii, musíte smazat všechny podkategorie !
+your last submission was less then %1 days ago! admin cs Naposledy jste odeslal(a) informace před méně než %1 dny!
your session could not be verified. admin cs Vaše relace nemohla být ověřena.
diff --git a/admin/lang/egw_es-es.lang b/admin/lang/egw_es-es.lang
index fd5b132508..5a6ae41fdd 100644
--- a/admin/lang/egw_es-es.lang
+++ b/admin/lang/egw_es-es.lang
@@ -97,12 +97,15 @@ bi-dir passthrough admin es-es bidireccional passthrough
bi-directional admin es-es bidireccional
bottom admin es-es parte inferior
calculate next run admin es-es Calcular la siguiente ejecución
+calendar recurrence horizont in days (default 1000) admin es-es Horizonte de recurrencia del calendario en días (predeterminado: 1000)
can change password admin es-es Puede cambiar la contraseña
cancel testjob! admin es-es Cancelar trabajo de prueba
cancel this scheduled command admin es-es Cancelar este comando programado
categories list admin es-es Lista de categorías
category %1 has been saved ! admin es-es La categoría %1 ha sido guardada
+category deleted. admin es-es Se ha borrado la categoría
category list admin es-es Lista de categorías
+category saved. admin es-es Se ha guardado la categoria
change account_id admin es-es Cambiar el campo account_id
change acl rights admin es-es cambiar permisos de ACL
change config settings admin es-es Cambiar opciones de configuración
@@ -111,6 +114,7 @@ change password for %1 admin es-es cambiar la contraseña para %1
check acl for entries of not (longer) existing accounts admin es-es Comprobar las ACL para las entradas de cuentas que no existen
check ip address of all sessions admin es-es Comprobar la IP de todas las sesiones
check items to %1 to %2 for %3 admin es-es Seleccionar los elementos para %1 a %2 para %3
+children admin es-es Hijos
click to select a color admin es-es Pulse para seleccionar un color
color admin es-es Color
command scheduled to run at %1 admin es-es El comando se ha planificado para ejecutarse a %1
@@ -166,7 +170,9 @@ deny access to peer servers admin es-es Denegar acceso a servidores 'peer'
deny access to phpinfo admin es-es Denegar acceso a phpinfo
deny access to site configuration admin es-es Denegar acceso a la configuración del sitio
deny access to user accounts admin es-es Denegar acceso a las cuentas de usuario
+deny all users access to create and manage private categories ? admin es-es ¿Denegar a todos los usuarios el acceso para crear y gestionar las categorías privadas?
deny all users access to grant other users access to their entries ? admin es-es ¿Denegar a los usuarios conceder acceso a otros usuarios para sus registros?
+deny all users access to preferences ? admin es-es ¿Denegar a todos los usuarios el acceso a las preferencias?
description can not exceed 255 characters in length ! admin es-es ¡La descripción no puede exceder de 255 caracteres de longitud!
determines the order the fields are displayed admin es-es determina el orden en que se muestran los campos
disable "auto completion" of the login form admin es-es Desactivar completado automático en el formulario de inicio de sesión
@@ -213,7 +219,9 @@ enter some random text for app_session encryption (requires mcrypt) admin es
enter the background color for the login page admin es-es Introduzca el color de fondo para la página de inicio de sesión
enter the background color for the site title admin es-es Introduzca el color de fondo para el título del sitio
enter the full path for temporary files. examples: /tmp, c:\temp admin es-es Introduzca la ruta completa para los archivos temporales. Ejemplos: /tmp, C:\TEMP
+enter the full path for temporary files. examples: /tmp, c:temp admin es-es Introduzca la ruta completa para los archivos temporales. Ejemplos: /tmp, C:\TEMP
enter the full path for users and group files. examples: /files, e:\files admin es-es Introduzca la ruta completa para los archivos de usuarios y de grupo. Ejemplos: /files, E:\FILES
+enter the full path for users and group files. examples: /files, e:files admin es-es Introduzca la ruta completa para los archivos de usuarios y de grupo. Ejemplos: /files, E:\FILES
enter the hostname of the machine on which this server is running admin es-es Introduzca el nombre de la máquina sobre la cual se está ejecutando este servidor
enter the location of egroupware's url. example: http://www.domain.com/egroupware or /egroupware no trailing slash admin es-es Introduzca la URL de eGroupWare. Ejemplo: http://www.dominio.com/egroupware o /egroupware. Sin barra al final
enter the search string. to show all entries, empty this field and press the submit button again admin es-es Introduzca la cadena de búsqueda. Para mostrar todas las entradas, vacíe este campo y pulse de nuevo el botón ENVIAR.
@@ -320,6 +328,8 @@ leave the group untouched and return back to the list admin es-es Dejar el grupo
leave without saveing the entry admin es-es salir sin guardar la entrada
leaves without saveing admin es-es sale sin guardar
length rows admin es-es Longitud Filas
+limit global category to members of a certain group admin es-es Limitar la categoría global a los miembros de cierto grupo
+limit to members of admin es-es Limitar a los miembros de
list config settings admin es-es Lista de las opciones de configuración
list current sessions admin es-es Lista de las sesiones actuales
list of current users admin es-es Lista de usuarios actuales
@@ -553,6 +563,7 @@ wrong account type: %1 is no %2 !!! admin es-es Tipo de cuenta incorrecta: ¡%1
wrong admin-account or -password !!! admin es-es ¡La cuenta de administración o la contraseña son incorrectas!
xml-rpc admin es-es XML-RPC
you have entered an invalid expiration date admin es-es Ha introducido una fecha de expiración que no es válida
+you have no email address for your user set !!! admin es-es ¡No se ha establecido todavía una dirección de correo para su usuario!
you have to enter a name, to create a new field!!! admin es-es Tiene que introducir un nombre para crear un nuevo campo
you have to enter a name, to create a new type!!! admin es-es ¡Tiene que introducir un nombre para crear un tipo nuevo!
you must add at least 1 permission or group to this account admin es-es Debe añadir al menos 1 permiso o grupo para esta cuenta
diff --git a/calendar/lang/egw_cs.lang b/calendar/lang/egw_cs.lang
index 9f337ce778..74694f1117 100644
--- a/calendar/lang/egw_cs.lang
+++ b/calendar/lang/egw_cs.lang
@@ -1,7 +1,13 @@
%1 %2 in %3 calendar cs %1 %2 v %3
+%1 event(s) %2 calendar cs %1 událost(i/í) %2
+%1 event(s) %2, %3 failed because of insufficent rights !!! calendar cs %1 událost(i/í) %2, %3 selhalo kvůli nedostatečným oprávněním !!!
+%1 participants removed because of missing invite grants calendar cs %1 účastníků odstraněno kvůli chybějícím oprávnění k pozvání
%1 records imported calendar cs %1 záznamů importováno
%1 records read (not yet imported, you may go back and uncheck test import) calendar cs %1 záznamů načteno (zatím nebyly importovány, můžete se vrátit zpět a odškrtnout Testovat Import)
%1 weeks calendar cs %1 týdnů
+(%1 events in %2 seconds) calendar cs (%1 událostí během %2 sekund)
+, exceptions preserved calendar cs , výjimky zachovány
+, stati of participants reset calendar cs , stavy účastníků resetovány
please note: the calendar use the holidays of your country, which is set to %1. you can change it in your %2. holidays are %3 automatic installed from %4. you can changed it in %5. calendar cs Upozornění: Kalendář používá svátky Vaší země, aktuálně je nastavena %1. Můžete jí změnit v sekci %2. Svátky jsou %3 automaticky instalovány z %4. Můžete je změnit v sekci %5.
a non blocking event will not conflict with other events calendar cs Neblokující událost nebude v konfliktu s jinými událostmi
accept or reject an invitation calendar cs Přijmout nebo odmítnout pozvání
@@ -11,6 +17,7 @@ action that caused the notify: added, canceled, accepted, rejected, ... calendar
actions calendar cs Akce
actions... calendar cs Akce...
add alarm calendar cs Přidat připomínku
+add timesheet entry calendar cs Přidat pracovní výkaz
added calendar cs Přidáno
added by synchronisation calendar cs přidáno synchronizací
after %1 calendar cs Po %1
@@ -24,15 +31,20 @@ alarms calendar cs Připomínky
all categories calendar cs Všechny kategorie
all day calendar cs celý den
all events calendar cs Všechny události
+all exceptions are converted into single events. calendar cs Všechny výjimky jsou konvertovány do jednotlivých událostí.
all future calendar cs Všechny budoucí
all incl. rejected calendar cs Všechny včetně odmítnutých
all participants calendar cs Všichni účastníci
allows to edit the event again calendar cs Dovoluje znovu editovat událost
+always calendar cs Vždy
+apply the action on the whole query, not only the shown events calendar cs Aplikovat akci na celý výsledek dotazu, nejen na zobrazené události.
apply the changes calendar cs použít změny
are you sure you want to delete this country ? calendar cs Určitě chcete smazat tuto zemi?
are you sure you want to delete this holiday ? calendar cs Určitě chcete smazat tento svátek?
+automatically purge old events after admin cs Automaticky odstranit staré události po
back half a month calendar cs zpět o půl měsíce
back one month calendar cs zpět o měsíc
+back one year calendar cs jeden rok zpět
before %1 calendar cs Před %1
before current date calendar cs Před aktuálním datem
before the event calendar cs před událostí
@@ -40,6 +52,9 @@ birthday calendar cs Narozeniny
birthdays admin cs Narozeniny
busy calendar cs zaneprázdněn
by calendar cs (kým)
+calendar - list calendar cs Kalendář - Seznam
+calendar - multi-weekly calendar cs Kalendář - Vícetýdenní
+calendar - planner calendar cs Kalendář - Plánovač
calendar csv export calendar cs Export kalendáře do CSV
calendar event calendar cs Událost v kalendáři
calendar holiday management admin cs Správa svátků v kalendáři
@@ -50,9 +65,15 @@ calendar-fieldname calendar cs kalendář-jméno položky
can't add alarms in the past !!! calendar cs Není možné přidávat připomínky do minulosti !!!
can't aquire lock! calendar cs Není možné získat zámek!
canceled calendar cs Stornováno
+category %1 removed because of missing rights calendar cs Kategorie %1 byla odstraněna kvůli chybějícím oprávněním
+category acl common cs ACL kategorie
+category acl only restrict adding a category to an event or changing status of a participant. it does not change the visibility of an event! calendar cs ACL kategorie pouze omezuje přiřazení kategorie k události nebo změnu stavu účastníka. Neovlivňuje viditelnost události!
chair calendar cs Předseda
+change history calendar cs Historie změn
+change your participant status calendar cs Změnit Váš stav účastníka
charset of file calendar cs Znaková sada souboru
check all calendar cs Označit vše
+choose a category calendar cs Vybrat kategorii
close the window calendar cs Zavřít okno
compose a mail to all participants after the event is saved calendar cs napsat dopis všem účastníkům po uložení události
conflict calendar cs Konflikt
@@ -61,6 +82,7 @@ copy this event calendar cs Kopírovat tuto událost
copy your changes to the clipboard, %1reload the entry%2 and merge them. calendar cs Zkopírujte Vaše změny do clipboardu, %1znovu načtěte záznam%2 a proveďte sloučení změn.
countries calendar cs Země
country calendar cs Země
+create a new series calendar cs Vytvořit novou řadu
create an exception for the given date calendar cs Vytvořit výjimku pro zadané datum
create exception calendar cs Vytvořit výjimku
create new links calendar cs Vytvořit nové odkazy
@@ -68,8 +90,9 @@ csv calendar cs CSV
csv-fieldname calendar cs Název CSV pole
csv-filename calendar cs Jméno CSV souboru
custom fields common cs Volitelné položky
-custom_2 common cs volný/zaneprázdněn
+custom_2 common cs Dostupnost
daily calendar cs Denně
+day calendar cs den
days calendar cs dny
days of the week for a weekly repeated event calendar cs Dny v týdnu pro události s týdenním opakováním
days repeated calendar cs dní opakováno
@@ -81,19 +104,28 @@ default length of newly created events. the length is in minutes, eg. 60 for 1 h
default type of resources application selected in the calendar particpants research form. calendar cs Která aplikace má být v kalendáři přednastavena jako výchozí typ zdroje při výběru účastníků
default type of resources selection calendar cs Výchozí volba při výběru zdroje
default week view calendar cs Výchozí týdenní pohled
+delegated calendar cs Delegován(a)
+delete exceptions calendar cs Smazat výjimky
delete selected events calendar cs Smazat vybrané události
delete series calendar cs Smazat řady
delete this alarm calendar cs Smazat tuto připomínku
delete this event calendar cs Smazat tuto událost
delete this exception calendar cs Smazat tuto vyjímku
delete this series of recuring events calendar cs Smazat tyto řady opakujících se událostí
+deleted calendar cs Smazané
deny ressources reservation for private events calendar cs Zakázat rezervaci zdrojů pro soukromé události
disinvited calendar cs Zrušená pozvánka
display status of events calendar cs Zobrazit stav událostí
displayed view calendar cs zobrazený pohled
displays your default calendar view on the startpage (page you get when you enter egroupware or click on the homepage icon)? calendar cs Zobrazit výchozí pohled kalendáře na úvodní straně (stránka, na kterou se dostanete po přihlášení do eGroupWaru nebo kliknutím na ikonu Hlavní strana)?
+do not include events of group members calendar cs Nezahrnovat události členů skupin
+do you really want to change the start of this series? if you do, the original series will be terminated as of today and a new series for the future reflecting your changes will be created. calendar cs Opravdu chcete změnit začátek této řady? Pokud ano, originální řada bude ukončena k dnešnímu dni a nově bude vytvořena budoucí řada, která bude odpovídat Vaším změnám.
do you want a weekview with or without weekend? calendar cs Chcete týdenní pohled včetně víkendu nebo bez něj?
-do you want to be notified about new or changed appointments? you are not notified about changes you made yourself. you can limit the notifications to certain changes only. each item includes all notifications listed above. all modifications include changes of title, description, participants, but no participant responses. if the owner of an event requested any notifcations, he will always get participant responses like acceptions or rejections too. calendar cs Chcete být upozorněni na nové nebo změněné události? Budete upozorněni také na změny, které sami provedete. Upozornění můžete omezit jen na některé události. Každá položka zahrnuje všechna předchozí upozornění. Všechny modifikace zahrnují také změny titulku, popisu a účastníků (nikoli však jejich odpovědi). Pokud vlastník události žádal jakékoli zprávy o změnách, vždy dostane i odpovědi účastníků, mj. také přijetí a odmítnutí.
+do you want to be notified about changes of appointments you modified? calendar cs Chcete být upozorněn(a) na změny v událostech, které jste upravil(a)?
+do you want to be notified about new or changed appointments? you are not notified about changes you made yourself. you can limit the notifications to certain changes only. each item includes all notifications listed above. all modifications include changes of title, description, participants, but no participant responses. if the owner of an event requested any notifcations, he will always get participant responses like acceptions or rejections too. calendar cs Chcete být upozorněn(a) na nové nebo změněné události? Nebudete upozorněn(a) na změny, které sám(a) provedete. Upozornění můžete omezit jen na některé události. Každá položka zahrnuje všechna předchozí upozornění. Všechny modifikace zahrnují také změny titulku, popisu a účastníků (nikoli však jejich odpovědi). Pokud vlastník události žádal jakékoli zprávy o změnách, vždy dostane i odpovědi účastníků, mj. také přijetí a odmítnutí.
+do you want to be notified about new or changed appointments? you be notified about changes you make yourself. you can limit the notifications to certain changes only. each item includes all the notification listed above it. all modifications include changes of title, description, participants, but no participant responses. if the owner of an event requested any notifcations, he will always get the participant responses like acceptions and rejections too. calendar cs Chcete být upozorněn(a) na nové nebo změněné události? Budete upozorněn(a) také na změny, které sám(a) provedete. Upozornění můžete omezit jen na některé události. Každá položka zahrnuje všechna předchozí upozornění. Všechny modifikace zahrnují také změny titulku, popisu a účastníků (nikoli však jejich odpovědi). Pokud vlastník události žádal jakékoli zprávy o změnách, vždy dostane i odpovědi účastníků, mj. také přijetí a odmítnutí.
+do you want to edit this event as an exception or the whole series? calendar cs Chcete editovat tuto událost jako výjimku nebo celou řadu?
+do you want to keep the series exceptions in your calendar? calendar cs Chcete zachovat výjimky z řady ve svém kalendáři?
do you want to receive a regulary summary of your appointsments via email? the summary is sent to your standard email-address on the morning of that day or on monday for weekly summarys. it is only sent when you have any appointments on that day or week. calendar cs Chcete pravidelně dostávat přehled Vašich událostí e-mailem? Přehled bude odesílán na Vaši výchozí e-mailovou adresu každý den ráno, respektive v pondělí ráno v případě týdenních přehledů. Přehled bude odeslán jen v případě, že máte na daný den, resp. týden naplánovány nějaké události.
do you wish to autoload calendar holidays files dynamically? admin cs Chcete automaticky načíst soubory se svátky do kalendáře?
download calendar cs Stáhnout
@@ -101,6 +133,7 @@ download this event as ical calendar cs Stáhnout tuto událost jako iCal
duration of the meeting calendar cs Délka trvání setkání
edit exception calendar cs Editovat výjimku
edit series calendar cs Editovat řadu
+edit status or alarms for this particular day calendar cs Editovat stav nebo alarmy pro tento konkrétní den
edit this event calendar cs Editovat tuto událost
edit this series of recuring events calendar cs Editovat tuto řadu opakujících se událostí
empty for all calendar cs prázdné znamená vše
@@ -111,17 +144,20 @@ enddate / -time of the meeting, eg. for more then one day calendar cs Koncové d
enddate of the export calendar cs Koncové datum exportu
ends calendar cs končí
error adding the alarm calendar cs Chyba při přidávání připomínky
+error: can't delete original series! calendar cs Chyba: Nemohu smazat původní řadu!
error: importing the ical calendar cs Chyba při importu iCal
error: no participants selected !!! calendar cs Chyba: nebyli vybráni žádní účastníci !!!
error: ressources reservation in private events is not allowed!!! calendar cs Chyba: rezervace zdrojů pro soukromé události není povolena !!!
error: saving the event !!! calendar cs Chyba pri ukládání události !!!
error: starttime has to be before the endtime !!! calendar cs Chyba: počáteční čas musí předcházet koncovému času !!!
error: the entry has been updated since you opened it for editing! calendar cs Chyba: během Vaší editace byl záznam zaktualizován!
+error: you can't shift a series from the past! calendar cs Chyba: Není možné posouvat řadu z minulosti!
event copied - the copy can now be edited calendar cs Událost zkopírována - kopii lze nyní editovat
event deleted calendar cs Událost smazána
event details follow calendar cs Následují detaily události
event saved calendar cs Událost uložena
event will occupy the whole day calendar cs Událost zabere celý den
+every user can invite other users and groups admin cs Každý uživatel může zvát jiné uživatele a skupiny
exception calendar cs Výjimka
exception created - you can now edit or delete it calendar cs Výjimka vytvořena - nyní jí můžete editovat nebo smazat
exceptions calendar cs Výjimky
@@ -131,6 +167,7 @@ export calendar cs Exportovat
extended calendar cs Rozšířený
extended updates always include the complete event-details. ical's can be imported by certain other calendar-applications. calendar cs Rozšířené aktualizace vždy zahrnují kompletní detaily události. iCal soubory lze importovat do jiných kalendářů.
fieldseparator calendar cs Oddělovač položek
+filemanager calendar cs Správce souborů
filename calendar cs Jméno souboru
filename of the download calendar cs Jméno souboru ke stažení
find free timeslots where the selected participants are availible for the given timespan calendar cs Najdi tři volné časové úseky v daném rozmezí, během kterých jsou vybraní účastníci volní
@@ -140,9 +177,10 @@ for which views should calendar show distinct lines with a fixed time interval.
format of event updates calendar cs Formát aktualizací úkolů
forward half a month calendar cs dopředu o půl měsíce
forward one month calendar cs dopředu o měsíc
+forward one year calendar cs dopředu o rok
four days view calendar cs Čtyřdenní pohled
-freebusy common cs Volný/Zaneprázdněn
-freebusy: unknow user '%1', wrong password or not availible to not loged in users !!! calendar cs Volný/zaneprázdněn: Neznámý uživatel '%1', chybné heslo nebo informace není dostupná nepřihlášeným uživatelům !!!
+freebusy common cs Dostupnost
+freebusy: unknow user '%1', or not available for unauthenticated users! calendar cs Dostupnost: Neznámý uživatel '%1' nebo je informace nepřístupná pro nepřihlášené uživatele!
freetime search calendar cs Hledání volného času
fri calendar cs Pá
full description calendar cs Celý popis
@@ -154,18 +192,25 @@ global public only calendar cs veřejné jen globálně
group invitation calendar cs Skupinová pozvánka
group planner calendar cs Skupinový plánovač
group public only calendar cs veřejné jen pro skupinu
+group(s) or user(s) whose calendars to show (if acl exists) calendar cs Skupiny nebo uživatelé jejichž kalendáře mají být zobrazeny (pokud existují ACL)
groupmember(s) %1 not included, because you have no access. calendar cs Členové skupin(y) %1 nebyly zahrnuti, protože nemáte přístup.
+groups: other users can allways be invited, only groups require an invite grant admin cs Skupiny: ostatní uživatelé mohou být vždy pozváni, jen skupiny vyžadují oprávnění k pozvání.
h calendar cs h
here is your requested alarm. calendar cs Zde je Váše požadovaná připomínka.
+hide private events calendar cs Skrýt soukromé události
hide private infos calendar cs Skrýt soukromé informace
high priority calendar cs vysoká priorita
+history calendar cs Historie
+history logging admin cs Protokolování historie
holiday calendar cs Svátek
holiday management calendar cs Správa svátků
holidays calendar cs Svátky
hours calendar cs hodiny
how far to search (from startdate) calendar cs jak daleko hledat (od počátečního data)
+how many describtion lines should be directly visible. further lines are available via a scrollbar. calendar cs Kolik řádek popisu má být přímo vidět. Další jsou dostupné pomocí posouvací lišty.
how many minutes should each interval last? calendar cs Kolik minut by měl každý interval trvat?
how many weeks should the multiple week view show? calendar cs Kolik týdnů má zobrazovat vícetýdenní pohled?
+how much entries to skip calendar cs Kolik záznamů přeskočit
ical calendar cs iCal
ical / rfc2445 calendar cs iCal / rfc2445
ical export calendar cs Exportovat iCal
@@ -173,17 +218,23 @@ ical file calendar cs iCal soubor
ical import calendar cs Importovat iCal
ical successful imported calendar cs iCal úspěšně naimportován
if checked holidays falling on a weekend, are taken on the monday after. calendar cs Pokud zaškrtnete, jsou svátky připadající na víkend automaticky přesunuty na následující pondělí.
+if start day differs calendar cs Pokud se liší počáteční den
if you dont set a password here, the information is available to everyone, who knows the url!!! calendar cs Pokud zde nenastavíte heslo, bude informace dostupná každému, kdo zná adresu (URL)!!!
ignore conflict calendar cs Ingorovat konflikt
import calendar cs Importovat
import csv-file common cs Importovat CSV soubor
imports events into your calendar from a csv file. csv means 'comma seperated values'. however in the options tab you can also choose other seperators. calendar cs Importuje události z CSV souboru do Vašeho kalendáře. CSV znamená 'hodnoty oddělené čárkou'. Nicméně v záložce voleb si můžete vybrat jiné oddělovače.
+initially year aligned calendar cs nejprve zarovnané na rok
interval calendar cs Interval
invalid email-address "%1" for user %2 calendar cs Neplatná e-mailová adresa "%1" pro uživatele %2
invitations calendar cs Pozvánky
+invite calendar cs Pozvat
+keep exceptions calendar cs Ponechat výjimky
+keep the series unchanged. calendar cs Ponechat řadu beze změny.
last calendar cs Poslední
lastname of person to notify calendar cs Příjmení osoby, která má být upozorněna
length of the time interval calendar cs Délka časového intervalu
+limit number of description lines in list view (default 5, 0 for no limit) calendar cs Omezit počet řádek popisu ve zobrazení seznamu (výchozí hodnota je 5, 0 znamená bez omezení)
link to view the event calendar cs Odkaz pro zobrazení události
links calendar cs Odkazy
links, attachments calendar cs Odkazy, přílohy
@@ -192,23 +243,30 @@ location calendar cs Umístění
location to autoload from admin cs Automaticky nahrát z umístění
location, start- and endtimes, ... calendar cs Umístění, počáteční a koncové časy...
mail all participants calendar cs obeslat všechny účastníky
-make freebusy information available to not loged in persons? calendar cs Povolit zobrazení stavu volný/zaneprázdněn nepřihlášeným osobám?
+make freebusy information available to not loged in persons? calendar cs Povolit zobrazení informace o dostupnosti nepřihlášeným osobám?
+max. number of entries to show (leave empty for no restriction) calendar cs Maximální počet zobrazovaných záznamů (ponechte prázdné pro neomezeně)
minutes calendar cs Minut
modified calendar cs Změněno
mon calendar cs Po
+month calendar cs Měsíc
monthly calendar cs Měsíčně
monthly (by date) calendar cs Měsíčně (podle datumu)
monthly (by day) calendar cs Měsíšně (podle dne)
monthview calendar cs Měsíční pohled
multiple week view calendar cs Vícetýdenní pohled
+needs action calendar cs Vyžaduje akci
+new calendar cs Nové
new search with the above parameters calendar cs nové hledání dle výše uvedených parametrů
+no automatic purging admin cs Bez automatického odstraňování
no events found calendar cs Žádné události nebyly nalezeny
no filter calendar cs Žádný filtr
no matches found calendar cs nenalezeny žádné záznamy
+no recurrence calendar cs Bez opakování
no response calendar cs Žádná odpověď
non blocking calendar cs neblokující
not calendar cs ne
not rejected calendar cs Neodmítnuté
+nothing to update, version is already %1. calendar cs Není k dispozici žádná aktualizace, verze je již %1.
notification messages for added events calendar cs Tvar zprávy s upozorněním na přidané události
notification messages for canceled events calendar cs Tvar zprávy s upozorněním na zrušené události
notification messages for disinvited participants calendar cs Tvar zprávy s upozorněním na zrušení účasti
@@ -216,6 +274,7 @@ notification messages for modified events calendar cs Tvar zprávy s upozorněn
notification messages for your alarms calendar cs Tvar zprávy pro Vaše připomínky
notification messages for your responses calendar cs Tvar zprávy pro Vaše odpovědi
number of records to read (%1) calendar cs Počet záznamů k načtení (%1)
+number of weeks to show calendar cs Počet týdnů, které se mají zobrazovat
observance rule calendar cs Pravidlo zachování
occurence calendar cs Výskyt
old startdate calendar cs Staré počáteční datum
@@ -228,6 +287,7 @@ on time change of more than 4 hours too calendar cs také při změně času o v
one month calendar cs jeden měsíc
one week calendar cs jeden týden
one year calendar cs jeden rok
+only group-events calendar cs Jen skupinové události
only the initial date of that recuring event is checked! calendar cs Kontroluje se jen úvodní čas této opakující se události!
open todo's: calendar cs aktivní úkoly:
optional calendar cs Volitelný
@@ -236,13 +296,14 @@ owner too calendar cs Také vlastník
participants calendar cs Účastníci
participants disinvited from an event calendar cs Účastníci, kterým byla zrušena pozvánka
participants, resources, ... calendar cs Účastníci, Zdroje, ...
-password for not loged in users to your freebusy information? calendar cs Heslo pro nepřihlášené uživatele k získání informace o Vašem statusu volný/zaneprázdněn?
+password for not loged in users to your freebusy information? calendar cs Heslo pro nepřihlášené uživatele k získání informace o Vaší dostupnosti?
people holiday calendar cs osobní dovolená
permission denied calendar cs Přístup zamítnut
planner by category calendar cs Plánovač - podle kategorie
planner by user calendar cs Plánovač - podle uživatele
please note: you can configure the field assignments after you uploaded the file. calendar cs Upozornění: Přiřazení polí můžete konfigurovat až po uploadu souboru.
preselected group for entering the planner calendar cs Předvybraná skupina pro zadání do plánovače
+prevent deleting of entries admin cs Blokovat mazání záznamů
previous calendar cs předchozí
private and global public calendar cs soukromé a veřejně přístupné
private and group public calendar cs soukromé a přístupné pro skupinu
@@ -250,7 +311,9 @@ private only calendar cs Jen soukromé
quantity calendar cs Množství
re-edit event calendar cs Znovu editovat událost
receive email updates calendar cs Přijímat informace o změnách poštou
+receive notifications about events you created/modified/deleted calendar cs Přijímat upozornění na události které jste vytvořil(a)/změnil(a)/smazal(a)
receive summary of appointments calendar cs Přijímat přehledy událostí
+recover calendar cs Obnovit
recurrence calendar cs Pravidelné opakování
recurring event calendar cs Pravidelně se opakující událost
rejected calendar cs Odmítnuto
@@ -262,55 +325,88 @@ repeating interval, eg. 2 to repeat every second week calendar cs interval opako
repetition calendar cs Opakování
repetitiondetails (or empty) calendar cs Detaily opakování (nebo ponechte prázdné)
requested calendar cs Požadovaný
+require an acl grant to invite other users and groups admin cs Vyžadovat ACL oprávnění k pozvání ostatních uživatelů a skupin
reset calendar cs Vynulovat
+reset participant stati on event shifts calendar cs Vynulovat stav účastníků při posunech událostí
resources calendar cs Zdroje
resources except conflicting ones calendar cs Zdroje kromě konfliktních
resources with conflict detection calendar cs Zdroje s detekcí konfliktu
+restrict add category to calendar cs Omezit přidání kategorie na
+restrict set status to calendar cs Omezit nastavení stavu na
role calendar cs Role
rule calendar cs Pravidlo
sat calendar cs So
+save event as exception - delete single occurrence - edit status or alarms for this particular day calendar cs Uložit událost jako výjimku - Smazat jednotlivý výskyt - Editovat stav nebo alarmy pro tento konkrétní den
saves the changes made calendar cs uloží provedené změny
saves the event ignoring the conflict calendar cs Uloží událost bez ohledu na konflikt
scheduling conflict calendar cs Konflikt v plánování
+search string for the events calendar cs Hledaný řetězec pro události
select a %1 calendar cs vybrat %1
select a time calendar cs vybrat čas
+select an action calendar cs Vybrat akci
+select an action... calendar cs Vyberte akci...
select multiple contacts for a further action calendar cs Vybrat více kontaktů pro další akci
select resources calendar cs Vybrat zdroje
+select whether you want the pariticpant stati reset to unkown, if an event is shifted later on. calendar cs Vyberte, zda chcete vynulovat stav účastníka na neznámý, pokud je událost přesunuta na později.
select who should get the alarm calendar cs Vybrat kdo dostane upozornění
selected range calendar cs Vybraný rozsah
+series deleted calendar cs Řada byla smazána
set a year only for one-time / non-regular holidays. calendar cs Nastavit rok pro jednorázové (nepravidelné) svátky.
set new events to private calendar cs Nastavit nové události jako soukromé
setting lock time calender admin cs Nastavení časového zámku pro kalendář (výchozí hodnota je 1 sekunda)
+shall the date parameter be accepted (e.g. from calendar module)? calendar cs Má být nastavení data přijato (např. z modulu kalendáře)?
should new events created as private by default ? calendar cs Mají být nové události standardně vytvářeny jako soukormé?
-should not loged in persons be able to see your freebusy information? you can set an extra password, different from your normal password, to protect this informations. the freebusy information is in ical format and only include the times when you are busy. it does not include the event-name, description or locations. the url to your freebusy information is %1. calendar cs Mají mít nepřihlášení uživatelé možnost vidět Váš stav volný/zaneprázdněn? Můžete nastavit zvláštní heslo, které se neshoduje s Vaším přihlašovacím heslem a chránit jím tuto informaci. Informace o stavu volný/zaneprázdněn je ve formátu iCal a obsahuje jen časy, kdy jste zaneprázdněn(a). Nezahrnuje názvy událostí, jejich popisy ani umístění. Adresa URL pro informace o Vašem volném a obsazeném času je %1.
-should not loged in persons be able to see your freebusy information? you can set an extra password, different from your normal password, to protect this informations. the freebusy information is in ical format and only include the times when you are busy. it does not include the event-name, description or locations. the url to your freebusy information is http://localhost/egroupware/calendar/freebusy.php?user=stivi. calendar cs Mají mít nepřihlášení uživatelé možnost vidět Váš stav volný/zaneprázdněn? Můžete nastavit zvláštní heslo, které se neshoduje s Vaším přihlašovacím heslem a chránit jím tuto informaci. Informace o stavu volný/zaneprázdněn je ve formátu iCal a obsahuje jen časy, kdy jste zaneprázdněn(a). Nezahrnuje názvy událostí, jejich popisy ani umístění. Adresa URL pro informace o Vašem volném a obsazeném času je http://localhost/egroupware/calendar/freebusy.php?user=stivi.
+should not loged in persons be able to see your freebusy information? you can set an extra password, different from your normal password, to protect this informations. the freebusy information is in ical format and only include the times when you are busy. it does not include the event-name, description or locations. the url to your freebusy information is calendar cs Mají mít nepřihlášení uživatelé přístup k informacím o Vaší dostupnosti? Můžete nastavit extra heslo, odlišné od Vašeho přihlašovacího hesla, k zabezpečení těchto údajů. Informace o dostupnosti jsou uloženy v iCal formátu a zahrnují jen časy, kdy jste zaneprázdněn(a). Neobsahují názvy událostí, popisy ani umístění. URL informací o Vaší dostupnosti je
+should the grid be shown in the calendar calendar cs Má se v kalendáři zobrazovat mřížka
+should the number of weeks be shown on top of the calendar calendar cs Má se počet týdnů zobrazovat na vrchu kalendáře
+should the number of weeks be shown on top of the calendar (only if offset = 0) calendar cs Má se počet týdnů zobrazovat na vrchu kalendáře (jen pokud odsazení = 0)
should the planner display an empty row for users or categories without any appointment. calendar cs Má plánovač zobrazovat prázdný řádek pro uživatele nebo kategorie bez události.
should the status of the event-participants (accept, reject, ...) be shown in brakets after each participants name ? calendar cs Má být informace o stavu účasti jednotlivých účastníků (přijal, odmítnul) zobrazena v závorkách vedle jejich jména?
+show a calendar title calendar cs Zobrazit název kalendáře
+show all events, as if they were private calendar cs Zobrazit všechny události jako by byly soukromé
+show all status incl. rejected events calendar cs Zobrazit události všech stavů včetně odmítnutých
+show all status, but rejected calendar cs Zobrazit události všech stavů kromě odmítnutých
+show also events just owned by selected user calendar cs Zobrazit také události jen vlastněné vybraným uživatelem
show birthdays from addressbook admin cs Zobrazit narozeniny z adresáře
show default view on main screen calendar cs Zobrazit výchozí pohled na hlavní obrazovce
show empty rows in planner calendar cs Zobrazit prázdné řádky v Plánovači
+show events that have been deleted calendar cs Zobrazit události, které byly smazány
show list of upcoming events calendar cs zobrazit seznam nadcházejících událostí
+show only accepted events calendar cs Zobrazit jen přijaté události
+show only delegated events calendar cs Zobrazit jen delegované události
+show only events flagged as public, (not checked as private) calendar cs Zobrazit jen události označené jako veřejné (tj. bez příznaku soukromé)
+show only invitations, not yet accepted or rejected calendar cs Zobrazit jen pozvání, která dosud nebyla přijata nebo odmítnuta
+show only rejected events calendar cs Zobrazit jen odmítnuté události
+show only tentative accepted events calendar cs Zobrazit jen předběžně přijaté události
show only the date, not the year admin cs Zobrazit jen datum, ne rok
show this month calendar cs zobrazit tento měsíc
show this week calendar cs zobrazit tento týden
single event calendar cs jednotlivá událost
+specify where url of the day links to calendar cs Uveďte kam vede URL dne
start calendar cs Začátek
start date/time calendar cs Počáteční datum/čas
+start of series event changed calendar cs Počátek řady událostí byl změněn
startdate / -time calendar cs Počáteční datum/čas
startdate and -time of the search calendar cs Počáteční datum/čas hledání
startdate of the export calendar cs Počáteční datum exportu
startrecord calendar cs První záznam
status changed calendar cs Stav změněn
+status for all future scheduled days changed calendar cs Stav všech do budoucna naplánovaných dní se změnil
+status for this particular day changed calendar cs Stav pro tento konkrétní den se změnil
+status of participants set to unknown because of missing category rights calendar cs Stav účastníků byl změněn na neznámý, protože chybí oprávnění pro kategorii
submit to repository calendar cs Uložit do databáze
sun calendar cs Ne
tentative calendar cs Předběžný
test import (show importable records only in browser) calendar cs Testovat import (zobrazit importovatelné záznamy jen v prohlížeči)
+the exceptions are deleted together with the series. calendar cs Výjimky jsou smazány společně s řadou.
+the original series will be terminated today and a new series be created. calendar cs Původní řada bude dnes ukončena a nová bude vytvořena.
the resource you selected is already overbooked: calendar cs Vybraný zdroj je již příliš obsazen.
this day is shown as first day in the week or month view. calendar cs Tento den se zobrazí jako první v týdenním nebo měsíčním pohledu.
this defines the end of your dayview. events after this time, are shown below the dayview. calendar cs Tento čas ukončí Váš denní pohled. Následující události se zobrazí pod Vaším denním pohledem.
this defines the start of your dayview. events before this time, are shown above the dayview. this time is also used as a default starttime for new events. calendar cs Tímto časem začne Váš denní pohled. Předcházející události se zobrazí nad Vaším denním pohledem. Tento čas je také brán jako výchozí počáteční čas pro nové události.
this entry is currently opened by %1! calendar cs Tento záznam má aktuálně otevřen(a) %1!
this entry is opened by user: calendar cs Tento záznam byl v nastaveném intervalu otevřen uživatelem:
+this event is part of a series calendar cs Tato událost je součástí řady
this group that is preselected when you enter the planner. you can change it in the planner anytime you want. calendar cs Tato skupina je přednastavena, když vstoupíte do plánovače. V plánovači jí můžete změnit kdykoli se Vám zlíbí.
this message is sent for canceled or deleted events. calendar cs Tato zpráva je zasílána v případě ukončených nebo smazaných událostí.
this message is sent for modified or moved events. calendar cs Tato zpráva je zasílána v případě změněných nebo posunutých událostí.
@@ -318,21 +414,40 @@ this message is sent to disinvited participants. calendar cs Tato zpráva je zas
this message is sent to every participant of events you own, who has requested notifcations about new events. you can use certain variables which get substituted with the data of the event. the first line is the subject of the email. calendar cs Tato zpráva je zaslána každému účastníkovi události, jejíž jste vlastníkem, který si nastavil zasílání informací o nových událostech. V textu můžete použít některé proměnné, které budou nahrazeny údaji konkrétní události. První řádka textu bude subjektem e-mailové zprávy.
this message is sent when you accept, tentative accept or reject an event. calendar cs Tato zpráva je zaslána, pokud přijmete, předběžně přijmete nebo odmítnete událost.
this message is sent when you set an alarm for a certain event. include all information you might need. calendar cs Tato zpráva je zaslána, pokud nastavíte upozornění pro určitou událost. Zahrnuje všechny informace, které by jste mohl(a) potřebovat.
+this module displays a planner calendar. calendar cs Tento modul zobrazuje plánovací kalendář.
+this module displays a user's calendar as multiple weeks. don't give calendar application access to the anon user! calendar cs Tento modul zobrazuje kalendář uživatele jako několik týdnů. K aplikaci kalendáře nedávejte přístup anonymním uživatelům!
+this module displays calendar events as a list. calendar cs Tento modul zobrazuje údálosti z kalendáře jako seznam.
this module displays the current month calendar cs Tento modul zobrazuje aktuální měsíc
three month calendar cs tři měsíce
thu calendar cs Čt
til calendar cs do
timeframe calendar cs Časový rámec
timeframe to search calendar cs Časový rámec hledání
+timesheet entries created for calendar cs Položky pracovního výkazu vytvořeny pro
+timezone calendar cs Časové pásmo
+timezone in which recurrences have identical time calendar cs Časové pásmo, ve kterém mají opakování identický čas
+timezone of event exports calendar cs Časové pásmo pro exporty událostí
+timezone of event ical file import/export calendar cs Časové pásmo pro import/export událostí ve formátu iCal
+timezones updated to version %1 (%2 records updated). calendar cs Časová pásma aktualizována na verzi %1 (%2 záznamů aktualizováno).
title of the event calendar cs Název události
to many might exceed your execution-time-limit calendar cs příliš mnoho může překročit nastavený časový limit spuštění
+tomorrow calendar cs Zítra
translation calendar cs Překlad
tue calendar cs Út
two weeks calendar cs dva týdny
+type of planner calendar cs Typ plánovače
+update timezones common cs Aktualizovat časová pásma
updated calendar cs Aktualizováno
use end date calendar cs použít koncové datum
use the selected time and close the popup calendar cs použít zvolený čas a zavřít překryvné okno
+use this timezone to export calendar data. calendar cs Použít toto časové pásmo pro export kalendářových dat.
+use this timezone to import/export calendar data. calendar cs Použít toto časové pásmo pro import/export kalendářových dat.
+use weekday start calendar cs Použít počátek všedního dne
user or group calendar cs Uživatel nebo skupina
+user selectable css file for the calendar setup calendar cs Uživatelsky volitelný CSS soubor pro nastavení kalendáře
+users + groups: inviting both allways requires an invite grant admin cs Uživatelé + skupiny: k pozvání obou je vždy vyžadování oprávnění k pozvání
+view exception calendar cs Zobrazit výjimku
+view series calendar cs Zobrazit řadu
view this event calendar cs Zobrazit událost
views with fixed time intervals calendar cs Pohledy s pevnými časovými intervaly
wed calendar cs St
@@ -343,17 +458,25 @@ weekdays calendar cs Dny v týdnu
weekdays to use in search calendar cs Dny v týdnu použité při hledání
weekly calendar cs Týdně
weeks in multiple week view calendar cs Týdny ve vícetýdenním pohledu
+weeks offset (for multi-column display) calendar cs Odsazení týdnů (ve zobrazení do více sloupců)
weekview calendar cs Týdenní pohled
weekview with weekend calendar cs Týdenní pohled včetně víkendu
weekview without weekend calendar cs Týdenní pohled bez víkendu
which events do you want to see when you enter the calendar. calendar cs Které události chcete vidět, když vstoupíte do kalendáře.
which of calendar view do you want to see, when you start calendar ? calendar cs Který z pohledů chcete vidět, když spustíte kalendář?
whole day calendar cs celý den
+whole query calendar cs celý dotaz
+with credentials included calendar cs Včetně oprávnění
wk calendar cs Týd.
work day ends on calendar cs Pracovní den končí v
work day starts on calendar cs Pracovní den začíná v
+workday calendar cs Pracovní den
+workdays calendar cs Pracovní dny
yearly calendar cs Ročně
+yearly planner calendar cs Roční plánovač
+years admin cs roky
yearview calendar cs Roční pohled
+yes, only admins can purge deleted items admin cs Ano, jen administrátoři mohou trvale odstranit smazané položky
you are not allowed to book the resource selected: calendar cs Nemáte oprávnění si rezervovat vybraný zdroj:
you can either set a year or a occurence, not both !!! calendar cs Můžete nastavit rok nebo výskyt, ne obojí !!!
you can only set a year or a occurence !!! calendar cs Můžete nastavit jen rok nebo výskyt !!!
@@ -362,6 +485,7 @@ you have a meeting scheduled for %1 calendar cs Máte naplánovano setkání na
you have been disinvited from the meeting at %1 calendar cs Byla Vám zrušena pozvánka na setkání v %1
you need to select an account, contact or resource first! calendar cs Musíte nejprve vybrat účet, kontakt nebo zdroj!
you need to select an ical file first calendar cs Nejprve musíte vybrat iCal soubor
+you need to select some events first calendar cs Nejprve musíte vybrat nějaké události
you need to set either a day or a occurence !!! calendar cs Musíte nastavit buď den nebo výskyt !!!
you requested more than available for the selected resource: calendar cs Požadujete víc než je možné pro vybraný zdroj:
your meeting scheduled for %1 has been canceled calendar cs Vaše setkání plánované na %1 bylo zrušeno
diff --git a/calendar/lang/egw_es-es.lang b/calendar/lang/egw_es-es.lang
index 11530dbb96..fb74070b05 100644
--- a/calendar/lang/egw_es-es.lang
+++ b/calendar/lang/egw_es-es.lang
@@ -1,7 +1,13 @@
%1 %2 in %3 calendar es-es %1 %2 en %3
+%1 event(s) %2 calendar es-es %1 eventos %2
+%1 event(s) %2, %3 failed because of insufficent rights !!! calendar es-es %1 eventos %2, fallo en %3 por privilegios insuficientes
+%1 participants removed because of missing invite grants calendar es-es %1 participantes eliminados por faltar acceso a la invitación
%1 records imported calendar es-es %1 registros importados
%1 records read (not yet imported, you may go back and uncheck test import) calendar es-es %1 registros leídos (todavía sin importar, puede volver atrás y desmarcar Probar Importar)
%1 weeks calendar es-es %1 semanas
+(%1 events in %2 seconds) calendar es-es (%1 eventos en %2 segundos)
+, exceptions preserved calendar es-es , excepciones preservadas
+, stati of participants reset calendar es-es , estados de los participantes restablecidos
please note: the calendar use the holidays of your country, which is set to %1. you can change it in your %2. holidays are %3 automatic installed from %4. you can changed it in %5. calendar es-es Por favor, tenga en cuenta lo siguiente: El calendario usa las fiestas de su país, que es %1. Puede cambiarlo en su %2. Las vacaciones %3 se instalan automáticamente desde %4. Lo puede cambiar en %5.
a non blocking event will not conflict with other events calendar es-es Un evento que no bloquea no entrará en conflicto con otros eventos
accept or reject an invitation calendar es-es Aceptar o rechazar una invitación
@@ -11,6 +17,7 @@ action that caused the notify: added, canceled, accepted, rejected, ... calendar
actions calendar es-es Acciones
actions... calendar es-es Acciones...
add alarm calendar es-es Añadir alarma
+add timesheet entry calendar es-es Añadir entrada en la hoja de tiempos
added calendar es-es Añadido
added by synchronisation calendar es-es añadido por sincronización
after %1 calendar es-es Después de %1
@@ -24,15 +31,20 @@ alarms calendar es-es Alarmas
all categories calendar es-es Todas las categorías
all day calendar es-es Todo el día
all events calendar es-es Todos los eventos
+all exceptions are converted into single events. calendar es-es Todas las excepciones se convierten en eventos simples
all future calendar es-es Todos los futuros
all incl. rejected calendar es-es Todos, incluso los rechazados
all participants calendar es-es Todos los participantes
allows to edit the event again calendar es-es Permite volver a editar el evento
+always calendar es-es Siempre
+apply the action on the whole query, not only the shown events calendar es-es Aplicar la acción en toda la consulta, NO sólo en los eventos mostrados
apply the changes calendar es-es Aplicar los cambios
are you sure you want to delete this country ? calendar es-es ¿Seguro que quiere borrar este país?
are you sure you want to delete this holiday ? calendar es-es ¿Seguro que desea borrar esta fiesta?
+automatically purge old events after admin es-es Purgar automáticamente eventos antiguos después de
back half a month calendar es-es medio mes hacia atrás
back one month calendar es-es un mes hacia atrás
+back one year calendar es-es un año atrás
before %1 calendar es-es Antes de %1
before current date calendar es-es Antes de la fecha actual
before the event calendar es-es antes del evento
@@ -40,6 +52,9 @@ birthday calendar es-es Cumpleaños
birthdays admin es-es Cumpleaños
busy calendar es-es ocupado
by calendar es-es por
+calendar - list calendar es-es Calendario - Lista
+calendar - multi-weekly calendar es-es Calendario - Múltiples semanas
+calendar - planner calendar es-es Calendario - Planificador
calendar csv export calendar es-es Exportar el calendario a CSV
calendar event calendar es-es Evento de calendario
calendar holiday management admin es-es Gestión de días festivos
@@ -50,9 +65,15 @@ calendar-fieldname calendar es-es Calendario - Nombre de campo
can't add alarms in the past !!! calendar es-es ¡¡No se pueden añadir alarmas en el pasado!!
can't aquire lock! calendar es-es ¡No se ha podido obtener un bloqueo!
canceled calendar es-es Cancelado
+category %1 removed because of missing rights calendar es-es Se ha eliminado la categoría %1 por falta de permisos
+category acl common es-es ACL de la categoría
+category acl only restrict adding a category to an event or changing status of a participant. it does not change the visibility of an event! calendar es-es La ACL de la categoría sólo restringe añadir una categoría a un evento o cambiar el estado de un participante. ¡Esto NO cambia la visibilidad de un evento!
chair calendar es-es Silla
+change history calendar es-es Cambiar historial
+change your participant status calendar es-es Cambiar su estado de participante
charset of file calendar es-es Juego de caracteres del fichero
check all calendar es-es Marcar todo
+choose a category calendar es-es Elija una categoría
close the window calendar es-es Cerrar la ventana
compose a mail to all participants after the event is saved calendar es-es redactar un correo para todos los participantes después de guardar el evento
conflict calendar es-es Conflicto
@@ -61,6 +82,7 @@ copy this event calendar es-es Copiar este evento
copy your changes to the clipboard, %1reload the entry%2 and merge them. calendar es-es Copiar sus cambios al portapapeles, %1recargar la entrada%2 y mezclarla.
countries calendar es-es Paises
country calendar es-es País
+create a new series calendar es-es Crear una serie nueva
create an exception for the given date calendar es-es Crear una excepción para la fecha indicada
create exception calendar es-es Crear excepción
create new links calendar es-es Crear enlaces nuevos
@@ -82,12 +104,15 @@ default length of newly created events. the length is in minutes, eg. 60 for 1 h
default type of resources application selected in the calendar particpants research form. calendar es-es Tipo predeterminado para la aplicación de recursos seleccionada en el formulario de búsqueda de participantes en el calendario.
default type of resources selection calendar es-es Tipo predeterminado de selección de recursos
default week view calendar es-es Vista semanal predeterminada
+delegated calendar es-es Delegado
+delete exceptions calendar es-es Borrar excepciones
delete selected events calendar es-es Borrar los eventos seleccionados
delete series calendar es-es Borrar series
delete this alarm calendar es-es Borrar esta alarma
delete this event calendar es-es Borrar este evento
delete this exception calendar es-es Borrar esta excepción
delete this series of recuring events calendar es-es Borrar esta serie de eventos recurrentes
+deleted calendar es-es Borrado
deny ressources reservation for private events calendar es-es Denegar la reserva de recursos para eventos privados
disinvited calendar es-es Ya no está invitado
display status of events calendar es-es Mostrar estado de los eventos
@@ -146,7 +171,6 @@ forward half a month calendar es-es medio mes hacia adelante
forward one month calendar es-es un mes hacia adelante
four days view calendar es-es vista de cuatro días
freebusy common es-es Libre/Ocupado
-freebusy: unknow user '%1', wrong password or not availible to not loged in users !!! calendar es-es Disponibilidad: Usuario desconocido "%1", contraseña incorrecta o no está disponible
freetime search calendar es-es Buscar en el tiempo libre
fri calendar es-es Vie
full description calendar es-es Descripción completa
@@ -295,7 +319,6 @@ set a year only for one-time / non-regular holidays. calendar es-es Establecer u
set new events to private calendar es-es Poner los eventos nuevos como privados
setting lock time calender admin es-es Estableciendo el tiempo de bloqueo para el calendario (predeterminado: 1 segundo)
should new events created as private by default ? calendar es-es ¿Crear nuevos eventos como privados?
-should not loged in persons be able to see your freebusy information? you can set an extra password, different from your normal password, to protect this informations. the freebusy information is in ical format and only include the times when you are busy. it does not include the event-name, description or locations. the url to your freebusy information is %1. calendar es-es ¿Deben ver las personas que no inicien sesión la información de ocupación? Se puede poner una contraseña extra, distinta a la normal, para proteger esta información. La información de ocupación está en formato iCal y sólo incluye las horas en las que está ocupado. No incluye el nombre del evento, descripción o sitios. La URL para su información de ocupación es %1.
should the planner display an empty row for users or categories without any appointment. calendar es-es ¿Debe mostrarse en el planificador una fila vacía para los usuarios o categorías sin ninguna cita?
should the status of the event-participants (accept, reject, ...) be shown in brakets after each participants name ? calendar es-es ¿Mostrar el estado de cada evento (aceptar, rechazar, etc) entre corchetes detrás del nombre de cada participante?
show all events, as if they were private calendar es-es Mostrar todos los eventos, como si fueran privados
@@ -355,7 +378,7 @@ tomorrow calendar es-es Mañana
translation calendar es-es Traducción
tue calendar es-es Mar
two weeks calendar es-es dos semanas
-update timezones calendar es-es Actualizar zonas horarias
+update timezones common es-es Actualizar zonas horarias
updated calendar es-es Actualizado
use end date calendar es-es Usar fecha final
use the selected time and close the popup calendar es-es usar la hora seleccionada y cerrar la ventana
diff --git a/etemplate/lang/egw_cs.lang b/etemplate/lang/egw_cs.lang
index 0cd9b40624..8ea9f29599 100644
--- a/etemplate/lang/egw_cs.lang
+++ b/etemplate/lang/egw_cs.lang
@@ -6,6 +6,7 @@
%1 matches on search criteria etemplate cs %1 shod s kritériem vyhledávání
%1 more... etemplate cs %1 více...
%1 new etemplates imported for application '%2' etemplate cs %1 nových eŠablon importováno pro aplikaci '%2'
+%1 not implemented for %2! etemplate cs %1 není implementováno pro %2!
%s disabled etemplate cs %s zablokováno
%s needed etemplate cs %s zapotřebí
%s notranslation etemplate cs %s bez překladu
@@ -37,8 +38,10 @@ all operations save the template! etemplate cs všechny operace ukládají šabl
allowed file type: %1 etemplate cs Povolený typ souboru: %1
am etemplate cs am
an indexed column speeds up querys using that column (cost space on the disk !!!) etemplate cs indexy vytvořené pro sloupec zrychlují vyhledávání v daném sloupci (ale také zabírají místo na disku !!!)
+and etemplate cs A
application etemplate cs Aplikace
application name needed to write a langfile or dump the etemplates !!! etemplate cs Název aplikace potřeboval zapsat jazykový soubor nebo vypsat eŠablony !!!
+applications etemplate cs Aplikace
applies the changes made etemplate cs použije provedené změny
applies the changes to the given version of the template etemplate cs použije změny provedené v dané verzi šablony
as default etemplate cs jako výchozí
@@ -51,6 +54,7 @@ border-line-thickness for the table-tag etemplate cs Tloušťka okraje pro tag t
bottom etemplate cs Dolní okraj
box etemplate cs Rámeček
box... etemplate cs Rámeček...
+broken link etemplate cs Neplatný odkaz
can not have special sql-value null etemplate cs nemůže mít speciální SQL hodnotu NULL
cancel etemplate cs Zrušit
cant delete a single widget from a grid !!! etemplate cs nemohu smazat jednotlivý widget z mřížky !!!
@@ -92,7 +96,7 @@ css properties etemplate cs Vlastnosti CSS
css-class name for this row, preset: 'nmh' = nextmatch header, 'nmr' = alternating nm row, 'nmr0'+'nmr1' nm rows etemplate cs název CSS třídy pro tento řádek, přednastaveno: 'nmh' = NextMatch header (záhlaví DalšíShoda),'nmr' = alternating NM row (střídavý NM řádek),'nmr0'+'nmr1' NM řádky
css-class name for this row, preset: 'th' = header, 'row' = alternating row, 'row_off'+'row_on' rows etemplate cs název CSS třídy pro tento řádek, přednastaveno: 'th' = záhlaví, 'row' = střídavý řádek, řádky 'row_off'+'row_on'
css-styles etemplate cs CSS styly
-custom etemplate cs uživatelsky definované
+custom etemplate cs Uživatelsky definované
custom fields etemplate cs uživatelsky definované položky
custom javascript for onchange etemplate cs uživatelsky definovaný javaskript pro onChange (při změně)
cut etemplate cs Vyjmout
@@ -125,6 +129,7 @@ displayed in front of input or input is inserted for a '%s' in the label (label
displayed in statusline of browser if input-field gets focus etemplate cs zobrazeno ve stavové liště prohlížeče pokud vstupní pole získá fokus
displayed in the top line of the groupbox (legend) etemplate cs zobrazeno v horní řádce rámečku skupiny (v legendě)
do you want to save the changes you made in table %s? etemplate cs Chcete uložit změny, které jste udělal(a)v tabulce %s?
+document '%1' does not exist or is not readable for you! etemplate cs Dokument '%1' buď neexistuje nebo pro něj nemáte oprávnění ke čtení!
documentation etemplate cs Dokumentace
doesn't matter etemplate cs nezáleží na tom
drop a table - this can not be undone etemplate cs Smazat tabulku - nelze vrátit zpět
@@ -151,6 +156,7 @@ entry saved etemplate cs Záznam uložen
error copying uploaded file to vfs! etemplate cs Chyba při kopírování uploadovaného souboru do vfs!
error create parent directory %1! etemplate cs Chyba při vytváření nadřazeného adresáře %1!
error deleting %1! etemplate cs Chyba při mazání %1!
+error uploading file! filemanager cs Chyba při uploadu souboru!
error: template not found !!! etemplate cs Chyba: Šablona nebyla nalezena !!!
error: webserver is not allowed to write into '%1' !!! etemplate cs Chyba: webový server nemá oprávnění k zápisu do '%1' !!!
error: while saving !!! etemplate cs Chyba při ukládání !!!
@@ -176,6 +182,7 @@ file writen etemplate cs Soubor zapsán
fileupload etemplate cs Upload souboru
first etemplate cs První
floating point etemplate cs Plovoucí desetinná čárka
+for more then one contact in a document use the tag pagerepeat! etemplate cs pro více než jeden kontakt v dokumentu použijte tag pagerepeat!
foreign key etemplate cs Cizí klíč
formatted text (html) etemplate cs Formátovaný text (HTML)
go to the first entry etemplate cs jít na první záznam
@@ -235,6 +242,7 @@ linklist etemplate cs Seznam odkazů
linkstring etemplate cs Řetězec odkazu
linkto etemplate cs Odkaz na
load this template into the editor etemplate cs Načíst tuto šablonu do editoru
+maximum size for uploads filemanager cs Maximální velikost pro uploady
message ... etemplate cs Zpráva...
middle etemplate cs Prostřední
minute etemplate cs Minuta
@@ -277,6 +285,7 @@ open the online help. etemplate cs Otevřit online nápovědu.
operator etemplate cs Operátor
optional note about the link etemplate cs volitelná poznámka o odkazu
options etemplate cs Volby
+or etemplate cs NEBO
order to navigating by tab key through the form etemplate cs Pořadí v navigaci fomulářem pomocí klávesy tabulátor
overflow etemplate cs Přetečení
padding etemplate cs Odsazení
@@ -309,6 +318,7 @@ saves the template with given version number and closes the window etemplate cs
scale etemplate cs Škála
scale for float etemplate cs Škála pro plovoucí
search etemplate cs Hledat
+search... etemplate cs Hledat...
select a category etemplate cs vybrat kategorii
select a primary contact, to show in the list etemplate cs Vybrat primární kontakt, který má být zobrazen v seznamu
select access etemplate cs Vybrat přístup
@@ -420,5 +430,5 @@ xslt template etemplate cs XSLT šablona
year etemplate cs Rok
you are not allowed to export more then %1 entries! etemplate cs Nemáte oprávnění exportovat více než %1 záznamů!
you can respond by visiting: etemplate cs Můžete odpovědět navštívením:
-error uploading file! filemanager cs Chyba při uploadu souboru!
-maximum size for uploads filemanager cs Maximální velikost pro uploady
+you need to select a file first! etemplate cs Musíte nejprve vybrat soubor!
+your code is incorrect !!! etemplate cs Váš kód obsahuje chyby !!!
diff --git a/filemanager/lang/egw_cs.lang b/filemanager/lang/egw_cs.lang
index e569a2842f..ceb6620909 100644
--- a/filemanager/lang/egw_cs.lang
+++ b/filemanager/lang/egw_cs.lang
@@ -19,6 +19,7 @@ accessrights filemanager cs Přístupová práva
acl added. filemanager cs ACL byly přidány.
acl deleted. filemanager cs ACL byly smazány.
actions filemanager cs Akce
+add to current clipboard filemanager cs Přidat do aktuálního clipboardu
all files common cs Všechny soubory
allow a maximum of the above configured folderlinks to be configured in settings admin cs povolit konfiguraci maxima z výše konfigurovaných odkazů na složky v nastaveních
and all it's childeren filemanager cs a všechny jeho potomky
@@ -27,43 +28,38 @@ basedirectory filemanager cs Kořenový adresář
can't open directory %1! filemanager cs Nelze otevřít adresář %1!
cancel editing %1 without saving filemanager cs Ukončit editaci %1 bez uložení
cannot create directory because it begins or ends in a space filemanager cs Nemohu vytvořit adresář, protože začíná nebo končí mezerou
+cautiously rejecting to remove folder '%1'! filemanager cs Po zralé úvaze odmítám odstranit složku '%1'!
check all filemanager cs Označit vše
clear search filemanager cs Nové hledání
comment filemanager cs Komentář
-comments cannot contain "%1" filemanager cs Komentáře nemohou obsahovat "%1"
copied filemanager cs zkopírováno
copied %1 to %2 filemanager cs %1 zkopírováno do %2
copy filemanager cs Kopírovat
copy to filemanager cs Kopírovat do
copy to clipboard filemanager cs Kopírovat do clipboardu
could not copy %1 to %2 filemanager cs Nepodařilo se zkopírovat %1 do %2
-could not copy file because no destination directory is given filemanager cs Nepodařilo se zkopírovat soubor, protože nebyl zadán cílový adresář
could not create %1 filemanager cs Nepodařilo se vytvořit %1
could not delete %1 filemanager cs Nepodařilo se smazat %1
could not move %1 to %2 filemanager cs Nepodařilo se přesunout %1 do %2
-could not move file because no destination directory is given filemanager cs Nepodařilo se přesunout soubor, protože nebyl zadán cílový adresář
could not rename %1 to %2 filemanager cs Nepodařilo se přejmenovat %1 na %2
-could not save %1 filemanager cs Nepodařilo se uložit %1
create a link filemanager cs Vytvořit odkaz
create directory filemanager cs Vytvořit adresář
create file filemanager cs Vytvořit soubor
create folder filemanager cs Vytvořit složku
created filemanager cs Vytvořeno
created %1,%2 filemanager cs Vytvořeno %1,%2
-created between filemanager cs vytvořeno mezi
created directory %1 filemanager cs Vytvořen adresář %1
current directory filemanager cs Aktuální adresář
custom fields filemanager cs Uživatelsky definované položky
cut filemanager cs Vyjmout
cut to clipboard filemanager cs Vyjmout do clipboardu
-default behavior is no. the link will not be shown, but you are still able to navigate to this location, or configure this paricular location as startfolder or folderlink. filemanager cs Výchozí chování je NE. Odkaz sice nebude zobrazen, ale do adresáře budete moci vstoupit nebo ho nakonfigurovat jako startovní složku či odkaz na složku.
+default behavior is no. the link will not be shown, but you are still able to navigate to this location, or configure this paricular location as startfolder or folderlink. filemanager cs Výchozí chování je NE. Odkaz sice nebude zobrazen, ale do adresáře budete moci vstoupit nebo ho nakonfigurovat jako počáteční složku či odkaz na složku.
delete this file or directory filemanager cs Smazat tento soubor nebo adresář
deleted %1 filemanager cs Smazáno %1
directories sorted in filemanager cs Zatříděné adresáře
directory filemanager cs Adresář
directory %1 already exists filemanager cs Adresář %1 již existuje
directory %1 does not exist filemanager cs Adresář %1 neexistuje
-directory names cannot contain "%1" filemanager cs Jména adresářů nesmí obsahovat "%1"
directory not found or no permission to access it! filemanager cs Adresář nebyl nalezen nebo chybí přístupové oprávnění!
display and modification of content filemanager cs Zobrazení a úprava obsahu
display of content filemanager cs Zobrazení obsahu
@@ -74,11 +70,11 @@ edit settings filemanager cs Editovat nastavení
enter setup user and password filemanager cs Zadejte jméno a heslo administrátora hlaviček
enter setup user and password to get root rights filemanager cs Zadejte jméno a heslo administrátora hlaviček pro získání práv roota
enter the complete vfs path to specify a fast access link to a folder filemanager cs Zadejte kompletní VFS cestu k nastavení odkazu pro rychlý přístup ke složce
-enter the complete vfs path to specify a fast access link to a folder (1). filemanager cs Zadejte kompletní VFS cestu pro specifikaci odkazu na rychlý přístup ke složce (1).
enter the complete vfs path to specify your desired start folder. filemanager cs Zadejte kompletní VFS cestu k nastavení Vámi požadované počáteční složky.
error adding the acl! filemanager cs Při přidávání ACL došlo k chybě!
error creating symlink to target %1! filemanager cs Chyba při vytváření symbolického odkazu na cíl %1!
error deleting the acl entry! filemanager cs Při mazání ACL záznamu došlo k chybě!
+error uploading file! filemanager cs Při uploadu souboru došlo k chybě!
executable filemanager cs Spustitelný
extended access control list filemanager cs Rozšířený seznam přístupových oprávnění
extended acl filemanager cs Rozšířený ACL
@@ -86,7 +82,6 @@ failed to change permissions of %1! filemanager cs Nepodařilo se změnit opráv
failed to create directory! filemanager cs Nepodařilo se vytvořit adresář!
favorites filemanager cs Oblíbené
file filemanager cs Soubor
-file %1 already exists. please edit it or delete it first. filemanager cs Soubor %1 již existuje. Buď ho nejprve smažte nebo ho zeditujte.
file %1 could not be created. filemanager cs Soubor %1 nemohl být vytvořen.
file %1 may be too big. contact your systemadministrator for further info filemanager cs Soubor %1 je možná příliš velký. Kontaktujte Vašeho administrátora pro další informace.
file deleted. filemanager cs Soubor smazán.
@@ -110,6 +105,7 @@ link %1: %2 filemanager cs Odkaz %1: %2
link target %1 not found! filemanager cs Odkaz na cíl %1 nebyl nalezen!
location filemanager cs Umístění
log out as superuser filemanager cs Odhlášení superuživatele
+mail files filemanager cs Poslat soubory poštou
max folderlinks admin cs maximálně odkazů na složky
mime type filemanager cs MIME typ
modified filemanager cs Změněno
@@ -161,9 +157,10 @@ show hidden files filemanager cs Zobrazit skryté soubory
show link to filemanagers basedirectory (/) in side box menu? filemanager cs Zobrazit odkaz na kořenový adresář správce souborů (/) v postranním panelu?
size filemanager cs Velikost
start search filemanager cs Zahájit hledání
+startfolder filemanager cs Počáteční složka
superuser filemanager cs Superuživatel
symlink to %1 created. filemanager cs Symbolický odkaz na %1 byl vytvořen.
-the default start folder is your personal folder. the default is used, if you leave this empty, the path does not exist or you lack the neccessary access permissions. filemanager cs Výchozí startovní složka je Vaše osobní. Je použita v případě, kdy položku nevyplníte, zadaná cesta neexistuje nebo pro ní nemáte přístupová oprávnění.
+the default start folder is your personal folder. the default is used, if you leave this empty, the path does not exist or you lack the neccessary access permissions. filemanager cs Výchozí počáteční složka je Vaše osobní. Je použita v případě, kdy položku nevyplníte, zadaná cesta neexistuje nebo pro ní nemáte přístupová oprávnění.
the requested path %1 is not available. filemanager cs Požadovaná cesta %1 není k dispozici.
there's already a directory with that name! filemanager cs Adresář s tímto názvem již existuje!
there's already a file with that name! filemanager cs Soubor s tímto názvem již existuje!
@@ -172,8 +169,11 @@ total files filemanager cs Celkem souborů
unused space filemanager cs Nevyužité místo
up filemanager cs Nahoru
updated comment for %1 filemanager cs Aktualizovat komentář pro %1
+upload fields filemanager cs pole pro upload
+upload files filemanager cs Uploadovat soubory
used space filemanager cs Využité místo
users and groups filemanager cs Uživatelé a skupiny
+versioning filemanager cs Verzování
wrong username or password! filemanager cs Chybné uživatelské jméno nebo heslo
you are not allowed to upload a script! filemanager cs Nemáte oprávnění uploadovat skript!
you can only grant additional rights, you can not take rights away! filemanager cs Můžete pouze přidělit dodatečná oprávnění, ne odebrat ta stávající!
diff --git a/filemanager/lang/egw_es-es.lang b/filemanager/lang/egw_es-es.lang
index a4454887f1..5fd6c8695d 100644
--- a/filemanager/lang/egw_es-es.lang
+++ b/filemanager/lang/egw_es-es.lang
@@ -19,39 +19,38 @@ accessrights filemanager es-es Derechos de acceso
acl added. filemanager es-es Se ha añadido la ACL
acl deleted. filemanager es-es Se ha borrado la ACL
actions filemanager es-es Acciones
+add to current clipboard filemanager es-es Añadir al portapapeles actual
all files common es-es Todos los ficheros
allow a maximum of the above configured folderlinks to be configured in settings admin es-es permitir un máximo de los enlaces configurados arriba para configurarse en las preferencias
and all it's childeren filemanager es-es y todos los subdirectorios
applications common es-es Aplicaciones
basedirectory filemanager es-es Directorio base
+can't open directory %1! filemanager es-es ¡No se puede abrir el directorio %1!
cancel editing %1 without saving filemanager es-es Cancelar la edición %1 sin guardar
cannot create directory because it begins or ends in a space filemanager es-es No se puede crear el directorio porque empieza o acaba en un espacio
+cautiously rejecting to remove folder '%1'! filemanager es-es Por precaución, se rechaza el borrado de la carpeta '%1'
check all filemanager es-es Comprobar todo
clear search filemanager es-es Limpiar búsqueda
comment filemanager es-es Comentario
-comments cannot contain "%1" filemanager es-es Los comentarios no pueden contener "%1"
copied filemanager es-es copiado
copied %1 to %2 filemanager es-es Se ha copiado "%1" a "%2"
copy filemanager es-es Copiar
copy to filemanager es-es Copiar a
copy to clipboard filemanager es-es Copiar al portapapeles
could not copy %1 to %2 filemanager es-es No se pudo copiar "%1" a "%2"
-could not copy file because no destination directory is given filemanager es-es No se pudo copiar el fichero porque no se ha indicado un directorio de destino
could not create %1 filemanager es-es No se pudo crear %1
could not delete %1 filemanager es-es No se pudo borrar %1
could not move %1 to %2 filemanager es-es No se pudo mover %1 a %2
-could not move file because no destination directory is given filemanager es-es No se pudo mover el fichero porque no se ha indicado un directorio de destino
could not rename %1 to %2 filemanager es-es No se pudo renombrar %1 a %2
-could not save %1 filemanager es-es No se pudo guardar %1
create a link filemanager es-es Crear un enlace
create directory filemanager es-es Crear directorio
create file filemanager es-es Crear fichero
create folder filemanager es-es Crear directorio
created filemanager es-es Creado
created %1,%2 filemanager es-es Se ha creado %1,%2
-created between filemanager es-es creado entre
created directory %1 filemanager es-es Se ha creado el directorio %1
current directory filemanager es-es Directorio actual
+custom fields filemanager es-es Campos personalizados
cut filemanager es-es cortar
cut to clipboard filemanager es-es Cortar al portapapeles
default behavior is no. the link will not be shown, but you are still able to navigate to this location, or configure this paricular location as startfolder or folderlink. filemanager es-es El comportamiento predeterminado es NO. El enlace no se mostrará, pero se podrá examinar la ubicación, o configurar esta ubicación en particular como carpeta de inicio o enlace.
@@ -61,7 +60,6 @@ directories sorted in filemanager es-es Directorios ordenados en
directory filemanager es-es Directorio
directory %1 already exists filemanager es-es El directorio %1 ya existe
directory %1 does not exist filemanager es-es El directorio %1 no existe
-directory names cannot contain "%1" filemanager es-es Los nombres de directorio no pueden contener !%1"
directory not found or no permission to access it! filemanager es-es No se encontró el directorio, o no tiene permiso para acceder a él
display and modification of content filemanager es-es Mostrar y modificar el contenido
display of content filemanager es-es Mostar el contenido
@@ -76,13 +74,14 @@ enter the complete vfs path to specify your desired start folder. filemanager es
error adding the acl! filemanager es-es ¡Error al añadir la ACL!
error creating symlink to target %1! filemanager es-es ¡Error al crear el enlace simbólico al destino %1!
error deleting the acl entry! filemanager es-es ¡Error al borrar la entrada de la ACL!
+error uploading file! filemanager es-es ¡Error al subir el fichero!
executable filemanager es-es Ejecutable
extended access control list filemanager es-es Listas de control de acceso extendidas
extended acl filemanager es-es ACL extendida
failed to change permissions of %1! filemanager es-es Fallo al cambiar los permisos de %1
failed to create directory! filemanager es-es ¡Fallo al crear el directorio!
+favorites filemanager es-es Favoritos
file filemanager es-es Archivo
-file %1 already exists. please edit it or delete it first. filemanager es-es El fichero %1 ya existe. Por favor, edítelo o bórrelo primero.
file %1 could not be created. filemanager es-es No se pudo crear el fichero %1
file %1 may be too big. contact your systemadministrator for further info filemanager es-es El fichero %1 puede ser demasiado grande. Póngase en contacto con su administrador para más información.
file deleted. filemanager es-es Se ha borrado el fichero
@@ -119,6 +118,7 @@ no files in this directory. filemanager es-es No hay ficheros en este directorio
no preview available filemanager es-es No hay vista previa disponible
no version history for this file/directory filemanager es-es No hay historial para este fichero/directorio
only owner can rename or delete the content filemanager es-es Sólo el propietario puede renombrar o borrar el contenido
+open filemanager es-es Abrir
operation filemanager es-es Operación
permission denied! filemanager es-es ¡Permiso denegado!
permissions filemanager es-es Permisos
@@ -127,6 +127,7 @@ please select a file to delete. filemanager es-es Por favor, seleccione un fiche
preview filemanager es-es Vista previa
preview %1 filemanager es-es Vista previa %1
preview of %1 filemanager es-es Vista previa de %1
+projectmanager filemanager es-es Administrador de proyectos
properties saved. filemanager es-es Se han guardado las propiedades.
quick jump to filemanager es-es Salto rápido a
read & write access filemanager es-es Derechos de lectura y escritura
@@ -138,6 +139,7 @@ renamed %1 to %2 filemanager es-es Se ha renombrado %1 a %2
renamed %1 to %2. filemanager es-es Se ha renombrado %1 a %2.
replaced %1 filemanager es-es Se ha sustituido %1
rights filemanager es-es Derechos
+root filemanager es-es raíz
root access granted. filemanager es-es Permiso de administrador concedido.
root access stopped. filemanager es-es Acceso de administrador detenido.
save %1 filemanager es-es Guardar %1
@@ -150,9 +152,11 @@ searchstring filemanager es-es cadena de búsqueda
select action... filemanager es-es Seleccionar acción...
select file to upload in current directory filemanager es-es Seleccionar el fichero a subir al directorio actual
show filemanager es-es Mostrar
+show hidden files filemanager es-es Mostrar los ficheros ocultos
show link to filemanagers basedirectory (/) in side box menu? filemanager es-es ¿Mostrar enlace al directorio base del administrador de archivos (/) en el menú lateral?
size filemanager es-es Tamaño
start search filemanager es-es comenzar la búsqueda
+startfolder filemanager es-es Carpeta de inicio
superuser filemanager es-es Superusuario
symlink to %1 created. filemanager es-es Se ha creado el enlace simbólico a %1.
the default start folder is your personal folder. the default is used, if you leave this empty, the path does not exist or you lack the neccessary access permissions. filemanager es-es La carpeta predeterminada es su carpeta personal. Si se deja en blanco, no existe la ruta o no tiene los permisos necesarios, se usa la predeterminada.
@@ -164,10 +168,13 @@ total files filemanager es-es Total ficheros
unused space filemanager es-es Espacio sin utilizar
up filemanager es-es Arriba
updated comment for %1 filemanager es-es Comentario actualizado para %1
+upload files filemanager es-es Subir ficheros
used space filemanager es-es Espacio utilizado
users and groups filemanager es-es Usuarios y grupos
+versioning filemanager es-es Versionado
wrong username or password! filemanager es-es ¡El usuario o contraseña son incorrectos!
you are not allowed to upload a script! filemanager es-es ¡NO tiene permiso para subir un script!
+you can only grant additional rights, you can not take rights away! filemanager es-es ¡Sólo se pueden conceder permisos adicionales, NO recortar permisos!
you do not have access to %1 filemanager es-es No tiene acceso a %1
you need to select an owner! filemanager es-es ¡Necesita seleccionar un propietario!
you need to select some files first! filemanager es-es ¡Necesita seleccionar antes algunos ficheros!
diff --git a/home/lang/egw_cs.lang b/home/lang/egw_cs.lang
index 2e129d8997..3b67d33ba8 100644
--- a/home/lang/egw_cs.lang
+++ b/home/lang/egw_cs.lang
@@ -1,5 +1,4 @@
displays home home cs Zobrazuje hlavní stranu
egroupware home cs eGroupWare
home home cs Hlavní strana
-mainscreen_message home cs mainscreen_message
-there is a new version of egroupware available home cs Je k dispozici nová verze eGroupWare
+there is a new version of egroupware available home cs Je k dispozici nová verze eGroupWaru
diff --git a/importexport/lang/egw_cs.lang b/importexport/lang/egw_cs.lang
index 5d7ec57d9a..032b91654e 100644
--- a/importexport/lang/egw_cs.lang
+++ b/importexport/lang/egw_cs.lang
@@ -1,22 +1,40 @@
+%1 records processed importexport cs %1 záznamů zpracováno
allowed users importexport cs Oprávnění uživatelé
automatically created by importexport importexport cs Automaticky vytvořeno aplikací ImportExport
+basic csv import importexport cs Základní CSV import
choose a name for this definition importexport cs Zvolte název pro tuto definici
choose a plugin importexport cs Zvolte plugin
choose an application importexport cs Zvolte aplikaci
+choose seperator and charset importexport cs Vybrat oddělovač a znakovou sadu
+define imports|exports common cs Definovat importy|exporty
delete all selected definitions importexport cs Smazat VŠECHNY vybrané definice
+edit conditions importexport cs Editovat podmínky
expert options importexport cs Rozšířené volby
export importexport cs Exportovat
export all selected definitions importexport cs Exportovat VŠECHNY vybrané definice
finish importexport cs Dokončit
general importexport cs Obecné
+import importexport cs import
+import definitions common cs Definice importu
import definitions (attension: existing definitions with equal names will be overwritten!!!) importexport cs Importovat definice (Pozor: Stávající definice téhož jména budou přepsány!!!)
+importexport common cs Import a export
importexport wizard finished successfully! importexport cs Průvodce aplikace ImportExport úspěšně dokončen!
+imports information from a csv file. this is only a base class, and doesn't do anything on its own. importexport cs Importuje informace z CSV souboru. Jedná se o základní úroveň, program nic nedělá na vlastní pěst.
+load sample file importexport cs Nahrát ukázkový soubor
+manage mapping importexport cs Spravovat mapování
next importexport cs Další
+no records selected importexport cs Nebyly vybrány žádné záznamy
preview importexport cs Náhled
previous importexport cs Předchozí
save as definition importexport cs Uložit jako definici
+schedule common cs Plán
+schedule import / export common cs Plánovat import / export
+schedule not found importexport cs Nebyl nalezen žádný plán
select definition importexport cs Vybrat definici
select plugin importexport cs Vybrat plugin
some nice text importexport cs nějaký pěkný text
+unable to import: importexport cs Nebylo možné importovat:
+unable to schedule importexport cs Není možné naplánovat
which useres are allowed for this definition importexport cs Oprávnění uživatelé této definice
+which users are allowed to use this definition importexport cs Kteří uživatelé mohou použít tuto definici
you need to select an app and format first! importexport cs Nejprve musíte vybrat aplikaci a formát!
diff --git a/infolog/lang/egw_cs.lang b/infolog/lang/egw_cs.lang
index a7c1ea05ce..916d1c1ccf 100644
--- a/infolog/lang/egw_cs.lang
+++ b/infolog/lang/egw_cs.lang
@@ -26,6 +26,7 @@ a short subject for the entry infolog cs stručný předmět záznamu
abort without deleting infolog cs Zrušit bez smazání
accept infolog cs přijmout
action infolog cs Akce
+actions... infolog cs Akce...
actual date and time infolog cs aktuální datum a čas
add infolog cs Přidat
add a file infolog cs Přidat soubor
@@ -74,6 +75,7 @@ completed infolog cs Ukončeno
configuration infolog cs Konfigurace
confirm infolog cs Potvrdit
contact infolog cs Kontakt
+copy of: infolog cs Kopie z:
copy your changes to the clipboard, %1reload the entry%2 and merge them. infolog cs Zkopírujte Vaše úpravy do clipboardu, %1načtěte znovu záznam%2 a slučte je.
create new links infolog cs Vytvořit nové odkazy
creates a new field infolog cs vytvoří novou položku
@@ -102,6 +104,7 @@ default filter for infolog infolog cs Výchozí filtr pro InfoLog
default status for a new log entry infolog cs výchozí stav pro nový záznam
delegated infolog cs delegované
delegated open infolog cs delegované otevřené
+delegated open and upcoming infolog cs delegované otevřené a nadcházející
delegated overdue infolog cs delegované po termínu
delegated upcomming infolog cs delegované nadcházející
delegation infolog cs Pověření
@@ -128,6 +131,7 @@ do you want to receive notifications as html-mails or plain text? infolog cs Chc
don't show infolog infolog cs NEzobrazovat InfoLog
done infolog cs hotovo
download infolog cs Stáhnout
+due %1 infolog cs Do %1
duration infolog cs Trvání
e-mail: infolog cs E-mail:
each value is a line like [=