Calendar 3.5.1
51
README
|
@ -6,24 +6,14 @@ server as backends for calendar and event storage. For both drivers, some
|
|||
initialization of the local database is necessary. To do so, execute the
|
||||
SQL commands in drivers/<yourchoice>/SQL/<yourdatabase>.initial.sql
|
||||
|
||||
The client-side calendar UI relies on the "fullcalendar" project by Adam Arshaw
|
||||
with extensions made for the use in Roundcube. All changes are published in
|
||||
an official fork at https://github.com/roundcube/fullcalendar
|
||||
|
||||
For some general calendar-based operations such as alarms handling or iCal
|
||||
parsing/exporting this plugins requires the `libcalendaring` plugin which
|
||||
is also part of the Kolab Roundcube Plugins repository. Make sure that plugin
|
||||
is installed and configured correctly.
|
||||
parsing/exporting and UI widgets/style this plugins requires the `libcalendaring`
|
||||
and `libkolab` plugins which are also part of the Kolab Roundcube Plugins repository.
|
||||
Make sure these plugins are installed and configured correctly.
|
||||
|
||||
For recurring event computation, some utility classes from the Horde project
|
||||
are used. They are packaged in a slightly modified version with this plugin.
|
||||
|
||||
IMPORTANT
|
||||
---------
|
||||
|
||||
The calendar module makes heavy use of PHP's DateTime as well as DateInterval
|
||||
classes. The latter one requires at least PHP 5.3.0 to run.
|
||||
|
||||
|
||||
REQUIREMENTS
|
||||
------------
|
||||
|
@ -33,15 +23,12 @@ library plugins. Thus in order to run the calendar plugin, you also need the
|
|||
following plugins installed:
|
||||
|
||||
* libcalendaring [1]
|
||||
* libkolab [1] (when using the 'kolab' driver)
|
||||
* libkolab [1]
|
||||
|
||||
|
||||
INSTALLATION
|
||||
------------
|
||||
|
||||
The preferred and automated way to install the calendar with all requirements
|
||||
is via the Roundcube plugin repository: https://plugins.roundcube.net
|
||||
|
||||
For a manual installation of the calendar plugin (and its dependencies),
|
||||
execute the following steps. This will set it up with the database backend
|
||||
driver.
|
||||
|
@ -53,29 +40,25 @@ driver.
|
|||
$ cd /<path-to-roundcube>/plugins
|
||||
$ cp -r /tmp/roundcubemail-plugins-kolab/plugins/calendar .
|
||||
$ cp -r /tmp/roundcubemail-plugins-kolab/plugins/libcalendaring .
|
||||
$ cp -r /tmp/roundcubemail-plugins-kolab/plugins/libkolab .
|
||||
|
||||
2. Install the dependencies with Composer
|
||||
|
||||
(This has to be done from the Roundcube root directory)
|
||||
|
||||
$ cd /<path-to-roundcube>
|
||||
$ php composer.phar require sabre/vobject 3.3.3
|
||||
|
||||
Download the composer.phar script from https://getcomposer.org
|
||||
|
||||
3. Create calendar plugin configuration
|
||||
2. Create calendar plugin configuration
|
||||
|
||||
$ cd calendar/
|
||||
$ cp config.inc.php.dist config.inc.php
|
||||
$ edit config.inc.php
|
||||
|
||||
4. Initialize the calendar database tables
|
||||
3. Initialize the calendar database tables
|
||||
|
||||
$ mysql roundcubemail < drivers/database/SQL/mysql.initial.sql
|
||||
$ cd ../../
|
||||
$ bin/initdb.sh --dir=plugins/calendar/drivers/database/SQL
|
||||
|
||||
4. Build css styles for the Elastic skin
|
||||
|
||||
$ lessc --relative-urls -x plugins/libkolab/skins/elastic/libkolab.less > plugins/libkolab/skins/elastic/libkolab.min.css
|
||||
|
||||
5. Enable the calendar plugin
|
||||
|
||||
$ cd ../../
|
||||
$ edit config/config.inc.php
|
||||
|
||||
Add 'calendar' to the list of active plugins:
|
||||
|
@ -86,5 +69,13 @@ Add 'calendar' to the list of active plugins:
|
|||
);
|
||||
|
||||
|
||||
IMPORTANT
|
||||
---------
|
||||
|
||||
This plugin doesn't work with the Classic skin of Roundcube because no
|
||||
templates are available for that skin.
|
||||
|
||||
Use Roundcube `skins_allowed` option to limit skins available to the user
|
||||
or remove incompatible skins from the skins folder.
|
||||
|
||||
[1] https://git.kolab.org/diffusion/RPK/
|
||||
|
|
342
calendar.php
|
@ -50,7 +50,6 @@ class calendar extends rcube_plugin
|
|||
'calendar_work_start' => 6,
|
||||
'calendar_work_end' => 18,
|
||||
'calendar_agenda_range' => 60,
|
||||
'calendar_agenda_sections' => 'smart',
|
||||
'calendar_event_coloring' => 0,
|
||||
'calendar_time_indicator' => true,
|
||||
'calendar_allow_invite_shared' => false,
|
||||
|
@ -97,6 +96,7 @@ class calendar extends rcube_plugin
|
|||
protected function setup()
|
||||
{
|
||||
$this->require_plugin('libcalendaring');
|
||||
$this->require_plugin('libkolab');
|
||||
|
||||
$this->lib = libcalendaring::get_instance();
|
||||
$this->timezone = $this->lib->timezone;
|
||||
|
@ -152,8 +152,7 @@ class calendar extends rcube_plugin
|
|||
$this->register_action('print', array($this,'print_view'));
|
||||
$this->register_action('mailimportitip', array($this, 'mail_import_itip'));
|
||||
$this->register_action('mailimportattach', array($this, 'mail_import_attachment'));
|
||||
$this->register_action('mailtoevent', array($this, 'mail_message2event'));
|
||||
$this->register_action('inlineui', array($this, 'get_inline_ui'));
|
||||
$this->register_action('dialog-ui', array($this, 'mail_message2event'));
|
||||
$this->register_action('check-recent', array($this, 'check_recent'));
|
||||
$this->register_action('itip-status', array($this, 'event_itip_status'));
|
||||
$this->register_action('itip-remove', array($this, 'event_itip_remove'));
|
||||
|
@ -188,14 +187,14 @@ class calendar extends rcube_plugin
|
|||
}
|
||||
|
||||
// add 'Create event' item to message menu
|
||||
if ($this->api->output->type == 'html') {
|
||||
$this->api->add_content(html::tag('li', null,
|
||||
if ($this->api->output->type == 'html' && $_GET['_rel'] != 'event') {
|
||||
$this->api->add_content(html::tag('li', array('role' => 'menuitem'),
|
||||
$this->api->output->button(array(
|
||||
'command' => 'calendar-create-from-mail',
|
||||
'label' => 'calendar.createfrommail',
|
||||
'type' => 'link',
|
||||
'classact' => 'icon calendarlink active',
|
||||
'class' => 'icon calendarlink',
|
||||
'class' => 'icon calendarlink disabled',
|
||||
'innerclass' => 'icon calendar',
|
||||
))),
|
||||
'messagemenu');
|
||||
|
@ -296,7 +295,6 @@ class calendar extends rcube_plugin
|
|||
return $calendar ?: $first;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render the main calendar view from skin template
|
||||
*/
|
||||
|
@ -304,9 +302,6 @@ class calendar extends rcube_plugin
|
|||
{
|
||||
$this->rc->output->set_pagetitle($this->gettext('calendar'));
|
||||
|
||||
// Add CSS stylesheets to the page header
|
||||
$this->ui->addCSS();
|
||||
|
||||
// Add JS files to the page header
|
||||
$this->ui->addJS();
|
||||
|
||||
|
@ -319,10 +314,14 @@ class calendar extends rcube_plugin
|
|||
$this->rc->output->set_env('timezone', $this->timezone->getName());
|
||||
$this->rc->output->set_env('calendar_driver', $this->rc->config->get('calendar_driver'), false);
|
||||
$this->rc->output->set_env('calendar_resources', (bool)$this->rc->config->get('calendar_resources_driver'));
|
||||
$this->rc->output->set_env('identities-selector', $this->ui->identity_select(array('id' => 'edit-identities-list', 'aria-label' => $this->gettext('roleorganizer'))));
|
||||
$this->rc->output->set_env('identities-selector', $this->ui->identity_select(array(
|
||||
'id' => 'edit-identities-list',
|
||||
'aria-label' => $this->gettext('roleorganizer'),
|
||||
'class' => 'form-control custom-select',
|
||||
)));
|
||||
|
||||
$view = rcube_utils::get_input_value('view', rcube_utils::INPUT_GPC);
|
||||
if (in_array($view, array('agendaWeek', 'agendaDay', 'month', 'table')))
|
||||
if (in_array($view, array('agendaWeek', 'agendaDay', 'month', 'list')))
|
||||
$this->rc->output->set_env('view', $view);
|
||||
|
||||
if ($date = rcube_utils::get_input_value('date', rcube_utils::INPUT_GPC))
|
||||
|
@ -374,14 +373,15 @@ class calendar extends rcube_plugin
|
|||
}
|
||||
|
||||
$field_id = 'rcmfd_default_view';
|
||||
$view = $this->rc->config->get('calendar_default_view', $this->defaults['calendar_default_view']);
|
||||
$select = new html_select(array('name' => '_default_view', 'id' => $field_id));
|
||||
$select->add($this->gettext('day'), "agendaDay");
|
||||
$select->add($this->gettext('week'), "agendaWeek");
|
||||
$select->add($this->gettext('month'), "month");
|
||||
$select->add($this->gettext('agenda'), "table");
|
||||
$select->add($this->gettext('agenda'), "list");
|
||||
$p['blocks']['view']['options']['default_view'] = array(
|
||||
'title' => html::label($field_id, rcube::Q($this->gettext('default_view'))),
|
||||
'content' => $select->show($this->rc->config->get('calendar_default_view', $this->defaults['calendar_default_view'])),
|
||||
'content' => $select->show($view == 'table' ? 'list' : $view),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -447,10 +447,15 @@ class calendar extends rcube_plugin
|
|||
}
|
||||
|
||||
$field_id = 'rcmfd_workstart';
|
||||
$work_start = $this->rc->config->get('calendar_work_start', $this->defaults['calendar_work_start']);
|
||||
$work_end = $this->rc->config->get('calendar_work_end', $this->defaults['calendar_work_end']);
|
||||
$p['blocks']['view']['options']['workinghours'] = array(
|
||||
'title' => html::label($field_id, rcube::Q($this->gettext('workinghours'))),
|
||||
'content' => $select_hours->show($this->rc->config->get('calendar_work_start', $this->defaults['calendar_work_start']), array('name' => '_work_start', 'id' => $field_id)) .
|
||||
' — ' . $select_hours->show($this->rc->config->get('calendar_work_end', $this->defaults['calendar_work_end']), array('name' => '_work_end', 'id' => $field_id)),
|
||||
'content' => html::div('input-group',
|
||||
$select_hours->show($work_start, array('name' => '_work_start', 'id' => $field_id))
|
||||
. html::span('input-group-append input-group-prepend', html::span('input-group-text',' — '))
|
||||
. $select_hours->show($work_end, array('name' => '_work_end', 'id' => $field_id))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -468,7 +473,7 @@ class calendar extends rcube_plugin
|
|||
$select_colors->add($this->gettext('coloringmode3'), 3);
|
||||
|
||||
$p['blocks']['view']['options']['eventcolors'] = array(
|
||||
'title' => html::label($field_id . 'value', rcube::Q($this->gettext('eventcoloring'))),
|
||||
'title' => html::label($field_id, rcube::Q($this->gettext('eventcoloring'))),
|
||||
'content' => $select_colors->show($this->rc->config->get('calendar_event_coloring', $this->defaults['calendar_event_coloring'])),
|
||||
);
|
||||
}
|
||||
|
@ -511,7 +516,7 @@ class calendar extends rcube_plugin
|
|||
|
||||
$p['blocks']['view']['options']['alarmtype'] = array(
|
||||
'title' => html::label($field_id, rcube::Q($this->gettext('defaultalarmtype'))),
|
||||
'content' => $alarm_type . ' ' . $alarm_offset,
|
||||
'content' => html::div('input-group', $alarm_type . ' ' . $alarm_offset),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -522,18 +527,37 @@ class calendar extends rcube_plugin
|
|||
}
|
||||
// default calendar selection
|
||||
$field_id = 'rcmfd_default_calendar';
|
||||
$filter = calendar_driver::FILTER_PERSONAL | calendar_driver::FILTER_ACTIVE | calendar_driver::FILTER_INSERTABLE;
|
||||
$select_cal = new html_select(array('name' => '_default_calendar', 'id' => $field_id, 'is_escaped' => true));
|
||||
foreach ((array)$this->driver->list_calendars(calendar_driver::FILTER_PERSONAL | calendar_driver::FILTER_ACTIVE) as $id => $prop) {
|
||||
foreach ((array)$this->driver->list_calendars($filter) as $id => $prop) {
|
||||
$select_cal->add($prop['name'], strval($id));
|
||||
if ($prop['default'])
|
||||
$default_calendar = $id;
|
||||
}
|
||||
$p['blocks']['view']['options']['defaultcalendar'] = array(
|
||||
'title' => html::label($field_id . 'value', rcube::Q($this->gettext('defaultcalendar'))),
|
||||
'title' => html::label($field_id, rcube::Q($this->gettext('defaultcalendar'))),
|
||||
'content' => $select_cal->show($this->rc->config->get('calendar_default_calendar', $default_calendar)),
|
||||
);
|
||||
}
|
||||
|
||||
if (!isset($no_override['calendar_show_weekno'])) {
|
||||
if (!$p['current']) {
|
||||
$p['blocks']['view']['content'] = true;
|
||||
return $p;
|
||||
}
|
||||
|
||||
$field_id = 'rcmfd_show_weekno';
|
||||
$select = new html_select(array('name' => '_show_weekno', 'id' => $field_id));
|
||||
$select->add($this->gettext('weeknonone'), -1);
|
||||
$select->add($this->gettext('weeknodatepicker'), 0);
|
||||
$select->add($this->gettext('weeknoall'), 1);
|
||||
|
||||
$p['blocks']['view']['options']['show_weekno'] = array(
|
||||
'title' => html::label($field_id, rcube::Q($this->gettext('showweekno'))),
|
||||
'content' => $select->show(intval($this->rc->config->get('calendar_show_weekno'))),
|
||||
);
|
||||
}
|
||||
|
||||
$p['blocks']['itip']['name'] = $this->gettext('itipoptions');
|
||||
|
||||
// Invitations handling
|
||||
|
@ -570,7 +594,7 @@ class calendar extends rcube_plugin
|
|||
|
||||
$p['blocks']['itip']['options']['after_action'] = array(
|
||||
'title' => html::label($field_id, rcube::Q($this->gettext('afteraction'))),
|
||||
'content' => $select->show($val) . $folders->show($folder),
|
||||
'content' => html::div('input-group input-group-combo', $select->show($val) . $folders->show($folder)),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -588,11 +612,17 @@ class calendar extends rcube_plugin
|
|||
foreach ($categories as $name => $color) {
|
||||
$key = md5($name);
|
||||
$field_class = 'rcmfd_category_' . str_replace(' ', '_', $name);
|
||||
$category_remove = new html_inputfield(array('type' => 'button', 'value' => 'X', 'class' => 'button', 'onclick' => '$(this).parent().remove()', 'title' => $this->gettext('remove_category')));
|
||||
$category_remove = html::span('input-group-append', html::a(array(
|
||||
'class' => 'button icon delete input-group-text',
|
||||
'onclick' => '$(this).parent().parent().remove()',
|
||||
'title' => $this->gettext('remove_category'),
|
||||
'href' => '#rcmfd_new_category',
|
||||
), html::span('inner', $this->gettext('delete'))
|
||||
));
|
||||
$category_name = new html_inputfield(array('name' => "_categories[$key]", 'class' => $field_class, 'size' => 30, 'disabled' => $this->driver->categoriesimmutable));
|
||||
$category_color = new html_inputfield(array('name' => "_colors[$key]", 'class' => "$field_class colors", 'size' => 6));
|
||||
$hidden = $this->driver->categoriesimmutable ? html::tag('input', array('type' => 'hidden', 'name' => "_categories[$key]", 'value' => $name)) : '';
|
||||
$categories_list .= html::div(null, $hidden . $category_name->show($name) . ' ' . $category_color->show($color) . ' ' . $category_remove->show());
|
||||
$categories_list .= $hidden . html::div('input-group', $category_name->show($name) . $category_color->show($color) . $category_remove);
|
||||
}
|
||||
|
||||
$p['blocks']['categories']['options']['category_' . $name] = array(
|
||||
|
@ -601,22 +631,35 @@ class calendar extends rcube_plugin
|
|||
|
||||
$field_id = 'rcmfd_new_category';
|
||||
$new_category = new html_inputfield(array('name' => '_new_category', 'id' => $field_id, 'size' => 30));
|
||||
$add_category = new html_inputfield(array('type' => 'button', 'class' => 'button', 'value' => $this->gettext('add_category'), 'onclick' => "rcube_calendar_add_category()"));
|
||||
$add_category = html::span('input-group-append', html::a(array(
|
||||
'type' => 'button',
|
||||
'class' => 'button create input-group-text',
|
||||
'title' => $this->gettext('add_category'),
|
||||
'onclick' => 'rcube_calendar_add_category()',
|
||||
'href' => '#rcmfd_new_category',
|
||||
), html::span('inner', $this->gettext('add_category'))
|
||||
));
|
||||
$p['blocks']['categories']['options']['categories'] = array(
|
||||
'content' => $new_category->show('') . ' ' . $add_category->show(),
|
||||
'content' => html::div('input-group', $new_category->show('') . $add_category),
|
||||
);
|
||||
|
||||
$this->rc->output->add_label('delete', 'calendar.remove_category');
|
||||
$this->rc->output->add_script('function rcube_calendar_add_category() {
|
||||
var name = $("#rcmfd_new_category").val();
|
||||
if (name.length) {
|
||||
var input = $("<input>").attr("type", "text").attr("name", "_categories[]").attr("size", 30).val(name);
|
||||
var color = $("<input>").attr("type", "text").attr("name", "_colors[]").attr("size", 6).addClass("colors").val("000000");
|
||||
var button = $("<input>").attr("type", "button").attr("value", "X").addClass("button").click(function(){ $(this).parent().remove() });
|
||||
$("<div>").append(input).append(" ").append(color).append(" ").append(button).appendTo("#calendarcategories");
|
||||
color.miniColors({ colorValues:(rcmail.env.mscolors || []) });
|
||||
var button_label = rcmail.gettext("calendar.remove_category");
|
||||
var input = $("<input>").attr({type: "text", name: "_categories[]", size: 30, "class": "form-control"}).val(name);
|
||||
var color = $("<input>").attr({type: "text", name: "_colors[]", size: 6, "class": "colors form-control"}).val("000000");
|
||||
var button = $("<a>").attr({"class": "button icon delete input-group-text", title: button_label, href: "#rcmfd_new_category"})
|
||||
.click(function() { $(this).parent().parent().remove(); })
|
||||
.append($("<span>").addClass("inner").text(rcmail.gettext("delete")));
|
||||
|
||||
$("<div>").addClass("input-group").append(input).append(color).append($("<span class=\'input-group-append\'>").append(button))
|
||||
.appendTo("#calendarcategories");
|
||||
color.minicolors(rcmail.env.minicolors_config || {});
|
||||
$("#rcmfd_new_category").val("");
|
||||
}
|
||||
}');
|
||||
}', 'foot');
|
||||
|
||||
$this->rc->output->add_script('$("#rcmfd_new_category").keypress(function(event) {
|
||||
if (event.which == 13) {
|
||||
|
@ -656,12 +699,12 @@ class calendar extends rcube_plugin
|
|||
$checkbox = new html_checkbox(array('name' => '_birthday_adressbooks[]') + $input_attrib);
|
||||
foreach ($this->rc->get_address_sources(false, true) as $source) {
|
||||
$active = in_array($source['id'], (array)$this->rc->config->get('calendar_birthday_adressbooks', array())) ? $source['id'] : '';
|
||||
$sources[] = html::label(null, $checkbox->show($active, array('value' => $source['id'])) . ' ' . rcube::Q($source['realname'] ?: $source['name']));
|
||||
$sources[] = html::tag('li', null, html::label(null, $checkbox->show($active, array('value' => $source['id'])) . rcube::Q($source['realname'] ?: $source['name'])));
|
||||
}
|
||||
|
||||
$p['blocks']['birthdays']['options']['birthday_adressbooks'] = array(
|
||||
'title' => rcube::Q($this->gettext('birthdayscalendarsources')),
|
||||
'content' => join(html::br(), $sources),
|
||||
'content' => html::tag('ul', 'proplist', implode("\n", $sources)),
|
||||
);
|
||||
|
||||
$field_id = 'rcmfd_birthdays_alarm';
|
||||
|
@ -677,9 +720,11 @@ class calendar extends rcube_plugin
|
|||
$select_offset->add($this->rc->gettext('trigger' . $trigger, 'libcalendaring'), $trigger);
|
||||
|
||||
$preset = libcalendaring::parse_alarm_value($this->rc->config->get('calendar_birthdays_alarm_offset', '-1D'));
|
||||
$preset_type = $this->rc->config->get('calendar_birthdays_alarm_type', '');
|
||||
|
||||
$p['blocks']['birthdays']['options']['birthdays_alarmoffset'] = array(
|
||||
'title' => html::label($field_id . 'value', rcube::Q($this->gettext('showalarms'))),
|
||||
'content' => $select_type->show($this->rc->config->get('calendar_birthdays_alarm_type', '')) . ' ' . $input_value->show($preset[0]) . ' ' . $select_offset->show($preset[1]),
|
||||
'title' => html::label($field_id, rcube::Q($this->gettext('showalarms'))),
|
||||
'content' => html::div('input-group', $select_type->show($preset_type) . $input_value->show($preset[0]) . ' ' . $select_offset->show($preset[1])),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -714,6 +759,7 @@ class calendar extends rcube_plugin
|
|||
'calendar_first_hour' => intval(rcube_utils::get_input_value('_first_hour', rcube_utils::INPUT_POST)),
|
||||
'calendar_work_start' => intval(rcube_utils::get_input_value('_work_start', rcube_utils::INPUT_POST)),
|
||||
'calendar_work_end' => intval(rcube_utils::get_input_value('_work_end', rcube_utils::INPUT_POST)),
|
||||
'calendar_show_weekno' => intval(rcube_utils::get_input_value('_show_weekno', rcube_utils::INPUT_POST)),
|
||||
'calendar_event_coloring' => intval(rcube_utils::get_input_value('_event_coloring', rcube_utils::INPUT_POST)),
|
||||
'calendar_default_alarm_type' => rcube_utils::get_input_value('_alarm_type', rcube_utils::INPUT_POST),
|
||||
'calendar_default_alarm_offset' => $default_alarm,
|
||||
|
@ -742,6 +788,10 @@ class calendar extends rcube_plugin
|
|||
$colors = (array) rcube_utils::get_input_value('_colors', rcube_utils::INPUT_POST);
|
||||
|
||||
foreach ($categories as $key => $name) {
|
||||
if (!isset($colors[$key])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$color = preg_replace('/^#/', '', strval($colors[$key]));
|
||||
|
||||
// rename categories in existing events -> driver's job
|
||||
|
@ -839,7 +889,7 @@ class calendar extends rcube_plugin
|
|||
}
|
||||
// report more results available
|
||||
if ($this->driver->search_more_results)
|
||||
$this->rc->output->show_message('autocompletemore', 'info');
|
||||
$this->rc->output->show_message('autocompletemore', 'notice');
|
||||
|
||||
$this->rc->output->command('multi_thread_http_response', $results, rcube_utils::get_input_value('_reqid', rcube_utils::INPUT_GPC));
|
||||
return;
|
||||
|
@ -868,10 +918,6 @@ class calendar extends rcube_plugin
|
|||
$event = rcube_utils::get_input_value('e', rcube_utils::INPUT_POST, true);
|
||||
$success = $reload = $got_msg = false;
|
||||
|
||||
// force notify if hidden + active
|
||||
if ((int)$this->rc->config->get('calendar_itip_send_option', $this->defaults['calendar_itip_send_option']) === 1)
|
||||
$event['_notify'] = 1;
|
||||
|
||||
// read old event data in order to find changes
|
||||
if (($event['_notify'] || $event['_decline']) && $action != 'new') {
|
||||
$old = $this->driver->get_event($event);
|
||||
|
@ -933,7 +979,6 @@ class calendar extends rcube_plugin
|
|||
case "remove":
|
||||
// remove previous deletes
|
||||
$undo_time = $this->driver->undelete ? $this->rc->config->get('undo_timeout', 0) : 0;
|
||||
$this->rc->session->remove('calendar_event_undo');
|
||||
|
||||
// search for event if only UID is given
|
||||
if (!isset($event['calendar']) && $event['uid']) {
|
||||
|
@ -943,11 +988,12 @@ class calendar extends rcube_plugin
|
|||
$undo_time = 0;
|
||||
}
|
||||
|
||||
// Note: the driver is responsible for setting $_SESSION['calendar_event_undo']
|
||||
// containing 'ts' and 'data' elements
|
||||
$success = $this->driver->remove_event($event, $undo_time < 1);
|
||||
$reload = (!$success || $event['_savemode']) ? 2 : 1;
|
||||
|
||||
if ($undo_time > 0 && $success) {
|
||||
$_SESSION['calendar_event_undo'] = array('ts' => time(), 'data' => $event);
|
||||
// display message with Undo link.
|
||||
$msg = html::span(null, $this->gettext('successremoval'))
|
||||
. ' ' . html::a(array('onclick' => sprintf("%s.http_request('event', 'action=undo', %s.display_message('', 'loading'))",
|
||||
|
@ -1001,9 +1047,7 @@ class calendar extends rcube_plugin
|
|||
|
||||
case "undo":
|
||||
// Restore deleted event
|
||||
$event = $_SESSION['calendar_event_undo']['data'];
|
||||
|
||||
if ($event)
|
||||
if ($event = $_SESSION['calendar_event_undo']['data'])
|
||||
$success = $this->driver->restore_event($event);
|
||||
|
||||
if ($success) {
|
||||
|
@ -1190,10 +1234,10 @@ class calendar extends rcube_plugin
|
|||
}
|
||||
|
||||
// unlock client
|
||||
$this->rc->output->command('plugin.unlock_saving');
|
||||
$this->rc->output->command('plugin.unlock_saving', $success);
|
||||
|
||||
// update event object on the client or trigger a complete refresh if too complicated
|
||||
if ($reload) {
|
||||
if ($reload && empty($_REQUEST['_framed'])) {
|
||||
$args = array('source' => $event['calendar']);
|
||||
if ($reload > 1)
|
||||
$args['refetch'] = true;
|
||||
|
@ -1269,12 +1313,21 @@ class calendar extends rcube_plugin
|
|||
*/
|
||||
function load_events()
|
||||
{
|
||||
$events = $this->driver->load_events(
|
||||
rcube_utils::get_input_value('start', rcube_utils::INPUT_GET),
|
||||
rcube_utils::get_input_value('end', rcube_utils::INPUT_GET),
|
||||
($query = rcube_utils::get_input_value('q', rcube_utils::INPUT_GET)),
|
||||
rcube_utils::get_input_value('source', rcube_utils::INPUT_GET)
|
||||
);
|
||||
$start = rcube_utils::get_input_value('start', rcube_utils::INPUT_GET);
|
||||
$end = rcube_utils::get_input_value('end', rcube_utils::INPUT_GET);
|
||||
$query = rcube_utils::get_input_value('q', rcube_utils::INPUT_GET);
|
||||
$source = rcube_utils::get_input_value('source', rcube_utils::INPUT_GET);
|
||||
|
||||
if (!is_numeric($start) || strpos($start, 'T')) {
|
||||
$start = new DateTime($start, $this->timezone);
|
||||
$start = $start->getTimestamp();
|
||||
}
|
||||
if (!is_numeric($end) || strpos($end, 'T')) {
|
||||
$end = new DateTime($end, $this->timezone);
|
||||
$end = $end->getTimestamp();
|
||||
}
|
||||
|
||||
$events = $this->driver->load_events($start, $end, $query, $source);
|
||||
echo $this->encode($events, !empty($query));
|
||||
exit;
|
||||
}
|
||||
|
@ -1337,7 +1390,11 @@ class calendar extends rcube_plugin
|
|||
|
||||
// add recurring instances
|
||||
if (!empty($event['recurrence'])) {
|
||||
foreach ($this->driver->get_recurring_events($event, $event['start']) as $recurring) {
|
||||
// Some installations can't handle all occurrences (aborting the request w/o an error in log)
|
||||
$end = clone $event['start'];
|
||||
$end->add(new DateInterval($event['recurrence']['FREQ'] == 'DAILY' ? 'P1Y' : 'P10Y'));
|
||||
|
||||
foreach ($this->driver->get_recurring_events($event, $event['start'], $end) as $recurring) {
|
||||
$recurring['temporary'] = true;
|
||||
$recurring['readonly'] = true;
|
||||
$recurring['calendar'] = '--invitation--itip';
|
||||
|
@ -1711,22 +1768,25 @@ class calendar extends rcube_plugin
|
|||
$settings = array();
|
||||
|
||||
// configuration
|
||||
$settings['default_calendar'] = $this->rc->config->get('calendar_default_calendar');
|
||||
$settings['default_view'] = (string) $this->rc->config->get('calendar_default_view', $this->defaults['calendar_default_view']);
|
||||
$settings['date_agenda'] = (string)$this->rc->config->get('calendar_date_agenda', $this->defaults['calendar_date_agenda']);
|
||||
|
||||
$settings['timeslots'] = (int) $this->rc->config->get('calendar_timeslots', $this->defaults['calendar_timeslots']);
|
||||
$settings['first_day'] = (int) $this->rc->config->get('calendar_first_day', $this->defaults['calendar_first_day']);
|
||||
$settings['first_hour'] = (int) $this->rc->config->get('calendar_first_hour', $this->defaults['calendar_first_hour']);
|
||||
$settings['work_start'] = (int) $this->rc->config->get('calendar_work_start', $this->defaults['calendar_work_start']);
|
||||
$settings['work_end'] = (int) $this->rc->config->get('calendar_work_end', $this->defaults['calendar_work_end']);
|
||||
$settings['agenda_range'] = (int) $this->rc->config->get('calendar_agenda_range', $this->defaults['calendar_agenda_range']);
|
||||
$settings['agenda_sections'] = $this->rc->config->get('calendar_agenda_sections', $this->defaults['calendar_agenda_sections']);
|
||||
$settings['event_coloring'] = (int) $this->rc->config->get('calendar_event_coloring', $this->defaults['calendar_event_coloring']);
|
||||
$settings['time_indicator'] = (int) $this->rc->config->get('calendar_time_indicator', $this->defaults['calendar_time_indicator']);
|
||||
$settings['invite_shared'] = (int) $this->rc->config->get('calendar_allow_invite_shared', $this->defaults['calendar_allow_invite_shared']);
|
||||
$settings['invitation_calendars'] = (bool)$this->rc->config->get('kolab_invitation_calendars', false);
|
||||
$settings['itip_notify'] = (int) $this->rc->config->get('calendar_itip_send_option', $this->defaults['calendar_itip_send_option']);
|
||||
$settings['show_weekno'] = (int) $this->rc->config->get('calendar_show_weekno', $this->defaults['calendar_show_weekno']);
|
||||
$settings['default_calendar'] = $this->rc->config->get('calendar_default_calendar');
|
||||
$settings['invitation_calendars'] = (bool) $this->rc->config->get('kolab_invitation_calendars', false);
|
||||
|
||||
// 'table' view has been replaced by 'list' view
|
||||
if ($settings['default_view'] == 'table') {
|
||||
$settings['default_view'] = 'list';
|
||||
}
|
||||
|
||||
// get user identity to create default attendee
|
||||
if ($this->ui->screen == 'calendar') {
|
||||
|
@ -1834,24 +1894,32 @@ class calendar extends rcube_plugin
|
|||
$event['description'] = trim($h2t->get_text());
|
||||
}
|
||||
|
||||
// mapping url => vurl because of the fullcalendar client script
|
||||
// mapping url => vurl, allday => allDay because of the fullcalendar client script
|
||||
$event['vurl'] = $event['url'];
|
||||
$event['allDay'] = !empty($event['allday']);
|
||||
unset($event['url']);
|
||||
unset($event['allday']);
|
||||
|
||||
$event['className'] = $event['className'] ? explode(' ', $event['className']) : array();
|
||||
|
||||
if ($event['allDay']) {
|
||||
$event['end'] = $event['end']->add(new DateInterval('P1D'));
|
||||
}
|
||||
|
||||
if ($_GET['mode'] == 'print') {
|
||||
$event['editable'] = false;
|
||||
}
|
||||
|
||||
return array(
|
||||
'_id' => $event['calendar'] . ':' . $event['id'], // unique identifier for fullcalendar
|
||||
'start' => $this->lib->adjust_timezone($event['start'], $event['allday'])->format('c'),
|
||||
'end' => $this->lib->adjust_timezone($event['end'], $event['allday'])->format('c'),
|
||||
'start' => $this->lib->adjust_timezone($event['start'], $event['allDay'])->format('c'),
|
||||
'end' => $this->lib->adjust_timezone($event['end'], $event['allDay'])->format('c'),
|
||||
// 'changed' might be empty for event recurrences (Bug #2185)
|
||||
'changed' => $event['changed'] ? $this->lib->adjust_timezone($event['changed'])->format('c') : null,
|
||||
'created' => $event['created'] ? $this->lib->adjust_timezone($event['created'])->format('c') : null,
|
||||
'title' => strval($event['title']),
|
||||
'description' => strval($event['description']),
|
||||
'location' => strval($event['location']),
|
||||
'className' => ($addcss ? 'fc-event-cal-'.asciiwords($event['calendar'], true).' ' : '') .
|
||||
'fc-event-cat-' . asciiwords(strtolower(join('-', (array)$event['categories'])), true) .
|
||||
rtrim(' ' . $event['className']),
|
||||
'allDay' => ($event['allday'] == 1),
|
||||
) + $event;
|
||||
}
|
||||
|
||||
|
@ -1926,7 +1994,8 @@ class calendar extends rcube_plugin
|
|||
*/
|
||||
public function attachment_upload()
|
||||
{
|
||||
$this->lib->attachment_upload(self::SESSION_KEY, 'cal-');
|
||||
$handler = new kolab_attachments_handler();
|
||||
$handler->attachment_upload(self::SESSION_KEY, 'cal-');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1934,9 +2003,11 @@ class calendar extends rcube_plugin
|
|||
*/
|
||||
public function attachment_get()
|
||||
{
|
||||
$handler = new kolab_attachments_handler();
|
||||
|
||||
// show loading page
|
||||
if (!empty($_GET['_preload'])) {
|
||||
return $this->lib->attachment_loading_page();
|
||||
return $handler->attachment_loading_page();
|
||||
}
|
||||
|
||||
$event_id = rcube_utils::get_input_value('_event', rcube_utils::INPUT_GPC);
|
||||
|
@ -1961,10 +2032,7 @@ class calendar extends rcube_plugin
|
|||
|
||||
// show part page
|
||||
if (!empty($_GET['_frame'])) {
|
||||
$this->lib->attachment = $attachment;
|
||||
$this->register_handler('plugin.attachmentframe', array($this->lib, 'attachment_frame'));
|
||||
$this->register_handler('plugin.attachmentcontrols', array($this->lib, 'attachment_header'));
|
||||
$this->rc->output->send('calendar.attachment');
|
||||
$handler->attachment_page($attachment);
|
||||
}
|
||||
// deliver attachment content
|
||||
else if ($attachment) {
|
||||
|
@ -1972,7 +2040,7 @@ class calendar extends rcube_plugin
|
|||
$attachment['body'] = $this->driver->get_attachment_body($id, $event);
|
||||
}
|
||||
|
||||
$this->lib->attachment_get($attachment);
|
||||
$handler->attachment_get($attachment);
|
||||
}
|
||||
|
||||
// if we arrive here, the requested part was not found
|
||||
|
@ -1994,10 +2062,15 @@ class calendar extends rcube_plugin
|
|||
*/
|
||||
private function write_preprocess(&$event, $action)
|
||||
{
|
||||
// Remove double timezone specification (T2313)
|
||||
$event['start'] = preg_replace('/\s*\(.*\)/', '', $event['start']);
|
||||
$event['end'] = preg_replace('/\s*\(.*\)/', '', $event['end']);
|
||||
|
||||
// convert dates into DateTime objects in user's current timezone
|
||||
$event['start'] = new DateTime($event['start'], $this->timezone);
|
||||
$event['end'] = new DateTime($event['end'], $this->timezone);
|
||||
$event['allday'] = (bool)$event['allday'];
|
||||
$event['allday'] = !empty($event['allDay']);
|
||||
unset($event['allDay']);
|
||||
|
||||
// start/end is all we need for 'move' action (#1480)
|
||||
if ($action == 'move') {
|
||||
|
@ -2351,7 +2424,7 @@ class calendar extends rcube_plugin
|
|||
$title = $this->gettext('print');
|
||||
|
||||
$view = rcube_utils::get_input_value('view', rcube_utils::INPUT_GPC);
|
||||
if (!in_array($view, array('agendaWeek', 'agendaDay', 'month', 'table')))
|
||||
if (!in_array($view, array('agendaWeek', 'agendaDay', 'month', 'list')))
|
||||
$view = 'agendaDay';
|
||||
|
||||
$this->rc->output->set_env('view', $view);
|
||||
|
@ -2362,52 +2435,19 @@ class calendar extends rcube_plugin
|
|||
if ($range = rcube_utils::get_input_value('range', rcube_utils::INPUT_GPC))
|
||||
$this->rc->output->set_env('listRange', intval($range));
|
||||
|
||||
if (isset($_REQUEST['sections']))
|
||||
$this->rc->output->set_env('listSections', rcube_utils::get_input_value('sections', rcube_utils::INPUT_GPC));
|
||||
|
||||
if ($search = rcube_utils::get_input_value('search', rcube_utils::INPUT_GPC)) {
|
||||
$this->rc->output->set_env('search', $search);
|
||||
$title .= ' "' . $search . '"';
|
||||
}
|
||||
|
||||
// Add CSS stylesheets to the page header
|
||||
$skin_path = $this->local_skin_path();
|
||||
$this->include_stylesheet($skin_path . '/fullcalendar.css');
|
||||
$this->include_stylesheet($skin_path . '/print.css');
|
||||
|
||||
// Add JS files to the page header
|
||||
$this->include_script('print.js');
|
||||
$this->include_script('lib/js/fullcalendar.js');
|
||||
// Add JS to the page
|
||||
$this->ui->addJS();
|
||||
|
||||
$this->register_handler('plugin.calendar_css', array($this->ui, 'calendar_css'));
|
||||
$this->register_handler('plugin.calendar_list', array($this->ui, 'calendar_list'));
|
||||
|
||||
$this->rc->output->set_pagetitle($title);
|
||||
$this->rc->output->send("calendar.print");
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function get_inline_ui()
|
||||
{
|
||||
foreach (array('save','cancel','savingdata') as $label)
|
||||
$texts['calendar.'.$label] = $this->gettext($label);
|
||||
|
||||
$texts['calendar.new_event'] = $this->gettext('createfrommail');
|
||||
|
||||
$this->ui->init_templates();
|
||||
$this->ui->calendar_list(); # set env['calendars']
|
||||
echo $this->api->output->parse('calendar.eventedit', false, false);
|
||||
echo html::tag('script', array('type' => 'text/javascript'),
|
||||
"rcmail.set_env('calendars', " . rcube_output::json_serialize($this->api->output->env['calendars']) . ");\n".
|
||||
"rcmail.set_env('deleteicon', '" . $this->api->output->env['deleteicon'] . "');\n".
|
||||
"rcmail.set_env('cancelicon', '" . $this->api->output->env['cancelicon'] . "');\n".
|
||||
"rcmail.set_env('loadingicon', '" . $this->api->output->env['loadingicon'] . "');\n".
|
||||
"rcmail.gui_object('attachmentlist', '" . $this->ui->attachmentlist_id . "');\n".
|
||||
"rcmail.add_label(" . rcube_output::json_serialize($texts) . ");\n"
|
||||
);
|
||||
exit;
|
||||
$this->rc->output->send('calendar.print');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2421,14 +2461,17 @@ class calendar extends rcube_plugin
|
|||
{
|
||||
$diff = array();
|
||||
$ignore = array('changed' => 1, 'attachments' => 1);
|
||||
|
||||
foreach (array_unique(array_merge(array_keys($a), array_keys($b))) as $key) {
|
||||
if (!$ignore[$key] && $key[0] != '_' && $a[$key] != $b[$key])
|
||||
if (!$ignore[$key] && $key[0] != '_' && $a[$key] != $b[$key]) {
|
||||
$diff[] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
// only compare number of attachments
|
||||
if (count($a['attachments']) != count($b['attachments']))
|
||||
if (count((array) $a['attachments']) != count((array) $b['attachments'])) {
|
||||
$diff[] = 'attachments';
|
||||
}
|
||||
|
||||
return $diff;
|
||||
}
|
||||
|
@ -2611,7 +2654,12 @@ class calendar extends rcube_plugin
|
|||
&& ($response['action'] == 'rsvp' || $response['action'] == 'import')
|
||||
) {
|
||||
$calendars = $this->driver->list_calendars($mode);
|
||||
$calendar_select = new html_select(array('name' => 'calendar', 'id' => 'itip-saveto', 'is_escaped' => true));
|
||||
$calendar_select = new html_select(array(
|
||||
'name' => 'calendar',
|
||||
'id' => 'itip-saveto',
|
||||
'is_escaped' => true,
|
||||
'class' => 'form-control custom-select'
|
||||
));
|
||||
$calendar_select->add('--', '');
|
||||
$numcals = 0;
|
||||
foreach ($calendars as $calendar) {
|
||||
|
@ -2647,9 +2695,15 @@ class calendar extends rcube_plugin
|
|||
$before = $after = array();
|
||||
foreach ($events as $event) {
|
||||
// TODO: skip events with free_busy == 'free' ?
|
||||
if ($event['uid'] == $data['uid'] || $event['end'] < $day_start || $event['start'] > $day_end)
|
||||
if ($event['uid'] == $data['uid']
|
||||
|| $event['end'] < $day_start || $event['start'] > $day_end
|
||||
|| $event['status'] == 'CANCELLED'
|
||||
|| (!empty($event['className']) && strpos($event['className'], 'declined') !== false)
|
||||
) {
|
||||
continue;
|
||||
else if ($event['start'] < $event_start)
|
||||
}
|
||||
|
||||
if ($event['start'] < $event_start)
|
||||
$before[] = $this->mail_agenda_event_row($event);
|
||||
else
|
||||
$after[] = $this->mail_agenda_event_row($event);
|
||||
|
@ -2817,7 +2871,7 @@ class calendar extends rcube_plugin
|
|||
$this->rc->format_date($event['start'], $this->rc->config->get('time_format')) . ' - ' .
|
||||
$this->rc->format_date($event['end'], $this->rc->config->get('time_format'));
|
||||
|
||||
return html::div(rtrim('event-row ' . $class),
|
||||
return html::div(rtrim('event-row ' . ($class ?: $event['className'])),
|
||||
html::span('event-date', $time) .
|
||||
html::span('event-title', rcube::Q($event['title']))
|
||||
);
|
||||
|
@ -2837,7 +2891,6 @@ class calendar extends rcube_plugin
|
|||
}
|
||||
else if (in_array($header->ctype, array('multipart/alternative', 'multipart/mixed'))) {
|
||||
// TODO: fetch bodystructure and search for ical parts. Maybe too expensive?
|
||||
|
||||
if (!empty($header->structure) && is_array($header->structure->parts)) {
|
||||
foreach ($header->structure->parts as $part) {
|
||||
if (libcalendaring::part_is_vcalendar($part) && !empty($part->ctype_parameters['method'])) {
|
||||
|
@ -2876,23 +2929,24 @@ class calendar extends rcube_plugin
|
|||
// get prepared inline UI for this event object
|
||||
if ($ical_objects->method) {
|
||||
$append = '';
|
||||
$date_str = $this->rc->format_date($event['start'], $this->rc->config->get('date_format'), empty($event['start']->_dateonly));
|
||||
$date = new DateTime($event['start']->format('Y-m-d') . ' 12:00:00', new DateTimeZone('UTC'));
|
||||
|
||||
// prepare a small agenda preview to be filled with actual event data on async request
|
||||
if ($ical_objects->method == 'REQUEST') {
|
||||
$append = html::div('calendar-agenda-preview',
|
||||
html::tag('h3', 'preview-title', $this->gettext('agenda') . ' ' .
|
||||
html::span('date', $this->rc->format_date($event['start'], $this->rc->config->get('date_format')))
|
||||
) . '%before%' . $this->mail_agenda_event_row($event, 'current') . '%after%');
|
||||
html::tag('h3', 'preview-title', $this->gettext('agenda') . ' ' . html::span('date', $date_str))
|
||||
. '%before%' . $this->mail_agenda_event_row($event, 'current') . '%after%');
|
||||
}
|
||||
|
||||
$html .= html::div('calendar-invitebox',
|
||||
$html .= html::div('calendar-invitebox invitebox boxinformation',
|
||||
$this->itip->mail_itip_inline_ui(
|
||||
$event,
|
||||
$ical_objects->method,
|
||||
$ical_objects->mime_id . ':' . $idx,
|
||||
'calendar',
|
||||
rcube_utils::anytodatetime($ical_objects->message_date),
|
||||
$this->rc->url(array('task' => 'calendar')) . '&view=agendaDay&date=' . $event['start']->format('U')
|
||||
$this->rc->url(array('task' => 'calendar')) . '&view=agendaDay&date=' . $date->format('U')
|
||||
) . $append
|
||||
);
|
||||
}
|
||||
|
@ -2917,7 +2971,7 @@ class calendar extends rcube_plugin
|
|||
'type' => 'link',
|
||||
'wrapper' => 'li',
|
||||
'command' => 'attachment-save-calendar',
|
||||
'class' => 'icon calendarlink',
|
||||
'class' => 'icon calendarlink disabled',
|
||||
'classact' => 'icon calendarlink active',
|
||||
'innerclass' => 'icon calendar',
|
||||
'label' => 'calendar.savetocalendar',
|
||||
|
@ -3059,14 +3113,17 @@ class calendar extends rcube_plugin
|
|||
// try to identify the attendee using the email sender address
|
||||
$existing_attendee = -1;
|
||||
$existing_attendee_emails = array();
|
||||
|
||||
foreach ($existing['attendees'] as $i => $attendee) {
|
||||
$existing_attendee_emails[] = $attendee['email'];
|
||||
if ($this->itip->compare_email($attendee['email'], $event['_sender'], $event['_sender_utf'])) {
|
||||
$existing_attendee = $i;
|
||||
}
|
||||
}
|
||||
|
||||
$event_attendee = null;
|
||||
$update_attendees = array();
|
||||
|
||||
foreach ($event['attendees'] as $attendee) {
|
||||
if ($this->itip->compare_email($attendee['email'], $event['_sender'], $event['_sender_utf'])) {
|
||||
$event_attendee = $attendee;
|
||||
|
@ -3074,6 +3131,7 @@ class calendar extends rcube_plugin
|
|||
$metadata['fallback'] = $attendee['status'];
|
||||
$metadata['attendee'] = $attendee['email'];
|
||||
$metadata['rsvp'] = $attendee['rsvp'] || $attendee['role'] != 'NON-PARTICIPANT';
|
||||
|
||||
if ($attendee['status'] != 'DELEGATED') {
|
||||
break;
|
||||
}
|
||||
|
@ -3099,6 +3157,23 @@ class calendar extends rcube_plugin
|
|||
}
|
||||
}
|
||||
|
||||
// Accept sender as a new participant (different email in From: and the iTip)
|
||||
// Use ATTENDEE entry from the iTip with replaced email address
|
||||
if (!$event_attendee) {
|
||||
// remove the organizer
|
||||
$itip_attendees = array_filter($event['attendees'], function($item) { return $item['role'] != 'ORGANIZER'; });
|
||||
|
||||
// there must be only one attendee
|
||||
if (is_array($itip_attendees) && count($itip_attendees) == 1) {
|
||||
$event_attendee = $itip_attendees[key($itip_attendees)];
|
||||
$event_attendee['email'] = $event['_sender'];
|
||||
$update_attendees[] = $event_attendee;
|
||||
$metadata['fallback'] = $event_attendee['status'];
|
||||
$metadata['attendee'] = $event_attendee['email'];
|
||||
$metadata['rsvp'] = $event_attendee['rsvp'] || $event_attendee['role'] != 'NON-PARTICIPANT';
|
||||
}
|
||||
}
|
||||
|
||||
// found matching attendee entry in both existing and new events
|
||||
if ($existing_attendee >= 0 && $event_attendee) {
|
||||
$existing['attendees'][$existing_attendee] = $event_attendee;
|
||||
|
@ -3109,6 +3184,9 @@ class calendar extends rcube_plugin
|
|||
$existing['attendees'][] = $event_attendee;
|
||||
$success = $this->driver->update_attendees($existing, $update_attendees);
|
||||
}
|
||||
else if (!$event_attendee) {
|
||||
$error_msg = $this->gettext('errorunknownattendee');
|
||||
}
|
||||
else {
|
||||
$error_msg = $this->gettext('newerversionexists');
|
||||
}
|
||||
|
@ -3340,14 +3418,18 @@ class calendar extends rcube_plugin
|
|||
*/
|
||||
public function mail_message2event()
|
||||
{
|
||||
$uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST);
|
||||
$mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST);
|
||||
$this->ui->init();
|
||||
$this->ui->addJS();
|
||||
$this->ui->init_templates();
|
||||
$this->ui->calendar_list(array(), true); // set env['calendars']
|
||||
|
||||
$uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GET);
|
||||
$mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GET);
|
||||
$event = array();
|
||||
|
||||
// establish imap connection
|
||||
$imap = $this->rc->get_storage();
|
||||
$imap->set_folder($mbox);
|
||||
$message = new rcube_message($uid);
|
||||
$message = new rcube_message($uid, $mbox);
|
||||
|
||||
if ($message->headers) {
|
||||
$event['title'] = trim($message->subject);
|
||||
|
@ -3393,13 +3475,13 @@ class calendar extends rcube_plugin
|
|||
}
|
||||
}
|
||||
|
||||
$this->rc->output->command('plugin.mail2event_dialog', $event);
|
||||
$this->rc->output->set_env('event_prop', $event);
|
||||
}
|
||||
else {
|
||||
$this->rc->output->command('display_message', $this->gettext('messageopenerror'), 'error');
|
||||
}
|
||||
|
||||
$this->rc->output->send();
|
||||
$this->rc->output->send('calendar.dialog');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -33,53 +33,40 @@ function rcube_calendar(settings)
|
|||
// extend base class
|
||||
rcube_libcalendaring.call(this, settings);
|
||||
|
||||
// member vars
|
||||
this.ui_loaded = false;
|
||||
this.selected_attachment = null;
|
||||
|
||||
// private vars
|
||||
var me = this;
|
||||
|
||||
// create new event from current mail message
|
||||
this.create_from_mail = function(uid)
|
||||
{
|
||||
if (uid || (uid = rcmail.get_single_uid())) {
|
||||
// load calendar UI (scripts and edit dialog template)
|
||||
if (!this.ui_loaded) {
|
||||
$.when(
|
||||
$.getScript(rcmail.assets_path('plugins/calendar/calendar_ui.js')),
|
||||
$.getScript(rcmail.assets_path('plugins/calendar/lib/js/fullcalendar.js')),
|
||||
$.get(rcmail.url('calendar/inlineui'), function(html) { $(document.body).append(html); }, 'html')
|
||||
).then(function() {
|
||||
// disable attendees feature (autocompletion and stuff is not initialized)
|
||||
for (var c in rcmail.env.calendars)
|
||||
rcmail.env.calendars[c].attendees = rcmail.env.calendars[c].resources = false;
|
||||
|
||||
me.ui_loaded = true;
|
||||
me.ui = new rcube_calendar_ui(me.settings);
|
||||
me.create_from_mail(uid); // start over
|
||||
});
|
||||
|
||||
if (!uid && !(uid = rcmail.get_single_uid())) {
|
||||
return;
|
||||
}
|
||||
|
||||
// get message contents for event dialog
|
||||
var lock = rcmail.set_busy(true, 'loading');
|
||||
rcmail.http_post('calendar/mailtoevent', {
|
||||
'_mbox': rcmail.env.mailbox,
|
||||
'_uid': uid
|
||||
}, lock);
|
||||
}
|
||||
var url = {_mbox: rcmail.env.mailbox, _uid: uid, _framed: 1},
|
||||
buttons = {},
|
||||
button_classes = ['mainaction save', 'cancel'],
|
||||
title = rcmail.gettext('calendar.createfrommail'),
|
||||
dialog = $('<iframe>').attr({
|
||||
id: 'kolabcalendarinlinegui',
|
||||
name: 'kolabcalendardialog',
|
||||
src: rcmail.url('calendar/dialog-ui', url)
|
||||
});
|
||||
|
||||
// dialog buttons
|
||||
buttons[rcmail.gettext('save')] = function() {
|
||||
var frame = rcmail.get_frame_window('kolabcalendarinlinegui');
|
||||
frame.rcmail.command('event-save');
|
||||
};
|
||||
|
||||
// callback function triggered from server with contents for the new event
|
||||
this.mail2event_dialog = function(event)
|
||||
{
|
||||
if (event.title) {
|
||||
this.ui.add_event(event);
|
||||
if (rcmail.message_list)
|
||||
rcmail.message_list.blur();
|
||||
}
|
||||
buttons[rcmail.gettext('cancel')] = function() {
|
||||
dialog.dialog('destroy');
|
||||
};
|
||||
|
||||
// open jquery UI dialog
|
||||
window.kolab_event_dialog_element = dialog = rcmail.show_popup_dialog(dialog, title, buttons, {
|
||||
button_classes: button_classes,
|
||||
minWidth: 500,
|
||||
width: 600,
|
||||
height: 600
|
||||
});
|
||||
};
|
||||
|
||||
// handler for attachment-save-calendar commands
|
||||
|
@ -94,7 +81,7 @@ function rcube_calendar(settings)
|
|||
// _calendar: $('#calendar-attachment-saveto').val(),
|
||||
}, rcmail.set_busy(true, 'itip.savingdata'));
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
@ -107,12 +94,9 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
|
|||
if (rcmail.env.task == 'mail') {
|
||||
rcmail.register_command('calendar-create-from-mail', function() { cal.create_from_mail(); });
|
||||
rcmail.register_command('attachment-save-calendar', function() { cal.save_to_calendar(); });
|
||||
rcmail.addEventListener('plugin.mail2event_dialog', function(p) { cal.mail2event_dialog(p); });
|
||||
rcmail.addEventListener('plugin.unlock_saving', function(p) { cal.ui && cal.ui.unlock_saving(); });
|
||||
|
||||
if (rcmail.env.action != 'show') {
|
||||
rcmail.env.message_commands.push('calendar-create-from-mail');
|
||||
rcmail.add_element($('<a>'));
|
||||
}
|
||||
else {
|
||||
rcmail.enable_command('calendar-create-from-mail', true);
|
||||
|
|
1620
calendar_ui.js
|
@ -3,17 +3,17 @@
|
|||
"type": "roundcube-plugin",
|
||||
"description": "Calendar plugin",
|
||||
"homepage": "https://git.kolab.org/diffusion/RPK/",
|
||||
"keywords": ["apps","calendar","ical","itip"],
|
||||
"license": "AGPLv3",
|
||||
"version": "3.5.1",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Alensader Machniak",
|
||||
"email": "machniak@kolabsys.com",
|
||||
"name": "Thomas Bruederli",
|
||||
"email": "bruederli@kolabsys.com",
|
||||
"role": "Lead"
|
||||
},
|
||||
{
|
||||
"name": "Thomas Bruederli",
|
||||
"email": "thomas@roundcube.net",
|
||||
"name": "Aleksander Machniak",
|
||||
"email": "machniak@kolabsys.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
|
@ -26,11 +26,12 @@
|
|||
"require": {
|
||||
"php": ">=5.3.0",
|
||||
"roundcube/plugin-installer": ">=0.1.3",
|
||||
"kolab/libcalendaring": ">=3.3.3"
|
||||
"kolab/libcalendaring": ">=3.4.0",
|
||||
"kolab/libkolab": ">=3.4.0"
|
||||
},
|
||||
"extra": {
|
||||
"roundcube": {
|
||||
"min-version": "1.3.0",
|
||||
"min-version": "1.4.0",
|
||||
"sql-dir": "drivers/database/SQL"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
+-------------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
// backend type (database, google, kolab)
|
||||
// backend type (database, kolab)
|
||||
$config['calendar_driver'] = "database";
|
||||
|
||||
// default calendar view (agendaDay, agendaWeek, month)
|
||||
|
@ -34,33 +34,6 @@ $config['calendar_default_view'] = "agendaWeek";
|
|||
// show a birthdays calendar from the user's address book(s)
|
||||
$config['calendar_contact_birthdays'] = false;
|
||||
|
||||
// mapping of Roundcube date formats to calendar formats (long/short/agenda)
|
||||
// should be in sync with 'date_formats' in main config
|
||||
$config['calendar_date_format_sets'] = array(
|
||||
'yyyy-MM-dd' => array('MMM d yyyy', 'M-d', 'ddd MM-dd'),
|
||||
'dd-MM-yyyy' => array('d MMM yyyy', 'd-M', 'ddd dd-MM'),
|
||||
'yyyy/MM/dd' => array('MMM d yyyy', 'M/d', 'ddd MM/dd'),
|
||||
'MM/dd/yyyy' => array('MMM d yyyy', 'M/d', 'ddd MM/dd'),
|
||||
'dd/MM/yyyy' => array('d MMM yyyy', 'd/M', 'ddd dd/MM'),
|
||||
'dd.MM.yyyy' => array('dd. MMM yyyy', 'd.M', 'ddd dd.MM.'),
|
||||
'd.M.yyyy' => array('d. MMM yyyy', 'd.M', 'ddd d.MM.'),
|
||||
);
|
||||
|
||||
// general date format (only set if different from default date format and not user configurable)
|
||||
// $config['calendar_date_format'] = "yyyy-MM-dd";
|
||||
|
||||
// time format (only set if different from default date format)
|
||||
// $config['calendar_time_format'] = "HH:mm";
|
||||
|
||||
// short date format (used for column titles)
|
||||
// $config['calendar_date_short'] = 'M-d';
|
||||
|
||||
// long date format (used for calendar title)
|
||||
// $config['calendar_date_long'] = 'MMM d yyyy';
|
||||
|
||||
// date format used for agenda view
|
||||
// $config['calendar_date_agenda'] = 'ddd MM-dd';
|
||||
|
||||
// timeslots per hour (1, 2, 3, 4, 6)
|
||||
$config['calendar_timeslots'] = 2;
|
||||
|
||||
|
@ -82,6 +55,12 @@ $config['calendar_work_end'] = 18;
|
|||
// show line at current time of the day
|
||||
$config['calendar_time_indicator'] = true;
|
||||
|
||||
// Display week numbers:
|
||||
// -1: don't display week numbers
|
||||
// 0: in datepicker only (default)
|
||||
// 1: in both datepicker and calendar
|
||||
$config['calendar_show_weekno'] = 0;
|
||||
|
||||
// default alarm settings for new events.
|
||||
// this is only a preset when a new event dialog opens
|
||||
// possible values are <empty>, DISPLAY, EMAIL
|
||||
|
@ -138,8 +117,9 @@ $config['calendar_freebusy_trigger'] = false;
|
|||
$config['calendar_include_freebusy_data'] = 1;
|
||||
|
||||
// SMTP server host used to send (anonymous) itip messages.
|
||||
// Set to '' in order to use PHP's mail() function for email delivery.
|
||||
// To override the SMTP port or connection method, provide a full URL like 'tls://somehost:587'
|
||||
// This will add a link to invitation messages to allow users from outside
|
||||
// to reply when their mail clients do not support iTip format.
|
||||
$config['calendar_itip_smtp_server'] = null;
|
||||
|
||||
// SMTP username used to send (anonymous) itip messages
|
||||
|
|
|
@ -592,14 +592,16 @@ abstract class calendar_driver
|
|||
*/
|
||||
public function calendar_form($action, $calendar, $formfields)
|
||||
{
|
||||
$html = '';
|
||||
foreach ($formfields as $field) {
|
||||
$html .= html::div('form-section',
|
||||
html::label($field['id'], $field['label']) .
|
||||
$field['value']);
|
||||
$table = new html_table(array('cols' => 2, 'class' => 'propform'));
|
||||
|
||||
foreach ($formfields as $col => $colprop) {
|
||||
$label = !empty($colprop['label']) ? $colprop['label'] : $rcmail->gettext("$domain.$col");
|
||||
|
||||
$table->add('title', html::label($colprop['id'], rcube::Q($label)));
|
||||
$table->add(null, $colprop['value']);
|
||||
}
|
||||
|
||||
return $html;
|
||||
return $table->show();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -729,7 +731,7 @@ abstract class calendar_driver
|
|||
|
||||
$rcmail = rcmail::get_instance();
|
||||
|
||||
if ($source && $contact_id && ($abook = $rcmail->get_address_book($source))) {
|
||||
if (strlen($source) && $contact_id && ($abook = $rcmail->get_address_book($source))) {
|
||||
if ($contact = $abook->get_record($contact_id, true)) {
|
||||
return self::parse_contact($contact, $source);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS `kolab_alarms` (
|
|||
PRIMARY KEY(`alarm_id`,`user_id`),
|
||||
CONSTRAINT `fk_kolab_alarms_user_id` FOREIGN KEY (`user_id`)
|
||||
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) /*!40000 ENGINE=INNODB */;
|
||||
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `itipinvitations` (
|
||||
`token` VARCHAR(64) NOT NULL,
|
||||
|
|
|
@ -8,4 +8,4 @@ CREATE TABLE `kolab_alarms` (
|
|||
PRIMARY KEY(`event_id`),
|
||||
CONSTRAINT `fk_kolab_alarms_user_id` FOREIGN KEY (`user_id`)
|
||||
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) /*!40000 ENGINE=INNODB */;
|
||||
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
|
||||
|
|
|
@ -40,7 +40,7 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
|
||||
protected $cal;
|
||||
protected $events = array();
|
||||
protected $search_fields = array('title', 'description', 'location', 'attendees');
|
||||
protected $search_fields = array('title', 'description', 'location', 'attendees', 'categories');
|
||||
|
||||
/**
|
||||
* Factory method to instantiate a kolab_calendar object
|
||||
|
@ -214,7 +214,12 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
$this->events[$id] = $master;
|
||||
}
|
||||
else if (is_array($master['recurrence'])) {
|
||||
$this->get_recurring_events($record, $master['start'], null, $id);
|
||||
// For performance reasons we'll get only the specific instance
|
||||
if (($date = substr($id, strlen($master_id) + 1, 8)) && strlen($date) == 8 && is_numeric($date)) {
|
||||
$start_date = new DateTime($date . 'T000000', $master['start']->getTimezone());
|
||||
}
|
||||
|
||||
$this->get_recurring_events($record, $start_date ?: $master['start'], null, $id, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -317,14 +322,16 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
if ($event['start'] <= $end && $event['end'] >= $start) {
|
||||
unset($event['_attendees']);
|
||||
$add = true;
|
||||
|
||||
// skip the first instance of a recurring event if listed in exdate
|
||||
if ($virtual && !empty($event['recurrence']['EXDATE'])) {
|
||||
$event_date = $event['start']->format('Ymd');
|
||||
$exdates = (array)$event['recurrence']['EXDATE'];
|
||||
$event_tz = $event['start']->getTimezone();
|
||||
|
||||
foreach ($exdates as $exdate) {
|
||||
if ($exdate->format('Ymd') == $event_date) {
|
||||
foreach ((array) $event['recurrence']['EXDATE'] as $exdate) {
|
||||
$ex = clone $exdate;
|
||||
$ex->setTimezone($event_tz);
|
||||
|
||||
if ($ex->format('Ymd') == $event_date) {
|
||||
$add = false;
|
||||
break;
|
||||
}
|
||||
|
@ -335,6 +342,7 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
if ($virtual && !empty($event['recurrence']) && is_array($event['recurrence']['EXCEPTIONS'])) {
|
||||
foreach ($event['recurrence']['EXCEPTIONS'] as $exception) {
|
||||
if ($event['_instance'] == $exception['_instance']) {
|
||||
unset($exception['calendar'], $exception['className'], $exception['_folder_id']);
|
||||
// clone date objects from main event before adjusting them with exception data
|
||||
if (is_object($event['start'])) $event['start'] = clone $record['start'];
|
||||
if (is_object($event['end'])) $event['end'] = clone $record['end'];
|
||||
|
@ -399,10 +407,12 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
}
|
||||
|
||||
/**
|
||||
* Get number of events in the given calendar
|
||||
*
|
||||
* @param integer Date range start (unix timestamp)
|
||||
* @param integer Date range end (unix timestamp)
|
||||
* @param array Additional query to filter events
|
||||
*
|
||||
* @return integer Count
|
||||
*/
|
||||
public function count_events($start, $end = null, $filter_query = null)
|
||||
|
@ -488,9 +498,9 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
* Update a specific event record
|
||||
*
|
||||
* @see calendar_driver::new_event()
|
||||
*
|
||||
* @return boolean True on success, False on error
|
||||
*/
|
||||
|
||||
public function update_event($event, $exception_id = null)
|
||||
{
|
||||
$updated = false;
|
||||
|
@ -534,6 +544,7 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
* Delete an event record
|
||||
*
|
||||
* @see calendar_driver::remove_event()
|
||||
*
|
||||
* @return boolean True on success, False on error
|
||||
*/
|
||||
public function delete_event($event, $force = true)
|
||||
|
@ -542,8 +553,7 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
|
||||
if (!$deleted) {
|
||||
rcube::raise_error(array(
|
||||
'code' => 600, 'type' => 'php',
|
||||
'file' => __FILE__, 'line' => __LINE__,
|
||||
'code' => 600, 'file' => __FILE__, 'line' => __LINE__,
|
||||
'message' => sprintf("Error deleting event object '%s' from Kolab server", $event['id'])),
|
||||
true, false);
|
||||
}
|
||||
|
@ -555,18 +565,21 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
* Restore deleted event record
|
||||
*
|
||||
* @see calendar_driver::undelete_event()
|
||||
*
|
||||
* @return boolean True on success, False on error
|
||||
*/
|
||||
public function restore_event($event)
|
||||
{
|
||||
if ($this->storage->undelete($event['id'])) {
|
||||
// Make sure this is not an instance identifier
|
||||
$uid = preg_replace('/-\d{8}(T\d{6})?$/', '', $event['id']);
|
||||
|
||||
if ($this->storage->undelete($uid)) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
rcube::raise_error(array(
|
||||
'code' => 600, 'type' => 'php',
|
||||
'file' => __FILE__, 'line' => __LINE__,
|
||||
'message' => "Error undeleting the event object $event[id] from the Kolab server"),
|
||||
'code' => 600, 'file' => __FILE__, 'line' => __LINE__,
|
||||
'message' => sprintf("Error undeleting the event object '%s' from the Kolab server", $event['id'])),
|
||||
true, false);
|
||||
}
|
||||
|
||||
|
@ -594,19 +607,22 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
/**
|
||||
* Create instances of a recurring event
|
||||
*
|
||||
* @param array Hash array with event properties
|
||||
* @param object DateTime Start date of the recurrence window
|
||||
* @param object DateTime End date of the recurrence window
|
||||
* @param string ID of a specific recurring event instance
|
||||
* @param array $event Hash array with event properties
|
||||
* @param DateTime $start Start date of the recurrence window
|
||||
* @param DateTime $end End date of the recurrence window
|
||||
* @param string $event_id ID of a specific recurring event instance
|
||||
* @param int $limit Max. number of instances to return
|
||||
*
|
||||
* @return array List of recurring event instances
|
||||
*/
|
||||
public function get_recurring_events($event, $start, $end = null, $event_id = null)
|
||||
public function get_recurring_events($event, $start, $end = null, $event_id = null, $limit = null)
|
||||
{
|
||||
$object = $event['_formatobj'];
|
||||
if (!$object) {
|
||||
$rec = $this->storage->get_object($event['id']);
|
||||
$rec = $this->storage->get_object($event['uid'] ?: $event['id']);
|
||||
$object = $rec['_formatobj'];
|
||||
}
|
||||
|
||||
if (!is_object($object))
|
||||
return array();
|
||||
|
||||
|
@ -658,6 +674,20 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
return array($this->events[$event_id]);
|
||||
}
|
||||
|
||||
// Check first occurrence, it might have been moved
|
||||
if ($first = $exdata[$event['start']->format('Ymd')]) {
|
||||
// return it only if not already in the result, but in the requested period
|
||||
if (!($event['start'] <= $end && $event['end'] >= $start)
|
||||
&& ($first['start'] <= $end && $first['end'] >= $start)
|
||||
) {
|
||||
$events[] = $first;
|
||||
}
|
||||
}
|
||||
|
||||
if ($limit && count($events) >= $limit) {
|
||||
return $events;
|
||||
}
|
||||
|
||||
// use libkolab to compute recurring events
|
||||
$recurrence = new kolab_date_recurrence($object);
|
||||
|
||||
|
@ -702,6 +732,10 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
$this->events[$rec_id] = $rec_event;
|
||||
break;
|
||||
}
|
||||
|
||||
if ($limit && count($events) >= $limit) {
|
||||
return $events;
|
||||
}
|
||||
}
|
||||
else if ($next_event['start'] > $end) // stop loop if out of range
|
||||
break;
|
||||
|
@ -721,6 +755,9 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
{
|
||||
$record['calendar'] = $this->id;
|
||||
|
||||
// remove (possibly outdated) cached parameters
|
||||
unset($record['_folder_id'], $record['className']);
|
||||
|
||||
if ($links && !array_key_exists('links', $record)) {
|
||||
$record['links'] = $this->get_links($record['uid']);
|
||||
}
|
||||
|
@ -800,18 +837,23 @@ class kolab_calendar extends kolab_storage_folder_api
|
|||
$event['comment'] = $old['comment'];
|
||||
}
|
||||
|
||||
// remove some internal properties which should not be cached
|
||||
$cleanup_fn = function(&$event) {
|
||||
unset($event['_savemode'], $event['_fromcalendar'], $event['_identity'], $event['_folder_id'],
|
||||
$event['calendar'], $event['className'], $event['recurrence_id'],
|
||||
$event['attachments'], $event['deleted_attachments']);
|
||||
};
|
||||
|
||||
$cleanup_fn($event);
|
||||
|
||||
// clean up exception data
|
||||
if (is_array($event['exceptions'])) {
|
||||
array_walk($event['exceptions'], function(&$exception) {
|
||||
unset($exception['_mailbox'], $exception['_msguid'], $exception['_formatobj'], $exception['_attachments'],
|
||||
$event['attachments'], $event['deleted_attachments'], $event['recurrence_id']);
|
||||
array_walk($event['exceptions'], function(&$exception) use ($cleanup_fn) {
|
||||
unset($exception['_mailbox'], $exception['_msguid'], $exception['_formatobj']);
|
||||
$cleanup_fn($exception);
|
||||
});
|
||||
}
|
||||
|
||||
// remove some internal properties which should not be saved
|
||||
unset($event['_savemode'], $event['_fromcalendar'], $event['_identity'], $event['_folder_id'],
|
||||
$event['recurrence_id'], $event['attachments'], $event['deleted_attachments'], $event['className']);
|
||||
|
||||
// copy meta data (starting with _) from old object
|
||||
foreach ((array)$old as $key => $val) {
|
||||
if (!isset($event[$key]) && $key[0] == '_')
|
||||
|
|
|
@ -91,6 +91,27 @@ class kolab_driver extends calendar_driver
|
|||
|
||||
$this->calendars = array();
|
||||
foreach ($folders as $folder) {
|
||||
$calendar = $this->_to_calendar($folder);
|
||||
if ($calendar->ready) {
|
||||
$this->calendars[$calendar->id] = $calendar;
|
||||
if ($calendar->editable) {
|
||||
$this->has_writeable = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->calendars;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert kolab_storage_folder into kolab_calendar
|
||||
*/
|
||||
private function _to_calendar($folder)
|
||||
{
|
||||
if ($folder instanceof kolab_calendar) {
|
||||
return $folder;
|
||||
}
|
||||
|
||||
if ($folder instanceof kolab_storage_folder_user) {
|
||||
$calendar = new kolab_user_calendar($folder, $this->cal);
|
||||
$calendar->subscriptions = count($folder->children) > 0;
|
||||
|
@ -99,14 +120,7 @@ class kolab_driver extends calendar_driver
|
|||
$calendar = new kolab_calendar($folder->name, $this->cal);
|
||||
}
|
||||
|
||||
if ($calendar->ready) {
|
||||
$this->calendars[$calendar->id] = $calendar;
|
||||
if ($calendar->editable)
|
||||
$this->has_writeable = true;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->calendars;
|
||||
return $calendar;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -137,9 +151,9 @@ class kolab_driver extends calendar_driver
|
|||
if (!is_null($tree))
|
||||
$folders = kolab_storage::folder_hierarchy($folders, $tree);
|
||||
|
||||
$parents = array_keys($this->calendars);
|
||||
|
||||
foreach ($folders as $id => $cal) {
|
||||
$fullname = $cal->get_name();
|
||||
$listname = $cal->get_foldername();
|
||||
$imap_path = explode($delim, $cal->name);
|
||||
|
||||
// find parent
|
||||
|
@ -147,73 +161,61 @@ class kolab_driver extends calendar_driver
|
|||
array_pop($imap_path);
|
||||
$parent_id = kolab_storage::folder_id(join($delim, $imap_path));
|
||||
}
|
||||
while (count($imap_path) > 1 && !$this->calendars[$parent_id]);
|
||||
while (count($imap_path) > 1 && !in_array($parent_id, $parents));
|
||||
|
||||
// restore "real" parent ID
|
||||
if ($parent_id && !$this->calendars[$parent_id]) {
|
||||
if ($parent_id && !in_array($parent_id, $parents)) {
|
||||
$parent_id = kolab_storage::folder_id($cal->get_parent());
|
||||
}
|
||||
|
||||
// turn a kolab_storage_folder object into a kolab_calendar
|
||||
if ($cal instanceof kolab_storage_folder) {
|
||||
$cal = new kolab_calendar($cal->name, $this->cal);
|
||||
$this->calendars[$cal->id] = $cal;
|
||||
}
|
||||
$parents[] = $cal->id;
|
||||
|
||||
// special handling for user or virtual folders
|
||||
if ($cal instanceof kolab_storage_folder_user) {
|
||||
if ($cal->virtual) {
|
||||
$calendars[$cal->id] = array(
|
||||
'id' => $cal->id,
|
||||
'name' => $fullname,
|
||||
'listname' => $listname,
|
||||
'editname' => $cal->get_foldername(),
|
||||
'color' => $cal->get_color(),
|
||||
'active' => $cal->is_active(),
|
||||
'title' => $cal->get_owner(),
|
||||
'owner' => $cal->get_owner(),
|
||||
'history' => false,
|
||||
'virtual' => false,
|
||||
'editable' => false,
|
||||
'group' => 'other',
|
||||
'class' => 'user',
|
||||
'removable' => true,
|
||||
);
|
||||
}
|
||||
else if ($cal->virtual) {
|
||||
$calendars[$cal->id] = array(
|
||||
'id' => $cal->id,
|
||||
'name' => $fullname,
|
||||
'listname' => $listname,
|
||||
'name' => $cal->get_name(),
|
||||
'listname' => $cal->get_foldername(),
|
||||
'editname' => $cal->get_foldername(),
|
||||
'virtual' => true,
|
||||
'editable' => false,
|
||||
'group' => $cal->get_namespace(),
|
||||
'class' => 'folder',
|
||||
);
|
||||
}
|
||||
else {
|
||||
// additional folders may come from kolab_storage::folder_hierarchy() above
|
||||
// make sure we deal with kolab_calendar instances
|
||||
$cal = $this->_to_calendar($cal);
|
||||
$this->calendars[$cal->id] = $cal;
|
||||
|
||||
$is_user = ($cal instanceof kolab_user_calendar);
|
||||
|
||||
$calendars[$cal->id] = array(
|
||||
'id' => $cal->id,
|
||||
'name' => $fullname,
|
||||
'listname' => $listname,
|
||||
'name' => $cal->get_name(),
|
||||
'listname' => $cal->get_foldername(),
|
||||
'editname' => $cal->get_foldername(),
|
||||
'title' => $cal->get_title(),
|
||||
'color' => $cal->get_color(),
|
||||
'editable' => $cal->editable,
|
||||
'group' => $is_user ? 'other user' : $cal->get_namespace(),
|
||||
'active' => $cal->is_active(),
|
||||
'owner' => $cal->get_owner(),
|
||||
'removable' => !$cal->default,
|
||||
);
|
||||
|
||||
if (!$is_user) {
|
||||
$calendars[$cal->id] += array(
|
||||
'default' => $cal->default,
|
||||
'rights' => $cal->rights,
|
||||
'showalarms' => $cal->alarms,
|
||||
'history' => !empty($this->bonnie_api),
|
||||
'group' => $cal->get_namespace(),
|
||||
'default' => $cal->default,
|
||||
'active' => $cal->is_active(),
|
||||
'owner' => $cal->get_owner(),
|
||||
'children' => true, // TODO: determine if that folder indeed has child folders
|
||||
'parent' => $parent_id,
|
||||
'subtype' => $cal->subtype,
|
||||
'caldavurl' => $cal->get_caldav_url(),
|
||||
'removable' => !$cal->default,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ($cal->subscriptions) {
|
||||
$calendars[$cal->id]['subscribed'] = $cal->is_subscribed();
|
||||
|
@ -221,10 +223,9 @@ class kolab_driver extends calendar_driver
|
|||
}
|
||||
|
||||
// list virtual calendars showing invitations
|
||||
if ($this->rc->config->get('kolab_invitation_calendars')) {
|
||||
if ($this->rc->config->get('kolab_invitation_calendars') && !($filter & self::FILTER_INSERTABLE)) {
|
||||
foreach (array(self::INVITATIONS_CALENDAR_PENDING, self::INVITATIONS_CALENDAR_DECLINED) as $id) {
|
||||
$cal = new kolab_invitation_calendar($id, $this->cal);
|
||||
$this->calendars[$cal->id] = $cal;
|
||||
if (!($filter & self::FILTER_ACTIVE) || $cal->is_active()) {
|
||||
$calendars[$id] = array(
|
||||
'id' => $cal->id,
|
||||
|
@ -256,7 +257,7 @@ class kolab_driver extends calendar_driver
|
|||
}
|
||||
|
||||
// append the virtual birthdays calendar
|
||||
if ($this->rc->config->get('calendar_contact_birthdays', false)) {
|
||||
if ($this->rc->config->get('calendar_contact_birthdays', false) && !($filter & self::FILTER_INSERTABLE)) {
|
||||
$id = self::BIRTHDAY_CALENDAR_ID;
|
||||
$prefs = $this->rc->config->get('kolab_calendars', array()); // read local prefs
|
||||
if (!($filter & self::FILTER_ACTIVE) || $prefs[$id]['active']) {
|
||||
|
@ -312,7 +313,7 @@ class kolab_driver extends calendar_driver
|
|||
if (($filter & self::FILTER_WRITEABLE) && !$cal->editable) {
|
||||
continue;
|
||||
}
|
||||
if (($filter & self::FILTER_INSERTABLE) && !$cal->insert) {
|
||||
if (($filter & self::FILTER_INSERTABLE) && !$cal->editable) {
|
||||
continue;
|
||||
}
|
||||
if (($filter & self::FILTER_ACTIVE) && !$cal->is_active()) {
|
||||
|
@ -337,11 +338,11 @@ class kolab_driver extends calendar_driver
|
|||
return $calendars;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the kolab_calendar instance for the given calendar ID
|
||||
*
|
||||
* @param string Calendar identifier (encoded imap folder name)
|
||||
*
|
||||
* @return object kolab_calendar Object nor null if calendar doesn't exist
|
||||
*/
|
||||
public function get_calendar($id)
|
||||
|
@ -351,9 +352,10 @@ class kolab_driver extends calendar_driver
|
|||
// create calendar object if necesary
|
||||
if (!$this->calendars[$id]) {
|
||||
if (in_array($id, array(self::INVITATIONS_CALENDAR_PENDING, self::INVITATIONS_CALENDAR_DECLINED))) {
|
||||
$this->calendars[$id] = new kolab_invitation_calendar($id, $this->cal);
|
||||
return new kolab_invitation_calendar($id, $this->cal);
|
||||
}
|
||||
else if ($id !== self::BIRTHDAY_CALENDAR_ID) {
|
||||
// for unsubscribed calendar folders
|
||||
if ($id !== self::BIRTHDAY_CALENDAR_ID) {
|
||||
$calendar = kolab_calendar::factory($id, $this->cal);
|
||||
if ($calendar->ready) {
|
||||
$this->calendars[$calendar->id] = $calendar;
|
||||
|
@ -370,6 +372,7 @@ class kolab_driver extends calendar_driver
|
|||
* @param array Hash array with calendar properties
|
||||
* name: Calendar name
|
||||
* color: The color of the calendar
|
||||
*
|
||||
* @return mixed ID of the calendar on success, False on error
|
||||
*/
|
||||
public function create_calendar($prop)
|
||||
|
@ -377,6 +380,7 @@ class kolab_driver extends calendar_driver
|
|||
$prop['type'] = 'event';
|
||||
$prop['active'] = true;
|
||||
$prop['subscribed'] = true;
|
||||
|
||||
$folder = kolab_storage::folder_update($prop);
|
||||
|
||||
if ($folder === false) {
|
||||
|
@ -780,13 +784,18 @@ class kolab_driver extends calendar_driver
|
|||
$savemode = $event['_savemode'];
|
||||
$decline = $event['_decline'];
|
||||
|
||||
if (!$force) {
|
||||
unset($event['attendees']);
|
||||
$this->rc->session->remove('calendar_event_undo');
|
||||
$this->rc->session->remove('calendar_restore_event_data');
|
||||
$sess_data = $event;
|
||||
}
|
||||
|
||||
if (($storage = $this->get_calendar($event['calendar'])) && ($event = $storage->get_event($event['id']))) {
|
||||
$event['_savemode'] = $savemode;
|
||||
$savemode = 'all';
|
||||
$master = $event;
|
||||
|
||||
$this->rc->session->remove('calendar_restore_event_data');
|
||||
|
||||
// read master if deleting a recurring event
|
||||
if ($event['recurrence'] || $event['recurrence_id'] || $event['isexception']) {
|
||||
$master = $storage->get_event($event['uid']);
|
||||
|
@ -817,23 +826,8 @@ class kolab_driver extends calendar_driver
|
|||
case 'current':
|
||||
$_SESSION['calendar_restore_event_data'] = $master;
|
||||
|
||||
// removing the first instance => just move to next occurence
|
||||
if ($master['recurrence'] && $event['_instance'] == libcalendaring::recurrence_instance_identifier($master)) {
|
||||
$recurring = reset($storage->get_recurring_events($event, $event['start'], null, $event['id'].'-1'));
|
||||
|
||||
// no future instances found: delete the master event (bug #1677)
|
||||
if (!$recurring['start']) {
|
||||
$success = $storage->delete_event($master, $force);
|
||||
break;
|
||||
}
|
||||
|
||||
$master['start'] = $recurring['start'];
|
||||
$master['end'] = $recurring['end'];
|
||||
if ($master['recurrence']['COUNT'])
|
||||
$master['recurrence']['COUNT']--;
|
||||
}
|
||||
// remove the matching RDATE entry
|
||||
else if ($master['recurrence']['RDATE']) {
|
||||
if ($master['recurrence']['RDATE']) {
|
||||
foreach ($master['recurrence']['RDATE'] as $j => $rdate) {
|
||||
if ($rdate->format('Ymd') == $event['start']->format('Ymd')) {
|
||||
unset($master['recurrence']['RDATE'][$j]);
|
||||
|
@ -841,9 +835,10 @@ class kolab_driver extends calendar_driver
|
|||
}
|
||||
}
|
||||
}
|
||||
else { // add exception to master event
|
||||
|
||||
// add exception to master event
|
||||
$master['recurrence']['EXDATE'][] = $event['start'];
|
||||
}
|
||||
|
||||
$success = $storage->update_event($master);
|
||||
break;
|
||||
|
||||
|
@ -901,8 +896,18 @@ class kolab_driver extends calendar_driver
|
|||
}
|
||||
}
|
||||
|
||||
if ($success && !$force) {
|
||||
if ($master['_folder_id'])
|
||||
$sess_data['_folder_id'] = $master['_folder_id'];
|
||||
$_SESSION['calendar_event_undo'] = array('ts' => time(), 'data' => $sess_data);
|
||||
}
|
||||
|
||||
if ($success && $this->freebusy_trigger)
|
||||
$this->rc->output->command('plugin.ping_url', array('action' => 'calendar/push-freebusy', 'source' => $storage->id));
|
||||
$this->rc->output->command('plugin.ping_url', array(
|
||||
'action' => 'calendar/push-freebusy',
|
||||
// _folder_id may be set by invitations calendar
|
||||
'source' => $master['_folder_id'] ?: $storage->id,
|
||||
));
|
||||
|
||||
return $success ? $ret : false;
|
||||
}
|
||||
|
@ -912,18 +917,24 @@ class kolab_driver extends calendar_driver
|
|||
*
|
||||
* @param array Hash array with event properties:
|
||||
* id: Event identifier
|
||||
* calendar: Event calendar
|
||||
*
|
||||
* @return boolean True on success, False on error
|
||||
*/
|
||||
public function restore_event($event)
|
||||
{
|
||||
if ($storage = $this->get_calendar($event['calendar'])) {
|
||||
if (!empty($_SESSION['calendar_restore_event_data']))
|
||||
$success = $storage->update_event($_SESSION['calendar_restore_event_data']);
|
||||
$success = $storage->update_event($event = $_SESSION['calendar_restore_event_data']);
|
||||
else
|
||||
$success = $storage->restore_event($event);
|
||||
|
||||
if ($success && $this->freebusy_trigger)
|
||||
$this->rc->output->command('plugin.ping_url', array('action' => 'calendar/push-freebusy', 'source' => $storage->id));
|
||||
$this->rc->output->command('plugin.ping_url', array(
|
||||
'action' => 'calendar/push-freebusy',
|
||||
// _folder_id may be set by invitations calendar
|
||||
'source' => $event['_folder_id'] ?: $storage->id,
|
||||
));
|
||||
|
||||
return $success;
|
||||
}
|
||||
|
@ -982,6 +993,15 @@ class kolab_driver extends calendar_driver
|
|||
// force 'current' mode for single occurrences stored as exception
|
||||
else if (!$old['recurrence'] && !$old['recurrence_id'] && $old['isexception'])
|
||||
$savemode = 'current';
|
||||
|
||||
// Stick to the master timezone for all occurrences (Bifrost#T104637)
|
||||
$master_tz = $master['start']->getTimezone();
|
||||
$event_tz = $event['start']->getTimezone();
|
||||
|
||||
if ($master_tz->getName() != $event_tz->getName()) {
|
||||
$event['start']->setTimezone($master_tz);
|
||||
$event['end']->setTimezone($master_tz);
|
||||
}
|
||||
}
|
||||
|
||||
// check if update affects scheduling and update attendee status accordingly
|
||||
|
@ -2325,7 +2345,14 @@ class kolab_driver extends calendar_driver
|
|||
if (in_array($calendar['id'], array(self::BIRTHDAY_CALENDAR_ID, self::INVITATIONS_CALENDAR_PENDING, self::INVITATIONS_CALENDAR_DECLINED))) {
|
||||
if ($calendar['id'] != self::BIRTHDAY_CALENDAR_ID)
|
||||
unset($formfields['showalarms']);
|
||||
return parent::calendar_form($action, $calendar, $formfields);
|
||||
|
||||
// General tab
|
||||
$form['props'] = array(
|
||||
'name' => $this->rc->gettext('properties'),
|
||||
'fields' => $formfields,
|
||||
);
|
||||
|
||||
return kolab_utils::folder_form($form, '', 'calendar');
|
||||
}
|
||||
|
||||
$this->_read_calendars();
|
||||
|
@ -2359,6 +2386,7 @@ class kolab_driver extends calendar_driver
|
|||
// General tab
|
||||
$form['props'] = array(
|
||||
'name' => $this->rc->gettext('properties'),
|
||||
'fields' => array(),
|
||||
);
|
||||
|
||||
// Disable folder name input
|
||||
|
@ -2369,12 +2397,7 @@ class kolab_driver extends calendar_driver
|
|||
}
|
||||
|
||||
// calendar name (default field)
|
||||
$form['props']['fieldsets']['location'] = array(
|
||||
'name' => $this->rc->gettext('location'),
|
||||
'content' => array(
|
||||
'name' => $formfields['name']
|
||||
),
|
||||
);
|
||||
$form['props']['fields']['location'] = $formfields['name'];
|
||||
|
||||
if (!empty($options) && ($options['norename'] || $options['protected'])) {
|
||||
// prevent user from moving folder
|
||||
|
@ -2382,7 +2405,7 @@ class kolab_driver extends calendar_driver
|
|||
}
|
||||
else {
|
||||
$select = kolab_storage::folder_selector('event', array('name' => 'parent', 'id' => 'calendar-parent'), $folder);
|
||||
$form['props']['fieldsets']['location']['content']['path'] = array(
|
||||
$form['props']['fields']['path'] = array(
|
||||
'id' => 'calendar-parent',
|
||||
'label' => $this->cal->gettext('parentcalendar'),
|
||||
'value' => $select->show(strlen($folder) ? $path_imap : ''),
|
||||
|
@ -2390,138 +2413,10 @@ class kolab_driver extends calendar_driver
|
|||
}
|
||||
|
||||
// calendar color (default field)
|
||||
$form['props']['fieldsets']['settings'] = array(
|
||||
'name' => $this->rc->gettext('settings'),
|
||||
'content' => array(
|
||||
'color' => $formfields['color'],
|
||||
'showalarms' => $formfields['showalarms'],
|
||||
),
|
||||
);
|
||||
$form['props']['fields']['color'] = $formfields['color'];
|
||||
$form['props']['fields']['alarms'] = $formfields['showalarms'];
|
||||
|
||||
|
||||
if ($action != 'form-new') {
|
||||
$form['sharing'] = array(
|
||||
'name' => rcube::Q($this->cal->gettext('tabsharing')),
|
||||
'content' => html::tag('iframe', array(
|
||||
'src' => $this->cal->rc->url(array('_action' => 'calendar-acl', 'id' => $calendar['id'], 'framed' => 1)),
|
||||
'width' => '100%',
|
||||
'height' => 350,
|
||||
'border' => 0,
|
||||
'style' => 'border:0'),
|
||||
''),
|
||||
);
|
||||
}
|
||||
|
||||
$this->form_html = '';
|
||||
if (is_array($hidden_fields)) {
|
||||
foreach ($hidden_fields as $field) {
|
||||
$hiddenfield = new html_hiddenfield($field);
|
||||
$this->form_html .= $hiddenfield->show() . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Create form output
|
||||
foreach ($form as $tab) {
|
||||
if (!empty($tab['fieldsets']) && is_array($tab['fieldsets'])) {
|
||||
$content = '';
|
||||
foreach ($tab['fieldsets'] as $fieldset) {
|
||||
$subcontent = $this->get_form_part($fieldset);
|
||||
if ($subcontent) {
|
||||
$content .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($fieldset['name'])) . $subcontent) ."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$content = $this->get_form_part($tab);
|
||||
}
|
||||
|
||||
if ($content) {
|
||||
$this->form_html .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($tab['name'])) . $content) ."\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Parse form template for skin-dependent stuff
|
||||
$this->rc->output->add_handler('calendarform', array($this, 'calendar_form_html'));
|
||||
return $this->rc->output->parse('calendar.kolabform', false, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for template object
|
||||
*/
|
||||
public function calendar_form_html()
|
||||
{
|
||||
return $this->form_html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function used in calendar_form_content(). Creates a part of the form.
|
||||
*/
|
||||
private function get_form_part($form)
|
||||
{
|
||||
$content = '';
|
||||
|
||||
if (is_array($form['content']) && !empty($form['content'])) {
|
||||
$table = new html_table(array('cols' => 2));
|
||||
foreach ($form['content'] as $col => $colprop) {
|
||||
$label = !empty($colprop['label']) ? $colprop['label'] : $this->cal->gettext($col);
|
||||
|
||||
$table->add('title', html::label($colprop['id'], rcube::Q($label)));
|
||||
$table->add(null, $colprop['value']);
|
||||
}
|
||||
$content = $table->show();
|
||||
}
|
||||
else {
|
||||
$content = $form['content'];
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handler to render ACL form for a calendar folder
|
||||
*/
|
||||
public function calendar_acl()
|
||||
{
|
||||
$this->rc->output->add_handler('folderacl', array($this, 'calendar_acl_form'));
|
||||
$this->rc->output->send('calendar.kolabacl');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for ACL form template object
|
||||
*/
|
||||
public function calendar_acl_form()
|
||||
{
|
||||
$calid = rcube_utils::get_input_value('_id', rcube_utils::INPUT_GPC);
|
||||
if ($calid && ($cal = $this->get_calendar($calid))) {
|
||||
$folder = $cal->get_realname(); // UTF7
|
||||
$color = $cal->get_color();
|
||||
}
|
||||
else {
|
||||
$folder = '';
|
||||
$color = '';
|
||||
}
|
||||
|
||||
$storage = $this->rc->get_storage();
|
||||
$delim = $storage->get_hierarchy_delimiter();
|
||||
$form = array();
|
||||
|
||||
if (strlen($folder)) {
|
||||
$path_imap = explode($delim, $folder);
|
||||
array_pop($path_imap); // pop off name part
|
||||
$path_imap = implode($path_imap, $delim);
|
||||
|
||||
$options = $storage->folder_info($folder);
|
||||
|
||||
// Allow plugins to modify the form content (e.g. with ACL form)
|
||||
$plugin = $this->rc->plugins->exec_hook('calendar_form_kolab',
|
||||
array('form' => $form, 'options' => $options, 'name' => $folder));
|
||||
}
|
||||
|
||||
if (!$plugin['form']['sharing']['content'])
|
||||
$plugin['form']['sharing']['content'] = html::div('hint', $this->cal->gettext('aclnorights'));
|
||||
|
||||
return $plugin['form']['sharing']['content'];
|
||||
return kolab_utils::folder_form($form, $folder, 'calendar', $hidden_fields);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -176,16 +176,31 @@ class kolab_invitation_calendar
|
|||
$event = $this->cal->driver->get_event($id, calendar_driver::FILTER_WRITEABLE);
|
||||
|
||||
if (is_array($event)) {
|
||||
// add pointer to original calendar folder
|
||||
$event['_folder_id'] = $event['calendar'];
|
||||
$event = $this->_mod_event($event);
|
||||
$event = $this->_mod_event($event, $event['calendar']);
|
||||
}
|
||||
|
||||
return $event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create instances of a recurring event
|
||||
*
|
||||
* @see kolab_calendar::get_recurring_events()
|
||||
*/
|
||||
public function get_recurring_events($event, $start, $end = null, $event_id = null, $limit = null)
|
||||
{
|
||||
// forward call to the actual storage folder
|
||||
if ($event['_folder_id']) {
|
||||
$cal = $this->cal->driver->get_calendar($event['_folder_id']);
|
||||
if ($cal && $cal->ready) {
|
||||
return $cal->get_recurring_events($event, $start, $end, $event_id, $limit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get attachment body
|
||||
*
|
||||
* @see calendar_driver::get_attachment_body()
|
||||
*/
|
||||
public function get_attachment_body($id, $event)
|
||||
|
@ -217,6 +232,7 @@ class kolab_invitation_calendar
|
|||
* @param string Search query (optional)
|
||||
* @param boolean Include virtual events (optional)
|
||||
* @param array Additional parameters to query storage
|
||||
*
|
||||
* @return array A list of event records
|
||||
*/
|
||||
public function list_events($start, $end, $search = null, $virtual = 1, $query = array())
|
||||
|
@ -234,7 +250,7 @@ class kolab_invitation_calendar
|
|||
$events = array();
|
||||
foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) {
|
||||
$cal = $this->_get_calendar($foldername);
|
||||
if ($cal->get_namespace() == 'other')
|
||||
if (!$cal || $cal->get_namespace() == 'other')
|
||||
continue;
|
||||
|
||||
foreach ($cal->list_events($start, $end, $search, 1, $query, array(array($subquery, 'OR'))) as $event) {
|
||||
|
@ -251,7 +267,7 @@ class kolab_invitation_calendar
|
|||
}
|
||||
|
||||
if ($match) {
|
||||
$events[$event['id'] ?: $event['uid']] = $this->_mod_event($event);
|
||||
$events[$event['id'] ?: $event['uid']] = $this->_mod_event($event, $cal->id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -263,12 +279,15 @@ class kolab_invitation_calendar
|
|||
}
|
||||
|
||||
/**
|
||||
* Get number of events in the given calendar
|
||||
*
|
||||
* @param integer Date range start (unix timestamp)
|
||||
* @param integer Date range end (unix timestamp)
|
||||
* @param array Additional query to filter events
|
||||
*
|
||||
* @return integer Count
|
||||
*/
|
||||
public function count_events($start, $end = null)
|
||||
public function count_events($start, $end = null, $filter = null)
|
||||
{
|
||||
// get email addresses of the current user
|
||||
$user_emails = $this->cal->get_user_emails();
|
||||
|
@ -288,7 +307,7 @@ class kolab_invitation_calendar
|
|||
$count = 0;
|
||||
foreach (kolab_storage::list_folders('', '*', 'event', null) as $foldername) {
|
||||
$cal = $this->_get_calendar($foldername);
|
||||
if ($cal->get_namespace() == 'other')
|
||||
if (!$cal || $cal->get_namespace() == 'other')
|
||||
continue;
|
||||
|
||||
$count += $cal->count_events($start, $end, $filter);
|
||||
|
@ -309,7 +328,7 @@ class kolab_invitation_calendar
|
|||
/**
|
||||
* Helper method to modify some event properties
|
||||
*/
|
||||
private function _mod_event($event)
|
||||
private function _mod_event($event, $calendar_id = null)
|
||||
{
|
||||
// set classes according to PARTSTAT
|
||||
$event = kolab_driver::add_partstat_class($event, $this->partstats);
|
||||
|
@ -318,15 +337,18 @@ class kolab_invitation_calendar
|
|||
$event['calendar'] = $this->id;
|
||||
}
|
||||
|
||||
// add pointer to original calendar folder
|
||||
if ($calendar_id) {
|
||||
$event['_folder_id'] = $calendar_id;
|
||||
}
|
||||
|
||||
return $event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new event record
|
||||
*
|
||||
* @see calendar_driver::new_event()
|
||||
*
|
||||
* @return mixed The created record ID on success, False on error
|
||||
* @see kolab_calendar::insert_event()
|
||||
*/
|
||||
public function insert_event($event)
|
||||
{
|
||||
|
@ -336,8 +358,7 @@ class kolab_invitation_calendar
|
|||
/**
|
||||
* Update a specific event record
|
||||
*
|
||||
* @see calendar_driver::new_event()
|
||||
* @return boolean True on success, False on error
|
||||
* @see kolab_calendar::update_event()
|
||||
*/
|
||||
public function update_event($event, $exception_id = null)
|
||||
{
|
||||
|
@ -355,22 +376,36 @@ class kolab_invitation_calendar
|
|||
/**
|
||||
* Delete an event record
|
||||
*
|
||||
* @see calendar_driver::remove_event()
|
||||
* @return boolean True on success, False on error
|
||||
* @see kolab_calendar::delete_event()
|
||||
*/
|
||||
public function delete_event($event, $force = true)
|
||||
{
|
||||
// forward call to the actual storage folder
|
||||
if ($event['_folder_id']) {
|
||||
$cal = $this->cal->driver->get_calendar($event['_folder_id']);
|
||||
if ($cal && $cal->ready) {
|
||||
return $cal->delete_event($event, $force);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore deleted event record
|
||||
*
|
||||
* @see calendar_driver::undelete_event()
|
||||
* @return boolean True on success, False on error
|
||||
* @see kolab_calendar::restore_event()
|
||||
*/
|
||||
public function restore_event($event)
|
||||
{
|
||||
// forward call to the actual storage folder
|
||||
if ($event['_folder_id']) {
|
||||
$cal = $this->cal->driver->get_calendar($event['_folder_id']);
|
||||
if ($cal && $cal->ready) {
|
||||
return $cal->restore_event($event);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ class kolab_user_calendar extends kolab_calendar
|
|||
public function __construct($user_or_folder, $calendar)
|
||||
{
|
||||
$this->cal = $calendar;
|
||||
$this->imap = $calendar->rc->get_storage();
|
||||
|
||||
// full user record is provided
|
||||
if (is_array($user_or_folder)) {
|
||||
|
@ -259,10 +260,12 @@ class kolab_user_calendar extends kolab_calendar
|
|||
}
|
||||
|
||||
/**
|
||||
* Get number of events in the given calendar
|
||||
*
|
||||
* @param integer Date range start (unix timestamp)
|
||||
* @param integer Date range end (unix timestamp)
|
||||
* @param array Additional query to filter events
|
||||
*
|
||||
* @return integer Count
|
||||
*/
|
||||
public function count_events($start, $end = null, $filter_query = null)
|
||||
|
|
|
@ -116,16 +116,20 @@ class resources_driver_ldap extends resources_driver
|
|||
{
|
||||
$rec['ID'] = rcube_ldap::dn_decode($rec['ID']);
|
||||
|
||||
if (is_array($rec['attributes']) && $rec['attributes'][0]) {
|
||||
$attributes = array();
|
||||
|
||||
foreach ($rec['attributes'] as $sattr) {
|
||||
foreach ((array) $rec['attributes'] as $sattr) {
|
||||
$sattr = trim($sattr);
|
||||
if ($sattr && $sattr[0] === '{') {
|
||||
$attr = @json_decode($sattr, true);
|
||||
$attributes += $attr;
|
||||
}
|
||||
else if ($sattr && empty($rec['description'])) {
|
||||
$rec['description'] = $sattr;
|
||||
}
|
||||
}
|
||||
|
||||
$rec['attributes'] = $attributes;
|
||||
}
|
||||
|
||||
// force $rec['members'] to be an array
|
||||
if (!empty($rec['members']) && !is_array($rec['members'])) {
|
||||
|
|
|
@ -56,10 +56,11 @@ class calendar_ui
|
|||
), 'taskbar');
|
||||
|
||||
// load basic client script
|
||||
if ($this->rc->action != 'print') {
|
||||
$this->cal->include_script('calendar_base.js');
|
||||
}
|
||||
|
||||
$skin_path = $this->cal->local_skin_path();
|
||||
$this->cal->include_stylesheet($skin_path . '/calendar.css');
|
||||
$this->addCSS();
|
||||
|
||||
$this->ready = true;
|
||||
}
|
||||
|
@ -80,9 +81,6 @@ class calendar_ui
|
|||
$this->cal->register_handler('plugin.sensitivity_select', array($this, 'sensitivity_select'));
|
||||
$this->cal->register_handler('plugin.alarm_select', array($this, 'alarm_select'));
|
||||
$this->cal->register_handler('plugin.recurrence_form', array($this->cal->lib, 'recurrence_form'));
|
||||
$this->cal->register_handler('plugin.attachments_form', array($this, 'attachments_form'));
|
||||
$this->cal->register_handler('plugin.attachments_list', array($this, 'attachments_list'));
|
||||
$this->cal->register_handler('plugin.filedroparea', array($this, 'file_drop_area'));
|
||||
$this->cal->register_handler('plugin.attendees_list', array($this, 'attendees_list'));
|
||||
$this->cal->register_handler('plugin.attendees_form', array($this, 'attendees_form'));
|
||||
$this->cal->register_handler('plugin.resources_form', array($this, 'resources_form'));
|
||||
|
@ -95,11 +93,13 @@ class calendar_ui
|
|||
$this->cal->register_handler('plugin.edit_recurrence_sync', array($this, 'edit_recurrence_sync'));
|
||||
$this->cal->register_handler('plugin.edit_recurring_warning', array($this, 'recurring_event_warning'));
|
||||
$this->cal->register_handler('plugin.event_rsvp_buttons', array($this, 'event_rsvp_buttons'));
|
||||
$this->cal->register_handler('plugin.angenda_options', array($this, 'angenda_options'));
|
||||
$this->cal->register_handler('plugin.agenda_options', array($this, 'agenda_options'));
|
||||
$this->cal->register_handler('plugin.events_import_form', array($this, 'events_import_form'));
|
||||
$this->cal->register_handler('plugin.events_export_form', array($this, 'events_export_form'));
|
||||
$this->cal->register_handler('plugin.object_changelog_table', array('libkolab', 'object_changelog_table'));
|
||||
$this->cal->register_handler('plugin.searchform', array($this->rc->output, 'search_form')); // use generic method from rcube_template
|
||||
|
||||
kolab_attachments_handler::ui();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -108,65 +108,65 @@ class calendar_ui
|
|||
public function addCSS()
|
||||
{
|
||||
$skin_path = $this->cal->local_skin_path();
|
||||
|
||||
if ($this->rc->task == 'calendar' && (!$this->rc->action || in_array($this->rc->action, array('index', 'print')))) {
|
||||
// Include fullCalendar style before skin file for simpler style overriding
|
||||
$this->cal->include_stylesheet($skin_path . '/fullcalendar.css');
|
||||
}
|
||||
|
||||
$this->cal->include_stylesheet($skin_path . '/calendar.css');
|
||||
|
||||
if ($this->rc->task == 'calendar' && $this->rc->action == 'print') {
|
||||
$this->cal->include_stylesheet($skin_path . '/print.css');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds JS files to the page header
|
||||
*/
|
||||
public function addJS()
|
||||
{
|
||||
$this->cal->include_script('calendar_ui.js');
|
||||
$this->cal->include_script('lib/js/moment.js');
|
||||
$this->cal->include_script('lib/js/fullcalendar.js');
|
||||
$this->rc->output->include_script('treelist.js');
|
||||
|
||||
// include kolab folderlist widget if available
|
||||
if (in_array('libkolab', $this->cal->api->loaded_plugins())) {
|
||||
$this->cal->api->include_script('libkolab/js/folderlist.js');
|
||||
$this->cal->api->include_script('libkolab/js/audittrail.js');
|
||||
if ($this->rc->task == 'calendar' && $this->rc->action == 'print') {
|
||||
$this->cal->include_script('print.js');
|
||||
}
|
||||
|
||||
else {
|
||||
$this->rc->output->include_script('treelist.js');
|
||||
$this->cal->api->include_script('libkolab/libkolab.js');
|
||||
$this->cal->include_script('calendar_ui.js');
|
||||
jqueryui::miniColors();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function calendar_css($attrib = array())
|
||||
{
|
||||
$mode = $this->rc->config->get('calendar_event_coloring', $this->cal->defaults['calendar_event_coloring']);
|
||||
$categories = $this->cal->driver->list_categories();
|
||||
$js_categories = array();
|
||||
$mode = $this->rc->config->get('calendar_event_coloring', $this->cal->defaults['calendar_event_coloring']);
|
||||
$css = "\n";
|
||||
|
||||
foreach ((array)$categories as $class => $color) {
|
||||
if (empty($color))
|
||||
continue;
|
||||
if (!empty($color)) {
|
||||
$js_categories[$class] = $color;
|
||||
|
||||
$color = ltrim($color, '#');
|
||||
$class = 'cat-' . asciiwords(strtolower($class), true);
|
||||
$css .= ".$class { color: #$color }\n";
|
||||
if ($mode > 0) {
|
||||
if ($mode == 2) {
|
||||
$css .= ".fc-event-$class .fc-event-bg {";
|
||||
$css .= " opacity: 0.9;";
|
||||
$css .= " filter: alpha(opacity=90);";
|
||||
}
|
||||
else {
|
||||
$css .= ".fc-event-$class.fc-event-skin, ";
|
||||
$css .= ".fc-event-$class .fc-event-skin, ";
|
||||
$css .= ".fc-event-$class .fc-event-inner {";
|
||||
}
|
||||
$css .= " background-color: #" . $color . ";";
|
||||
if ($mode % 2)
|
||||
$css .= " border-color: #$color;";
|
||||
$css .= "}\n";
|
||||
$css .= ".$class { color: #$color; }\n";
|
||||
}
|
||||
}
|
||||
|
||||
$this->rc->output->set_env('calendar_categories', $js_categories);
|
||||
|
||||
$calendars = $this->cal->driver->list_calendars();
|
||||
foreach ((array)$calendars as $id => $prop) {
|
||||
if (!$prop['color'])
|
||||
continue;
|
||||
$css .= $this->calendar_css_classes($id, $prop, $mode);
|
||||
if ($prop['color']) {
|
||||
$css .= $this->calendar_css_classes($id, $prop, $mode, $attrib);
|
||||
}
|
||||
}
|
||||
|
||||
return html::tag('style', array('type' => 'text/css'), $css);
|
||||
|
@ -175,36 +175,26 @@ class calendar_ui
|
|||
/**
|
||||
*
|
||||
*/
|
||||
public function calendar_css_classes($id, $prop, $mode)
|
||||
public function calendar_css_classes($id, $prop, $mode, $attrib = array())
|
||||
{
|
||||
$color = $prop['color'];
|
||||
$class = 'cal-' . asciiwords($id, true);
|
||||
$css .= "li .$class, #eventshow .$class { color: #$color; }\n";
|
||||
$color = $folder_color = $prop['color'];
|
||||
|
||||
if ($mode != 1) {
|
||||
if ($mode == 3) {
|
||||
$css .= ".fc-event-$class .fc-event-bg {";
|
||||
$css .= " opacity: 0.9;";
|
||||
$css .= " filter: alpha(opacity=90);";
|
||||
}
|
||||
else {
|
||||
$css .= ".fc-event-$class, ";
|
||||
$css .= ".fc-event-$class .fc-event-inner {";
|
||||
}
|
||||
if (!$prop['printmode'])
|
||||
$css .= " background-color: #$color;";
|
||||
if ($mode % 2 == 0)
|
||||
$css .= " border-color: #$color;";
|
||||
$css .= "}\n";
|
||||
// replace white with skin-defined color
|
||||
if (!empty($attrib['folder-fallback-color']) && preg_match('/^f+$/i', $folder_color)) {
|
||||
$folder_color = ltrim($attrib['folder-fallback-color'], '#');
|
||||
}
|
||||
|
||||
$class = 'cal-' . asciiwords($id, true);
|
||||
$css = str_replace('$class', $class, $attrib['folder-class']) ?: "li .$class";
|
||||
$css .= " { color: #$folder_color; }\n";
|
||||
|
||||
return $css . ".$class .handle { background-color: #$color; }\n";
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
function calendar_list($attrib = array())
|
||||
function calendar_list($attrib = array(), $js_only = false)
|
||||
{
|
||||
$html = '';
|
||||
$jsenv = array();
|
||||
|
@ -237,9 +227,14 @@ class calendar_ui
|
|||
);
|
||||
}
|
||||
|
||||
$this->rc->output->set_env('source', rcube_utils::get_input_value('source', rcube_utils::INPUT_GET));
|
||||
$this->rc->output->set_env('calendars', $jsenv);
|
||||
$this->rc->output->add_gui_object('calendarslist', $attrib['id']);
|
||||
|
||||
if ($js_only) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->rc->output->set_env('source', rcube_utils::get_input_value('source', rcube_utils::INPUT_GET));
|
||||
$this->rc->output->add_gui_object('calendarslist', $attrib['id'] ?: 'unknown');
|
||||
|
||||
return html::tag('ul', $attrib, $html, html::$common_attrib);
|
||||
}
|
||||
|
@ -311,9 +306,9 @@ class calendar_ui
|
|||
if (!$activeonly || $prop['active']) {
|
||||
$label_id = 'cl:' . $id;
|
||||
$content = html::div(join(' ', $classes),
|
||||
html::span(array('class' => 'calname', 'id' => $label_id, 'title' => $title), $prop['editname'] ? rcube::Q($prop['editname']) : $prop['listname']) .
|
||||
($prop['virtual'] ? '' :
|
||||
html::tag('input', array('type' => 'checkbox', 'name' => '_cal[]', 'value' => $id, 'checked' => $prop['active'], 'aria-labelledby' => $label_id), '') .
|
||||
html::a(array('class' => 'calname', 'id' => $label_id, 'title' => $title, 'href' => '#'), rcube::Q($prop['editname'] ?: $prop['listname']))
|
||||
. ($prop['virtual'] ? '' :
|
||||
html::tag('input', array('type' => 'checkbox', 'name' => '_cal[]', 'value' => $id, 'checked' => $prop['active'], 'aria-labelledby' => $label_id)) .
|
||||
html::span('actions',
|
||||
($prop['removable'] ? html::a(array('href' => '#', 'class' => 'remove', 'title' => $this->cal->gettext('removelist')), ' ') : '') .
|
||||
html::a(array('href' => '#', 'class' => 'quickview', 'title' => $this->cal->gettext('quickview'), 'role' => 'checkbox', 'aria-checked' => 'false'), '') .
|
||||
|
@ -328,29 +323,23 @@ class calendar_ui
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Render a HTML for agenda options form
|
||||
*/
|
||||
function angenda_options($attrib = array())
|
||||
function agenda_options($attrib = array())
|
||||
{
|
||||
$attrib += array('id' => 'agendaoptions');
|
||||
$attrib['style'] .= 'display:none';
|
||||
|
||||
$select_range = new html_select(array('name' => 'listrange', 'id' => 'agenda-listrange'));
|
||||
$select_range = new html_select(array('name' => 'listrange', 'id' => 'agenda-listrange', 'class' => 'form-control custom-select'));
|
||||
$select_range->add(1 . ' ' . preg_replace('/\(.+\)/', '', $this->cal->lib->gettext('days')), $days);
|
||||
foreach (array(2,5,7,14,30,60,90,180,365) as $days)
|
||||
$select_range->add($days . ' ' . preg_replace('/\(|\)/', '', $this->cal->lib->gettext('days')), $days);
|
||||
|
||||
$html .= html::label('agenda-listrange', $this->cal->gettext('listrange'));
|
||||
$html .= $select_range->show($this->rc->config->get('calendar_agenda_range', $this->cal->defaults['calendar_agenda_range']));
|
||||
|
||||
$select_sections = new html_select(array('name' => 'listsections', 'id' => 'agenda-listsections'));
|
||||
$select_sections->add('---', '');
|
||||
foreach (array('day' => 'libcalendaring.days', 'week' => 'libcalendaring.weeks', 'month' => 'libcalendaring.months', 'smart' => 'calendar.smartsections') as $val => $label)
|
||||
$select_sections->add(preg_replace('/\(|\)/', '', ucfirst($this->rc->gettext($label))), $val);
|
||||
|
||||
$html .= html::span('spacer', ' ');
|
||||
$html .= html::label('agenda-listsections', $this->cal->gettext('listsections'));
|
||||
$html .= $select_sections->show($this->rc->config->get('calendar_agenda_sections', $this->cal->defaults['calendar_agenda_sections']));
|
||||
$html = html::span('input-group',
|
||||
html::label(array('for' => 'agenda-listrange', 'class' => 'input-group-prepend'),
|
||||
html::span('input-group-text', $this->cal->gettext('listrange')))
|
||||
. $select_range->show($this->rc->config->get('calendar_agenda_range', $this->cal->defaults['calendar_agenda_range']))
|
||||
);
|
||||
|
||||
return html::div($attrib, $html);
|
||||
}
|
||||
|
@ -478,7 +467,7 @@ class calendar_ui
|
|||
*/
|
||||
function edit_attendees_notify($attrib = array())
|
||||
{
|
||||
$checkbox = new html_checkbox(array('name' => '_notify', 'id' => 'edit-attendees-donotify', 'value' => 1));
|
||||
$checkbox = new html_checkbox(array('name' => '_notify', 'id' => 'edit-attendees-donotify', 'value' => 1, 'class' => 'pretty-checkbox'));
|
||||
return html::div($attrib, html::label(null, $checkbox->show(1) . ' ' . $this->cal->gettext('sendnotifications')));
|
||||
}
|
||||
|
||||
|
@ -487,7 +476,7 @@ class calendar_ui
|
|||
*/
|
||||
function edit_recurrence_sync($attrib = array())
|
||||
{
|
||||
$checkbox = new html_checkbox(array('name' => '_start_sync', 'value' => 1));
|
||||
$checkbox = new html_checkbox(array('name' => '_start_sync', 'value' => 1, 'class' => 'pretty-checkbox'));
|
||||
return html::div($attrib, html::label(null, $checkbox->show(1) . ' ' . $this->cal->gettext('eventstartsync')));
|
||||
}
|
||||
|
||||
|
@ -504,7 +493,7 @@ class calendar_ui
|
|||
html::label(null, $radio->show('all', array('value' => 'all')) . $this->cal->gettext('allevents')) . ' ' .
|
||||
html::label(null, $radio->show('', array('value' => 'new')) . $this->cal->gettext('saveasnew'));
|
||||
|
||||
return html::div($attrib, html::div('message', html::span('ui-icon ui-icon-alert', '') . $this->cal->gettext('changerecurringeventwarning')) . html::div('savemode', $form));
|
||||
return html::div($attrib, html::div('message', $this->cal->gettext('changerecurringeventwarning')) . html::div('savemode', $form));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -524,8 +513,12 @@ class calendar_ui
|
|||
}
|
||||
|
||||
$input = new html_inputfield(array(
|
||||
'type' => 'file', 'name' => '_data', 'size' => $attrib['uploadfieldsize'],
|
||||
'accept' => $accept));
|
||||
'id' => 'importfile',
|
||||
'type' => 'file',
|
||||
'name' => '_data',
|
||||
'size' => $attrib['uploadfieldsize'],
|
||||
'accept' => $accept
|
||||
));
|
||||
|
||||
$select = new html_select(array('name' => '_range', 'id' => 'event-import-range'));
|
||||
$select->add(array(
|
||||
|
@ -538,28 +531,32 @@ class calendar_ui
|
|||
),
|
||||
array('1','2','3','6','12',0));
|
||||
|
||||
$html .= html::div('form-section',
|
||||
html::div(null, $input->show()) .
|
||||
html::div('hint', $this->rc->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize))))
|
||||
$html = html::div('form-section form-group row',
|
||||
html::label(array('class' => 'col-sm-4 col-form-label', 'for' => 'importfile'), rcube::Q($this->rc->gettext('importfromfile')))
|
||||
. html::div('col-sm-8', $input->show()
|
||||
. html::div('hint', $this->rc->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))))
|
||||
);
|
||||
|
||||
$html .= html::div('form-section',
|
||||
html::label('event-import-calendar', $this->cal->gettext('calendar')) .
|
||||
$this->calendar_select(array('name' => 'calendar', 'id' => 'event-import-calendar'))
|
||||
$html .= html::div('form-section form-group row',
|
||||
html::label(array('for' => 'event-import-calendar', 'class' => 'col-form-label col-sm-4'), $this->cal->gettext('calendar'))
|
||||
. html::div('col-sm-8', $this->calendar_select(array('name' => 'calendar', 'id' => 'event-import-calendar')))
|
||||
);
|
||||
|
||||
$html .= html::div('form-section',
|
||||
html::label('event-import-range', $this->cal->gettext('importrange')) .
|
||||
$select->show(1)
|
||||
$html .= html::div('form-section form-group row',
|
||||
html::label(array('for' => 'event-import-range', 'class' => 'col-form-label col-sm-4'), $this->cal->gettext('importrange'))
|
||||
. html::div('col-sm-8', $select->show(1))
|
||||
);
|
||||
|
||||
$this->rc->output->add_gui_object('importform', $attrib['id']);
|
||||
$this->rc->output->add_label('import');
|
||||
|
||||
return html::tag('form', array('action' => $this->rc->url(array('task' => 'calendar', 'action' => 'import_events')),
|
||||
'method' => "post", 'enctype' => 'multipart/form-data', 'id' => $attrib['id']),
|
||||
$html
|
||||
);
|
||||
return html::tag('p', null, $this->cal->gettext('importtext'))
|
||||
. html::tag('form', array(
|
||||
'action' => $this->rc->url(array('task' => 'calendar', 'action' => 'import_events')),
|
||||
'method' => 'post',
|
||||
'enctype' => 'multipart/form-data',
|
||||
'id' => $attrib['id']
|
||||
), $html);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -570,12 +567,11 @@ class calendar_ui
|
|||
if (!$attrib['id'])
|
||||
$attrib['id'] = 'rcmExportForm';
|
||||
|
||||
$html .= html::div('form-section',
|
||||
html::label('event-export-calendar', $this->cal->gettext('calendar')) .
|
||||
$this->calendar_select(array('name' => 'calendar', 'id' => 'event-export-calendar'))
|
||||
);
|
||||
$html = html::div('form-section form-group row',
|
||||
html::label(array('for' => 'event-export-calendar', 'class' => 'col-sm-4 col-form-label'), $this->cal->gettext('calendar'))
|
||||
. html::div('col-sm-8', $this->calendar_select(array('name' => 'calendar', 'id' => 'event-export-calendar', 'class' => 'form-control custom-select'))));
|
||||
|
||||
$select = new html_select(array('name' => 'range', 'id' => 'event-export-range'));
|
||||
$select = new html_select(array('name' => 'range', 'id' => 'event-export-range', 'class' => 'form-control custom-select rounded-right'));
|
||||
$select->add(array(
|
||||
$this->cal->gettext('all'),
|
||||
$this->cal->gettext('onemonthback'),
|
||||
|
@ -587,97 +583,54 @@ class calendar_ui
|
|||
),
|
||||
array(0,'1','2','3','6','12','custom'));
|
||||
|
||||
$startdate = new html_inputfield(array('name' => 'start', 'size' => 11, 'id' => 'event-export-startdate'));
|
||||
$startdate = new html_inputfield(array('name' => 'start', 'size' => 11, 'id' => 'event-export-startdate', 'style' => 'display:none'));
|
||||
|
||||
$html .= html::div('form-section',
|
||||
html::label('event-export-range', $this->cal->gettext('exportrange')) .
|
||||
$select->show(0) .
|
||||
html::span(array('style'=>'display:none'), $startdate->show())
|
||||
);
|
||||
$html .= html::div('form-section form-group row',
|
||||
html::label(array('for' => 'event-export-range', 'class' => 'col-sm-4 col-form-label'), $this->cal->gettext('exportrange'))
|
||||
. html::div('col-sm-8 input-group', $select->show(0) . $startdate->show()));
|
||||
|
||||
$checkbox = new html_checkbox(array('name' => 'attachments', 'id' => 'event-export-attachments', 'value' => 1));
|
||||
$html .= html::div('form-section',
|
||||
html::label('event-export-attachments', $this->cal->gettext('exportattachments')) .
|
||||
$checkbox->show(1)
|
||||
);
|
||||
$checkbox = new html_checkbox(array('name' => 'attachments', 'id' => 'event-export-attachments', 'value' => 1, 'class' => 'form-check-input pretty-checkbox'));
|
||||
$html .= html::div('form-section form-check row',
|
||||
html::label(array('for' => 'event-export-attachments', 'class' => 'col-sm-4 col-form-label'), $this->cal->gettext('exportattachments'))
|
||||
. html::div('col-sm-8', $checkbox->show(1)));
|
||||
|
||||
$this->rc->output->add_gui_object('exportform', $attrib['id']);
|
||||
|
||||
return html::tag('form', array('action' => $this->rc->url(array('task' => 'calendar', 'action' => 'export_events')),
|
||||
'method' => "post", 'id' => $attrib['id']),
|
||||
return html::tag('form', $attrib + array(
|
||||
'action' => $this->rc->url(array('task' => 'calendar', 'action' => 'export_events')),
|
||||
'method' => "post",
|
||||
'id' => $attrib['id']
|
||||
),
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the form for event attachments upload
|
||||
*/
|
||||
function attachments_form($attrib = array())
|
||||
{
|
||||
// add ID if not given
|
||||
if (!$attrib['id'])
|
||||
$attrib['id'] = 'rcmUploadForm';
|
||||
|
||||
// Get max filesize, enable upload progress bar
|
||||
$max_filesize = $this->rc->upload_init();
|
||||
|
||||
$button = new html_inputfield(array('type' => 'button'));
|
||||
$input = new html_inputfield(array(
|
||||
'type' => 'file', 'name' => '_attachments[]',
|
||||
'multiple' => 'multiple', 'size' => $attrib['attachmentfieldsize']));
|
||||
|
||||
return html::div($attrib,
|
||||
html::div(null, $input->show()) .
|
||||
html::div('buttons', $button->show($this->rc->gettext('upload'), array('class' => 'button mainaction',
|
||||
'onclick' => rcmail_output::JS_OBJECT_NAME . ".upload_file(this.form)"))) .
|
||||
html::div('hint', $this->rc->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize))))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register UI object for HTML5 drag & drop file upload
|
||||
*/
|
||||
function file_drop_area($attrib = array())
|
||||
{
|
||||
if ($attrib['id']) {
|
||||
$this->rc->output->add_gui_object('filedrop', $attrib['id']);
|
||||
$this->rc->output->set_env('filedrop', array('action' => 'upload', 'fieldname' => '_attachments'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate HTML element for attachments list
|
||||
*/
|
||||
function attachments_list($attrib = array())
|
||||
{
|
||||
if (!$attrib['id'])
|
||||
$attrib['id'] = 'rcmAttachmentList';
|
||||
|
||||
$skin_path = $this->cal->local_skin_path();
|
||||
if ($attrib['deleteicon']) {
|
||||
$_SESSION[calendar::SESSION_KEY . '_deleteicon'] = $skin_path . $attrib['deleteicon'];
|
||||
$this->rc->output->set_env('deleteicon', $skin_path . $attrib['deleteicon']);
|
||||
}
|
||||
if ($attrib['cancelicon'])
|
||||
$this->rc->output->set_env('cancelicon', $skin_path . $attrib['cancelicon']);
|
||||
if ($attrib['loadingicon'])
|
||||
$this->rc->output->set_env('loadingicon', $skin_path . $attrib['loadingicon']);
|
||||
|
||||
$this->rc->output->add_gui_object('attachmentlist', $attrib['id']);
|
||||
$this->attachmentlist_id = $attrib['id'];
|
||||
|
||||
return html::tag('ul', $attrib, '', html::$common_attrib);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for calendar form template.
|
||||
* The form content could be overriden by the driver
|
||||
*/
|
||||
function calendar_editform($action, $calendar = array())
|
||||
{
|
||||
$this->action = $action;
|
||||
$this->calendar = $calendar;
|
||||
|
||||
// load miniColors js/css files
|
||||
jqueryui::miniColors();
|
||||
|
||||
$this->rc->output->set_env('pagetitle', $this->cal->gettext('calendarprops'));
|
||||
$this->rc->output->add_handler('folderform', array($this, 'calendarform'));
|
||||
$this->rc->output->send('libkolab.folderform');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for calendar form template.
|
||||
* The form content could be overriden by the driver
|
||||
*/
|
||||
function calendarform($attrib)
|
||||
{
|
||||
// compose default calendar form fields
|
||||
$input_name = new html_inputfield(array('name' => 'name', 'id' => 'calendar-name', 'size' => 20));
|
||||
$input_color = new html_inputfield(array('name' => 'color', 'id' => 'calendar-color', 'size' => 6));
|
||||
$input_color = new html_inputfield(array('name' => 'color', 'id' => 'calendar-color', 'size' => 7, 'class' => 'colors'));
|
||||
|
||||
$formfields = array(
|
||||
'name' => array(
|
||||
|
@ -696,14 +649,14 @@ class calendar_ui
|
|||
$checkbox = new html_checkbox(array('name' => 'showalarms', 'id' => 'calendar-showalarms', 'value' => 1));
|
||||
$formfields['showalarms'] = array(
|
||||
'label' => $this->cal->gettext('showalarms'),
|
||||
'value' => $checkbox->show($calendar['showalarms']?1:0),
|
||||
'value' => $checkbox->show($this->calendar['showalarms'] ? 1 :0),
|
||||
'id' => 'calendar-showalarms',
|
||||
);
|
||||
}
|
||||
|
||||
// allow driver to extend or replace the form content
|
||||
return html::tag('form', array('action' => "#", 'method' => "get", 'id' => 'calendarpropform'),
|
||||
$this->cal->driver->calendar_form($action, $calendar, $formfields)
|
||||
return html::tag('form', $attrib + array('action' => "#", 'method' => "get", 'id' => 'calendarpropform'),
|
||||
$this->cal->driver->calendar_form($this->action, $this->calendar, $formfields)
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -724,7 +677,7 @@ class calendar_ui
|
|||
$table->add_header('confirmstate', $this->cal->gettext('confirmstate'));
|
||||
if ($invitations) {
|
||||
$table->add_header(array('class' => 'invite', 'title' => $this->cal->gettext('sendinvitations')),
|
||||
$invite->show(1) . html::label('edit-attendees-invite', $this->cal->gettext('sendinvitations')));
|
||||
$invite->show(1) . html::label('edit-attendees-invite', html::span('inner', $this->cal->gettext('sendinvitations'))));
|
||||
}
|
||||
$table->add_header('options', '');
|
||||
|
||||
|
@ -743,15 +696,15 @@ class calendar_ui
|
|||
*/
|
||||
function attendees_form($attrib = array())
|
||||
{
|
||||
$input = new html_inputfield(array('name' => 'participant', 'id' => 'edit-attendee-name', 'size' => 30));
|
||||
$textarea = new html_textarea(array('name' => 'comment', 'id' => 'edit-attendees-comment',
|
||||
$input = new html_inputfield(array('name' => 'participant', 'id' => 'edit-attendee-name', 'class' => 'form-control'));
|
||||
$textarea = new html_textarea(array('name' => 'comment', 'id' => 'edit-attendees-comment', 'class' => 'form-control',
|
||||
'rows' => 4, 'cols' => 55, 'title' => $this->cal->gettext('itipcommenttitle')));
|
||||
|
||||
return html::div($attrib,
|
||||
html::div(null, $input->show() . " " .
|
||||
html::div('form-searchbar', $input->show() . " " .
|
||||
html::tag('input', array('type' => 'button', 'class' => 'button', 'id' => 'edit-attendee-add', 'value' => $this->cal->gettext('addattendee'))) . " " .
|
||||
html::tag('input', array('type' => 'button', 'class' => 'button', 'id' => 'edit-attendee-schedule', 'value' => $this->cal->gettext('scheduletime').'...'))) .
|
||||
html::p('attendees-commentbox', html::label(null, $this->cal->gettext('itipcomment') . $textarea->show()))
|
||||
html::p('attendees-commentbox', html::label('edit-attendees-comment', $this->cal->gettext('itipcomment')) . $textarea->show())
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -760,10 +713,10 @@ class calendar_ui
|
|||
*/
|
||||
function resources_form($attrib = array())
|
||||
{
|
||||
$input = new html_inputfield(array('name' => 'resource', 'id' => 'edit-resource-name', 'size' => 30));
|
||||
$input = new html_inputfield(array('name' => 'resource', 'id' => 'edit-resource-name', 'class' => 'form-control'));
|
||||
|
||||
return html::div($attrib,
|
||||
html::div(null, $input->show() . " " .
|
||||
html::div('form-searchbar', $input->show() . " " .
|
||||
html::tag('input', array('type' => 'button', 'class' => 'button', 'id' => 'edit-resource-add', 'value' => $this->cal->gettext('addresource'))) . " " .
|
||||
html::tag('input', array('type' => 'button', 'class' => 'button', 'id' => 'edit-resource-find', 'value' => $this->cal->gettext('findresources').'...')))
|
||||
);
|
||||
|
@ -829,20 +782,17 @@ class calendar_ui
|
|||
*/
|
||||
function resources_search_form($attrib)
|
||||
{
|
||||
$attrib += array('command' => 'search-resource', 'id' => 'rcmcalresqsearchbox', 'autocomplete' => 'off');
|
||||
$attrib['name'] = '_q';
|
||||
|
||||
$input_q = new html_inputfield($attrib);
|
||||
$out = $input_q->show();
|
||||
$attrib += array(
|
||||
'command' => 'search-resource',
|
||||
'reset-command' => 'reset-resource-search',
|
||||
'id' => 'rcmcalresqsearchbox',
|
||||
'autocomplete' => 'off',
|
||||
'form-name' => 'rcmcalresoursqsearchform',
|
||||
'gui-object' => 'resourcesearchform',
|
||||
);
|
||||
|
||||
// add form tag around text field
|
||||
$out = $this->rc->output->form_tag(array(
|
||||
'name' => "rcmcalresoursqsearchform",
|
||||
'onsubmit' => rcmail_output::JS_OBJECT_NAME . ".command('" . $attrib['command'] . "'); return false",
|
||||
'style' => "display:inline"),
|
||||
$out);
|
||||
|
||||
return $out;
|
||||
return $this->rc->output->search_form($attrib);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
21085
lib/js/fullcalendar.js
4511
lib/js/moment.js
Normal file
|
@ -26,12 +26,12 @@ $labels['afterdelete'] = 'Изтрий съобщението';
|
|||
$labels['afterflagdeleted'] = 'Маркирай като изтрито';
|
||||
$labels['aftermoveto'] = 'Премести в...';
|
||||
$labels['itipoptions'] = 'Покани за събитие';
|
||||
$labels['weeknonone'] = 'never';
|
||||
$labels['calendar'] = 'Календар';
|
||||
$labels['calendars'] = 'Календари';
|
||||
$labels['category'] = 'Категория';
|
||||
$labels['categories'] = 'Категории';
|
||||
$labels['createcalendar'] = 'Създаване на нов календар';
|
||||
$labels['editcalendar'] = 'Промяна на свойствата на календара';
|
||||
$labels['name'] = 'Име';
|
||||
$labels['color'] = 'Цвят';
|
||||
$labels['day'] = 'Ден';
|
||||
|
@ -74,6 +74,7 @@ $labels['mystatus'] = 'Моят статус';
|
|||
$labels['status'] = 'Статус';
|
||||
$labels['status-confirmed'] = 'Потвърдено';
|
||||
$labels['status-cancelled'] = 'Отхвърлено';
|
||||
$labels['status-tentative'] = 'Предварително';
|
||||
$labels['priority'] = 'Приоритет';
|
||||
$labels['sensitivity'] = 'Поверителност';
|
||||
$labels['public'] = 'публично';
|
||||
|
@ -93,6 +94,7 @@ $labels['printdescriptions'] = 'Печат на описанията';
|
|||
$labels['parentcalendar'] = 'Внасяне вътре';
|
||||
$labels['searchearlierdates'] = '« Търсене за по- стари събития';
|
||||
$labels['searchlaterdates'] = 'Търсене за по- нови събития »';
|
||||
$labels['laterevents'] = 'Късно';
|
||||
$labels['andnmore'] = '$nr повече...';
|
||||
$labels['togglerole'] = 'Натиснете за превключване на роля';
|
||||
$labels['createfrommail'] = 'Запазване като събитие';
|
||||
|
@ -147,8 +149,6 @@ $labels['availbusy'] = 'Зает';
|
|||
$labels['availunknown'] = 'Няма информация';
|
||||
$labels['availtentative'] = 'Предварително';
|
||||
$labels['availoutofoffice'] = 'Извън офиса';
|
||||
$labels['delegatedto'] = 'Делегирано към:';
|
||||
$labels['delegatedfrom'] = 'Делегирано от:';
|
||||
$labels['sendinvitations'] = 'Изпращане на покани';
|
||||
$labels['sendnotifications'] = 'Известяване на участниците относно промените';
|
||||
$labels['sendcancellation'] = 'Известяване на участниците относно отмяна на събития';
|
||||
|
|
|
@ -32,7 +32,6 @@ $labels['calendars'] = 'Calendaris';
|
|||
$labels['category'] = 'Categoria';
|
||||
$labels['categories'] = 'Categories';
|
||||
$labels['createcalendar'] = 'Crea un nou calendari';
|
||||
$labels['editcalendar'] = 'Edita les propietats del calendari';
|
||||
$labels['name'] = 'Nom';
|
||||
$labels['color'] = 'Color';
|
||||
$labels['day'] = 'Dia';
|
||||
|
@ -75,6 +74,7 @@ $labels['mystatus'] = 'El meu estat';
|
|||
$labels['status'] = 'Estat';
|
||||
$labels['status-confirmed'] = 'Confirmat';
|
||||
$labels['status-cancelled'] = 'Cancel·lat';
|
||||
$labels['status-tentative'] = 'Provisional';
|
||||
$labels['priority'] = 'Prioritat';
|
||||
$labels['sensitivity'] = 'Privadesa';
|
||||
$labels['public'] = 'públic';
|
||||
|
@ -94,6 +94,7 @@ $labels['printdescriptions'] = 'Imprimeix descripcions';
|
|||
$labels['parentcalendar'] = 'Insereix dins';
|
||||
$labels['searchearlierdates'] = '« Cerca els esdeveniments d\'abans';
|
||||
$labels['searchlaterdates'] = 'Cerca els esdeveniments de després »';
|
||||
$labels['laterevents'] = 'Després';
|
||||
$labels['andnmore'] = '$nr més...';
|
||||
$labels['togglerole'] = 'Feu clic per commutar el rol';
|
||||
$labels['createfrommail'] = 'Desa com a esdeveniment';
|
||||
|
@ -151,8 +152,6 @@ $labels['availbusy'] = 'Ocupat';
|
|||
$labels['availunknown'] = 'Desconegut';
|
||||
$labels['availtentative'] = 'Provisional';
|
||||
$labels['availoutofoffice'] = 'Fora de l\'oficina';
|
||||
$labels['delegatedto'] = 'Delegat a:';
|
||||
$labels['delegatedfrom'] = 'Delegat de:';
|
||||
$labels['scheduletime'] = 'Cerca disponibilitat';
|
||||
$labels['sendinvitations'] = 'Envia invitacions';
|
||||
$labels['sendnotifications'] = 'Notifica als participants quan hi hagi modificacions';
|
||||
|
@ -164,7 +163,6 @@ $labels['nextslot'] = 'Lloc següent';
|
|||
$labels['suggestedslot'] = 'Lloc suggerit';
|
||||
$labels['noslotfound'] = 'No s\'ha pogut trobar un espai de temps lliure';
|
||||
$labels['invitationsubject'] = 'Heu estat convidats a "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nQuan: \$date\n\nConvidats: \$attendees\n\nSi us plau cerqueu el fitxer iCalendar adjunt dins dels detalls de l'esdeveniment per poder-lo importar a la vostra aplicació de calendari.";
|
||||
$labels['invitationattendlinks'] = "En cas que el vostre client de correu electrònic no suporti peticions de tipus iTip, podeu fer servir el següent enllaç per acceptar o declinar aquesta invitació:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" ha estat actualitzat';
|
||||
$labels['eventupdatesubjectempty'] = 'Un esdeveniment que us afecta ha estat actualitzat';
|
||||
|
|
|
@ -27,12 +27,16 @@ $labels['afterflagdeleted'] = 'Označit jako smazané';
|
|||
$labels['aftermoveto'] = 'Přesunout do...';
|
||||
$labels['itipoptions'] = 'Pozvání na událost';
|
||||
$labels['afteraction'] = 'Poté co jsou pozvání nebo aktualizace zprávy zpracovány';
|
||||
$labels['showweekno'] = 'Zobrazit čísla týdnů';
|
||||
$labels['weeknonone'] = 'nikdy';
|
||||
$labels['weeknodatepicker'] = 'pouze ve sběrači dat';
|
||||
$labels['weeknoall'] = 'v pohledu na sběrač dat a na kalendář';
|
||||
$labels['calendar'] = 'Kalendář';
|
||||
$labels['calendars'] = 'Kalendáře';
|
||||
$labels['category'] = 'Kategorie';
|
||||
$labels['categories'] = 'Kategorie';
|
||||
$labels['addcalendar'] = 'Přidat kalendář';
|
||||
$labels['createcalendar'] = 'Vytvořit nový kalendář';
|
||||
$labels['editcalendar'] = 'Upravit vlastnosti kalendáře';
|
||||
$labels['name'] = 'Název';
|
||||
$labels['color'] = 'Barva';
|
||||
$labels['day'] = 'Den';
|
||||
|
@ -75,6 +79,7 @@ $labels['mystatus'] = 'Můj stav';
|
|||
$labels['status'] = 'Stav';
|
||||
$labels['status-confirmed'] = 'Potvrzeno';
|
||||
$labels['status-cancelled'] = 'Zrušeno';
|
||||
$labels['status-tentative'] = 'Nezávazně';
|
||||
$labels['priority'] = 'Přednost';
|
||||
$labels['sensitivity'] = 'Soukromí';
|
||||
$labels['public'] = 'veřejné';
|
||||
|
@ -94,6 +99,8 @@ $labels['printdescriptions'] = 'Vytisknout popisy';
|
|||
$labels['parentcalendar'] = 'Vložit dovnitř';
|
||||
$labels['searchearlierdates'] = '« Hledat dřívější události';
|
||||
$labels['searchlaterdates'] = 'Hledat pozdější události »';
|
||||
$labels['earlierevents'] = 'Dříve';
|
||||
$labels['laterevents'] = 'Později';
|
||||
$labels['andnmore'] = 'dalších $nr...';
|
||||
$labels['togglerole'] = 'Klepněte k přepnutí role';
|
||||
$labels['createfrommail'] = 'Uložit jako událost';
|
||||
|
@ -104,8 +111,10 @@ $labels['nmonthsback'] = '$nr měsíců nazpátek';
|
|||
$labels['showurl'] = 'Ukázat adresu (URL) kalendáře';
|
||||
$labels['showurldescription'] = 'Tuto adresu použijte pro přístup (jen ke čtení) ke kalendáři z jiných aplikací. Můžete ji zkopírovat a vložit do jakéhokoli kalendářového softwaru, který podporuje formát iCal.';
|
||||
$labels['caldavurldescription'] = 'Zkopírujte tuto adresu do aplikace <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> klienta (např. Evolution nebo Mozilla Thunderbird) pro úplné synchronizování tohoto adresáře s vaším počítačem nebo mobilním zařízením.';
|
||||
$labels['showfburl'] = 'Ukázat volnou/obsazenou adresu';
|
||||
$labels['findcalendars'] = 'Najít kalendáře...';
|
||||
$labels['searchterms'] = 'Hledané výrazy';
|
||||
$labels['findevents'] = 'Najít události';
|
||||
$labels['calsearchresults'] = 'Dostupné kalendáře';
|
||||
$labels['calendarsubscribe'] = 'Ukazovat seznam trvale';
|
||||
$labels['nocalendarsfound'] = 'Nenalezeny žádné kalendáře';
|
||||
|
@ -115,6 +124,8 @@ $labels['invitationspending'] = 'Pozvání čekající na vyřízení';
|
|||
$labels['invitationsdeclined'] = 'Odmítnutá pozvání';
|
||||
$labels['changepartstat'] = 'Změnit stav příjemce';
|
||||
$labels['rsvpcomment'] = 'Text pozvánky';
|
||||
$labels['eventstartsync'] = 'Posunout začátek události k prvnímu výskytu';
|
||||
$labels['weekshort'] = 'Týd';
|
||||
$labels['listrange'] = 'Rozsah k zobrazení:';
|
||||
$labels['listsections'] = 'Rozdělit na:';
|
||||
$labels['smartsections'] = 'Chytré sekce';
|
||||
|
@ -151,8 +162,6 @@ $labels['availbusy'] = 'Obsazeno';
|
|||
$labels['availunknown'] = 'Neznámý';
|
||||
$labels['availtentative'] = 'Nezávazně';
|
||||
$labels['availoutofoffice'] = 'Mimo kancelář';
|
||||
$labels['delegatedto'] = 'Pověřený:';
|
||||
$labels['delegatedfrom'] = 'Pověřující:';
|
||||
$labels['scheduletime'] = 'Najít dostupnost';
|
||||
$labels['sendinvitations'] = 'Poslat pozvánky';
|
||||
$labels['sendnotifications'] = 'Uvědomit účastníky o změnách';
|
||||
|
@ -164,7 +173,6 @@ $labels['nextslot'] = 'Další místo v rozvrhu';
|
|||
$labels['suggestedslot'] = 'Navržené místo v rozvrhu';
|
||||
$labels['noslotfound'] = 'Nelze najít volné místo v rozvrhu';
|
||||
$labels['invitationsubject'] = 'Byl(a) jste pozván(a) na událost "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nKdy: \$date\n\nPozváni: \$attendees\n\nPodrobnosti o události najdete v přiloženém souboru typu iCalendar. Můžete si ho zavést do kalendářového programu.";
|
||||
$labels['invitationattendlinks'] = "Pokud váš poštovní klient nepodporuje pozvánky iTip, použijte prosím následující odkaz k potvrzení nebo odmítnutí pozvání:\n\$url";
|
||||
$labels['eventupdatesubject'] = 'Událost "$title" byla aktualizována';
|
||||
$labels['eventupdatesubjectempty'] = 'Událost, která se vás týká, byla aktualizována';
|
||||
|
@ -190,11 +198,13 @@ $labels['savetocalendar'] = 'Uložit do kalenáře';
|
|||
$labels['openpreview'] = 'Ověřit kalendář';
|
||||
$labels['noearlierevents'] = 'Žádné dřívější události';
|
||||
$labels['nolaterevents'] = 'Žádné pozdější události';
|
||||
$labels['legend'] = 'Vysvětlivka';
|
||||
$labels['resource'] = 'Zdroj';
|
||||
$labels['addresource'] = 'Zapsat zdroj';
|
||||
$labels['findresources'] = 'Najít zdroje';
|
||||
$labels['resourcedetails'] = 'Podrobnosti';
|
||||
$labels['resourceavailability'] = 'Dostupnost';
|
||||
$labels['resourceprops'] = 'Vlastnosti zdroje';
|
||||
$labels['resourceowner'] = 'Vlastník';
|
||||
$labels['resourceadded'] = 'Zdroj byl přidán do vaší události';
|
||||
$labels['tabsummary'] = 'Souhrn';
|
||||
|
@ -223,6 +233,7 @@ $labels['nowritecalendarfound'] = 'Nebyl nalezen žádný kalendář, do kteréh
|
|||
$labels['importedsuccessfully'] = 'Událost byla úspěšně přidána do kalendáře \'$calendar\'';
|
||||
$labels['updatedsuccessfully'] = 'Událost byla úspěšně aktualizována v \'$calendar\'';
|
||||
$labels['attendeupdateesuccess'] = 'Stav účastníka byl úspěšně aktualizován';
|
||||
$labels['errorunknownattendee'] = 'Nepodařilo se najít údaje o účastníkovi.';
|
||||
$labels['itipsendsuccess'] = 'Pozvánky byly rozeslány účastníkům.';
|
||||
$labels['itipresponseerror'] = 'Nelze odeslat odpověď na tuto pozvánku';
|
||||
$labels['itipinvalidrequest'] = 'Tato pozvánka již není platná';
|
||||
|
@ -232,6 +243,7 @@ $labels['importsuccess'] = 'Úspěšně zavedeno $nr událostí';
|
|||
$labels['importnone'] = 'Nebyly nalezeny žádné události k zavedení';
|
||||
$labels['importerror'] = 'Při zavádění došlo k chybě';
|
||||
$labels['aclnorights'] = 'Nemáte administrátorská práva k tomuto kalendáři.';
|
||||
$labels['importtext'] = 'Můžete nahrávat události ve formátu <a href="https://wikipedia.org/wiki/ICalendar">iCalendar</a> (.ics).';
|
||||
$labels['changeeventconfirm'] = 'Změnit událost';
|
||||
$labels['removeeventconfirm'] = 'Smazat událost';
|
||||
$labels['changerecurringeventwarning'] = 'Toto je opakovaná událost. Chcete upravit jen toto konání, toto a všechna následující konání, úplně všechna konání nebo uložit událost jako novou?';
|
||||
|
@ -261,8 +273,10 @@ $labels['arialabelsearchform'] = 'Hledání události';
|
|||
$labels['arialabelquicksearchbox'] = 'Zadání hledání události';
|
||||
$labels['arialabelcalsearchform'] = 'Hledání kalendářů';
|
||||
$labels['calendaractions'] = 'Činnosti v kalendáři';
|
||||
$labels['calendarprops'] = 'Vlastnosti kalendáře';
|
||||
$labels['arialabeleventattendees'] = 'Seznam účastníků události';
|
||||
$labels['arialabeleventresources'] = 'Seznam zdrojů události';
|
||||
$labels['arialabelresourcesearchform'] = 'Hledání zdrojů';
|
||||
$labels['arialabelresourceselection'] = 'Dostupné zdroje';
|
||||
$labels['arialabeleventform'] = 'Úprava události';
|
||||
?>
|
||||
|
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = 'Markér som slettet';
|
|||
$labels['aftermoveto'] = 'Flyt til ...';
|
||||
$labels['itipoptions'] = 'Begivenhedsinvitationer';
|
||||
$labels['afteraction'] = 'Efter en invitation eller opdateringsbesked er behandlet';
|
||||
$labels['weeknonone'] = 'aldrig';
|
||||
$labels['calendar'] = 'Kalender';
|
||||
$labels['calendars'] = 'Kalendere';
|
||||
$labels['category'] = 'Kategori';
|
||||
$labels['categories'] = 'Kategorier';
|
||||
$labels['createcalendar'] = 'Opret ny kalender';
|
||||
$labels['editcalendar'] = 'Redigér kalenderegenskaber';
|
||||
$labels['name'] = 'Navn';
|
||||
$labels['color'] = 'Farve';
|
||||
$labels['day'] = 'Dag';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'Min status';
|
|||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Bekræftet';
|
||||
$labels['status-cancelled'] = 'Annulleret';
|
||||
$labels['status-tentative'] = 'Forsøgsvis';
|
||||
$labels['priority'] = 'Prioritet';
|
||||
$labels['sensitivity'] = 'Privatliv';
|
||||
$labels['public'] = 'offentlig';
|
||||
|
@ -94,6 +95,7 @@ $labels['printdescriptions'] = 'Udskriv beskrivelser';
|
|||
$labels['parentcalendar'] = 'Indsæt indeni';
|
||||
$labels['searchearlierdates'] = '« Søg efter tidligere arrangementer';
|
||||
$labels['searchlaterdates'] = 'Søg efter senere arrangementer »';
|
||||
$labels['laterevents'] = 'Senere';
|
||||
$labels['andnmore'] = '$nr flere...';
|
||||
$labels['togglerole'] = 'Klik for at vise eller skjule rolle';
|
||||
$labels['createfrommail'] = 'Gem som arrangement';
|
||||
|
@ -151,8 +153,6 @@ $labels['availbusy'] = 'Optaget';
|
|||
$labels['availunknown'] = 'Ukendt';
|
||||
$labels['availtentative'] = 'Forsøgsvis';
|
||||
$labels['availoutofoffice'] = 'Ikke på kontoret';
|
||||
$labels['delegatedto'] = 'Delegere til:';
|
||||
$labels['delegatedfrom'] = 'Delegere fra:';
|
||||
$labels['scheduletime'] = 'Find ledigt tidspunkt';
|
||||
$labels['sendinvitations'] = 'Send invitationer';
|
||||
$labels['sendnotifications'] = 'Gør deltagere opmærksom på ændringer';
|
||||
|
@ -164,7 +164,6 @@ $labels['nextslot'] = 'Næste blok';
|
|||
$labels['suggestedslot'] = 'Foreslået blok';
|
||||
$labels['noslotfound'] = 'Kunne ikke finde en ledig tidsblok';
|
||||
$labels['invitationsubject'] = 'Du er blevet inviteret til "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nTidspunkt: \$date\n\nInviterede: \$attendees\n\nBemærk venligst vedhæftede iCalendar-fil med alle detaljer om arrangementet, som du kan importere til dit kalenderprogram.";
|
||||
$labels['invitationattendlinks'] = "Hvis dit e-postprogram ikke understøtter iTip-forespørgsler, så kan du benytte følgende henvisning til enten at acceptere eller afvise denne invitation:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" er blevet opdateret';
|
||||
$labels['eventupdatesubjectempty'] = 'Et arrangement der vedrører dig er blevet opdateret';
|
||||
|
|
268
localization/de.inc
Normal file
|
@ -0,0 +1,268 @@
|
|||
<?php
|
||||
/**
|
||||
* Localizations for Kolab Calendar plugin
|
||||
*
|
||||
* Copyright (C) 2014, Kolab Systems AG
|
||||
*
|
||||
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
|
||||
*/
|
||||
$labels['default_view'] = 'Standardansicht';
|
||||
$labels['time_format'] = 'Zeitformatierung';
|
||||
$labels['timeslots'] = 'Zeitfenster pro Stunde';
|
||||
$labels['first_day'] = 'Erster Wochentag';
|
||||
$labels['first_hour'] = 'Erste angezeigte Stunde';
|
||||
$labels['workinghours'] = 'Arbeitszeiten';
|
||||
$labels['add_category'] = 'Kategorie hinzufügen';
|
||||
$labels['remove_category'] = 'Kategorie entfernen';
|
||||
$labels['defaultcalendar'] = 'Neue Termine erstellen in';
|
||||
$labels['eventcoloring'] = 'Färbung der Termine';
|
||||
$labels['coloringmode0'] = 'Farbe des Kalenders';
|
||||
$labels['coloringmode1'] = 'Farbe der Kategorie';
|
||||
$labels['coloringmode2'] = 'Kalenderfarbe außen, Kategoriefarbe innen';
|
||||
$labels['coloringmode3'] = 'Kategoriefarbe außen, Kalenderfarbe innen';
|
||||
$labels['afternothing'] = 'nichts unternehmen';
|
||||
$labels['aftertrash'] = 'In den Papierkorb verschieben';
|
||||
$labels['afterdelete'] = 'Nachricht löschen';
|
||||
$labels['afterflagdeleted'] = 'Als gelöscht markieren';
|
||||
$labels['aftermoveto'] = 'Verschiebe nach...';
|
||||
$labels['itipoptions'] = 'Veranstaltungseinladungen';
|
||||
$labels['afteraction'] = 'Nachdem eine Einladungs- oder Aktualisierungsnachricht verarbeitet wurde';
|
||||
$labels['weeknonone'] = 'nie';
|
||||
$labels['calendar'] = 'Kalender';
|
||||
$labels['calendars'] = 'Kalender';
|
||||
$labels['category'] = 'Kategorie';
|
||||
$labels['categories'] = 'Kategorien';
|
||||
$labels['createcalendar'] = 'Neuen Kalender erstellen';
|
||||
$labels['name'] = 'Name';
|
||||
$labels['color'] = 'Farbe';
|
||||
$labels['day'] = 'Tag';
|
||||
$labels['week'] = 'Woche';
|
||||
$labels['month'] = 'Monat';
|
||||
$labels['agenda'] = 'Agenda';
|
||||
$labels['new'] = 'Neu';
|
||||
$labels['new_event'] = 'Neuer Termin';
|
||||
$labels['edit_event'] = 'Termin bearbeiten';
|
||||
$labels['edit'] = 'Bearbeiten';
|
||||
$labels['save'] = 'Speichern';
|
||||
$labels['removelist'] = 'Von der Liste entfernen';
|
||||
$labels['cancel'] = 'Abbrechen';
|
||||
$labels['select'] = 'Auswählen';
|
||||
$labels['print'] = 'Drucken';
|
||||
$labels['printtitle'] = 'Kalender drucken';
|
||||
$labels['title'] = 'Titel';
|
||||
$labels['description'] = 'Beschreibung';
|
||||
$labels['all-day'] = 'ganztägig';
|
||||
$labels['export'] = 'Exportieren';
|
||||
$labels['exporttitle'] = 'Kalender als iCalendar exportieren';
|
||||
$labels['exportrange'] = 'Termine ab';
|
||||
$labels['exportattachments'] = 'Mit Anhängen';
|
||||
$labels['customdate'] = 'Benutzerdefiniertes Datum';
|
||||
$labels['location'] = 'Ort';
|
||||
$labels['url'] = 'Internetadresse';
|
||||
$labels['date'] = 'Datum';
|
||||
$labels['start'] = 'Beginn';
|
||||
$labels['starttime'] = 'Startzeit';
|
||||
$labels['end'] = 'Ende';
|
||||
$labels['endtime'] = 'Endzeit';
|
||||
$labels['repeat'] = 'Wiederholung';
|
||||
$labels['selectdate'] = 'Datum auswählen';
|
||||
$labels['freebusy'] = 'Mich anzeigen als';
|
||||
$labels['free'] = 'Frei';
|
||||
$labels['busy'] = 'Gebucht';
|
||||
$labels['outofoffice'] = 'Abwesend';
|
||||
$labels['tentative'] = 'Mit Vorbehalt';
|
||||
$labels['mystatus'] = 'Mein Status';
|
||||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Bestätigt';
|
||||
$labels['status-cancelled'] = 'Abgesagt';
|
||||
$labels['status-tentative'] = 'Mit Vorbehalt';
|
||||
$labels['priority'] = 'Priorität';
|
||||
$labels['sensitivity'] = 'Sichtbarkeit';
|
||||
$labels['public'] = 'öffentlich';
|
||||
$labels['private'] = 'privat';
|
||||
$labels['confidential'] = 'vertraulich';
|
||||
$labels['links'] = 'Referenz';
|
||||
$labels['alarms'] = 'Erinnerung';
|
||||
$labels['comment'] = 'Kommentar';
|
||||
$labels['created'] = 'Erstellt';
|
||||
$labels['changed'] = 'Geändert';
|
||||
$labels['unknown'] = 'Unbekannt';
|
||||
$labels['eventoptions'] = 'Optionen';
|
||||
$labels['generated'] = 'erstellt am';
|
||||
$labels['eventhistory'] = 'Historie';
|
||||
$labels['removelink'] = 'E-Mail-Referenz entfernen';
|
||||
$labels['printdescriptions'] = 'Beschreibung drucken';
|
||||
$labels['parentcalendar'] = 'Erstellen in';
|
||||
$labels['searchearlierdates'] = '« Frühere Termine suchen';
|
||||
$labels['searchlaterdates'] = 'Spätere Termine suchen »';
|
||||
$labels['laterevents'] = 'Später';
|
||||
$labels['andnmore'] = '$nr weitere …';
|
||||
$labels['togglerole'] = 'Zum Ändern der Rolle klicken';
|
||||
$labels['createfrommail'] = 'Als Termin speichern';
|
||||
$labels['importevents'] = 'Termine importieren';
|
||||
$labels['importrange'] = 'Termine ab';
|
||||
$labels['onemonthback'] = '1 Monat zurück';
|
||||
$labels['nmonthsback'] = '$nr Monate zurück';
|
||||
$labels['showurl'] = 'URL anzeigen';
|
||||
$labels['showurldescription'] = 'Über die folgende Adresse können Sie mit einem beliebigen Kalenderprogramm Ihren Kalender abrufen (nur lesend), sofern dieses das iCal-Format unterstützt.';
|
||||
$labels['caldavurldescription'] = 'Diese Adresse in einen <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a>-Klienten (z.B. Evolution oder Mozilla Thunderbird) kopieren, um den Kalender in Gänze mit einem mobilen Gerät zu synchronisieren.';
|
||||
$labels['findcalendars'] = 'Kalender finden …';
|
||||
$labels['searchterms'] = 'Suchbegriffe';
|
||||
$labels['calsearchresults'] = 'Verfügbare Kalender';
|
||||
$labels['calendarsubscribe'] = 'Permanent anzeigen';
|
||||
$labels['nocalendarsfound'] = 'Keine Kalender gefunden';
|
||||
$labels['nrcalendarsfound'] = '$nr Kalender gefunden';
|
||||
$labels['quickview'] = 'Nur diesen Kalender anzeigen';
|
||||
$labels['invitationspending'] = 'Ausstehende Einladungen';
|
||||
$labels['invitationsdeclined'] = 'Abgelehnte Einladungen';
|
||||
$labels['changepartstat'] = 'Teilnehmerstatus ändern';
|
||||
$labels['rsvpcomment'] = 'Einladungstext';
|
||||
$labels['listrange'] = 'Angezeigter Bereich:';
|
||||
$labels['listsections'] = 'Unterteilung:';
|
||||
$labels['smartsections'] = 'Intelligent';
|
||||
$labels['until'] = 'bis';
|
||||
$labels['today'] = 'Heute';
|
||||
$labels['tomorrow'] = 'Morgen';
|
||||
$labels['thisweek'] = 'Diese Woche';
|
||||
$labels['nextweek'] = 'Nächste Woche';
|
||||
$labels['prevweek'] = 'Vorige Woche';
|
||||
$labels['thismonth'] = 'Diesen Monat';
|
||||
$labels['nextmonth'] = 'Nächsten Monat';
|
||||
$labels['weekofyear'] = 'Woche';
|
||||
$labels['pastevents'] = 'Vergangene';
|
||||
$labels['futureevents'] = 'Zukünftige';
|
||||
$labels['showalarms'] = 'Erinnerungen anzeigen';
|
||||
$labels['defaultalarmtype'] = 'Standard-Erinnerungseinstellung';
|
||||
$labels['defaultalarmoffset'] = 'Standard-Erinnerungszeit';
|
||||
$labels['attendee'] = 'Teilnehmer';
|
||||
$labels['role'] = 'Rolle';
|
||||
$labels['availability'] = 'Verfüg.';
|
||||
$labels['confirmstate'] = 'Status';
|
||||
$labels['addattendee'] = 'Hinzufügen';
|
||||
$labels['roleorganizer'] = 'Organisator';
|
||||
$labels['rolerequired'] = 'Erforderlich';
|
||||
$labels['roleoptional'] = 'Optional';
|
||||
$labels['rolechair'] = 'Vorsitz';
|
||||
$labels['rolenonparticipant'] = 'Abwesend';
|
||||
$labels['cutypeindividual'] = 'Person';
|
||||
$labels['cutypegroup'] = 'Gruppe';
|
||||
$labels['cutyperesource'] = 'Ressource';
|
||||
$labels['cutyperoom'] = 'Raum';
|
||||
$labels['availfree'] = 'Frei';
|
||||
$labels['availbusy'] = 'Gebucht';
|
||||
$labels['availunknown'] = 'Unbekannt';
|
||||
$labels['availtentative'] = 'Mit Vorbehalt';
|
||||
$labels['availoutofoffice'] = 'Abwesend';
|
||||
$labels['scheduletime'] = 'Verfügbarkeit anzeigen';
|
||||
$labels['sendinvitations'] = 'Einladungen versenden';
|
||||
$labels['sendnotifications'] = 'Teilnehmer über die Änderungen informieren';
|
||||
$labels['sendcancellation'] = 'Teilnehmer über die Terminabsage informieren';
|
||||
$labels['onlyworkinghours'] = 'Verfügbarkeit innerhalb meiner Arbeitszeiten suchen';
|
||||
$labels['reqallattendees'] = 'Erforderliche/alle Teilnehmer';
|
||||
$labels['prevslot'] = 'Vorheriger Vorschlag';
|
||||
$labels['nextslot'] = 'Nächster Vorschlag';
|
||||
$labels['suggestedslot'] = 'Empfohlener Slot';
|
||||
$labels['noslotfound'] = 'Es konnten keine freien Zeiten gefunden werden';
|
||||
$labels['invitationsubject'] = 'Sie wurden zu »$title« eingeladen';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\n\$description\n\nIm Anhang finden Sie eine iCalendar-Datei mit allen Details des Termins. Diese können Sie in Ihre Kalenderanwendung importieren.";
|
||||
$labels['invitationattendlinks'] = "Falls Ihr E-Mail-Programm keine iTip-Anfragen unterstützt, können Sie den folgenden Link verwenden, um den Termin zu bestätigen oder abzulehnen:\n\$url";
|
||||
$labels['eventupdatesubject'] = '»$title« wurde aktualisiert';
|
||||
$labels['eventupdatesubjectempty'] = 'Termin wurde aktualisiert';
|
||||
$labels['eventupdatemailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nIm Anhang finden Sie eine iCalendar-Datei mit den aktualisiereten Termindaten. Diese können Sie in Ihre Kalenderanwendung importieren.";
|
||||
$labels['eventcancelsubject'] = '»$title« wurde abgesagt';
|
||||
$labels['eventcancelmailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nDer Termin wurde von \$organizer abgesagt.\n\nIm Anhang finden Sie eine iCalendar-Datei mit den Termindaten.";
|
||||
$labels['itipobjectnotfound'] = 'Der Termin auf den sich diese Nachricht bezieht, wurde in Ihrem Kalender nicht gefunden.';
|
||||
$labels['itipmailbodyaccepted'] = "\$sender hat die Einladung zum folgenden Termin angenommen:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
|
||||
$labels['itipmailbodytentative'] = "\$sender hat die Einladung mit Vorbehalt zum folgenden Termin angenommen:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
|
||||
$labels['itipmailbodydeclined'] = "\$sender hat die Einladung zum folgenden Termin abgelehnt:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
|
||||
$labels['itipmailbodycancel'] = "\$sender hat Ihre Teilnahme bei der folgenden Veranstaltung zurückgewiesen:\n\n*\$title*\n\nWann: \$date";
|
||||
$labels['itipmailbodydelegated'] = "\$sender hat die Teilnahme an folgendem Event delegiert:\n\n*\$title*\n\nWhen: \$date";
|
||||
$labels['itipmailbodydelegatedto'] = "\$sender hat die Teilnahme an folgendem Event an Sie delegiert:\n\n*\$title*\n\nWann: \$date";
|
||||
$labels['itipdeclineevent'] = 'Möchten Sie die Einladung zu diesem Termin ablehnen?';
|
||||
$labels['declinedeleteconfirm'] = 'Soll der abgelehnte Termin zusätzlich aus dem Kalender gelöscht werden?';
|
||||
$labels['itipcomment'] = 'Kommentar zur Einladungs-/Benachrichtigungsnachricht';
|
||||
$labels['itipcommenttitle'] = 'Dieser Kommentar wird an die Einladungs-/Benachrichtigungsnachricht angehängt, die an die Teilnehmer verschickt wird';
|
||||
$labels['notanattendee'] = 'Sie sind nicht in der Liste der Teilnehmer aufgeführt';
|
||||
$labels['eventcancelled'] = 'Der Termin wurde vom Organisator abgesagt';
|
||||
$labels['saveincalendar'] = 'speichern in';
|
||||
$labels['updatemycopy'] = 'In meinem Kalender aktualisieren';
|
||||
$labels['savetocalendar'] = 'In Kalender übernehmen';
|
||||
$labels['openpreview'] = 'Kalender überprüfen';
|
||||
$labels['noearlierevents'] = 'Keine früheren Ereignisse';
|
||||
$labels['nolaterevents'] = 'Keine späteren Ereignisse';
|
||||
$labels['resource'] = 'Ressource';
|
||||
$labels['addresource'] = 'Ressource buchen';
|
||||
$labels['findresources'] = 'Ressourcen finden';
|
||||
$labels['resourcedetails'] = 'Details';
|
||||
$labels['resourceavailability'] = 'Verfügbarkeit';
|
||||
$labels['resourceowner'] = 'Eigentümer';
|
||||
$labels['resourceadded'] = 'Diese Ressource wurde Ihrem Termin hinzugefügt';
|
||||
$labels['tabsummary'] = 'Übersicht';
|
||||
$labels['tabrecurrence'] = 'Wiederholung';
|
||||
$labels['tabattendees'] = 'Teilnehmer';
|
||||
$labels['tabresources'] = 'Ressourcen';
|
||||
$labels['tabattachments'] = 'Anhänge';
|
||||
$labels['tabsharing'] = 'Freigabe';
|
||||
$labels['deleteobjectconfirm'] = 'Möchten Sie diesen Termin wirklich löschen?';
|
||||
$labels['deleteventconfirm'] = 'Möchten Sie diesen Termin wirklich löschen?';
|
||||
$labels['deletecalendarconfirm'] = 'Möchten Sie diesen Kalender mit allen Terminen wirklich löschen?';
|
||||
$labels['deletecalendarconfirmrecursive'] = 'Soll dieser Kalender wirklich mit allen Terminen und Unterkalendern gelöscht werden?';
|
||||
$labels['savingdata'] = 'Daten werden gespeichert …';
|
||||
$labels['errorsaving'] = 'Fehler beim Speichern.';
|
||||
$labels['operationfailed'] = 'Die Aktion ist fehlgeschlagen.';
|
||||
$labels['invalideventdates'] = 'Ungültige Daten eingegeben! Bitte überprüfen Sie die Eingaben.';
|
||||
$labels['invalidcalendarproperties'] = 'Ungültige Kalenderinformationen! Bitte geben Sie einen Namen ein.';
|
||||
$labels['searchnoresults'] = 'Keine Termine in den gewählten Kalendern gefunden.';
|
||||
$labels['successremoval'] = 'Der Termin wurde erfolgreich gelöscht.';
|
||||
$labels['successrestore'] = 'Der Termin wurde erfolgreich wieder hergestellt.';
|
||||
$labels['errornotifying'] = 'Benachrichtigung an die Teilnehmer konnten nicht gesendet werden';
|
||||
$labels['errorimportingevent'] = 'Fehler beim Importieren';
|
||||
$labels['importwarningexists'] = 'Eine Kopie dieses Termins existiert bereits in Ihrem Kalender.';
|
||||
$labels['newerversionexists'] = 'Eine neuere Version dieses Termins exisitert bereits! Import abgebrochen.';
|
||||
$labels['nowritecalendarfound'] = 'Kein Kalender zum Speichern gefunden';
|
||||
$labels['importedsuccessfully'] = 'Der Termin wurde erfolgreich in »$calendar« gespeichert';
|
||||
$labels['updatedsuccessfully'] = 'Der Termin wurde erfolgreich in »$calendar« geändert';
|
||||
$labels['attendeupdateesuccess'] = 'Teilnehmerstatus erfolgreich aktualisiert';
|
||||
$labels['itipsendsuccess'] = 'Einladung an Teilnehmer versendet.';
|
||||
$labels['itipresponseerror'] = 'Die Antwort auf diese Einladung konnte nicht versendet werden';
|
||||
$labels['itipinvalidrequest'] = 'Diese Einladung ist nicht mehr gültig.';
|
||||
$labels['sentresponseto'] = 'Antwort auf diese Einladung erfolgreich an $mailto gesendet';
|
||||
$labels['localchangeswarning'] = 'Die auszuführenden Änderungen werden sich nur auf den persönlichen Kalender auswirken und nicht an den Organisator des Termins weitergeleitet.';
|
||||
$labels['importsuccess'] = 'Es wurden $nr Termine erfolgreich importiert';
|
||||
$labels['importnone'] = 'Keine Termine zum Importieren gefunden';
|
||||
$labels['importerror'] = 'Fehler beim Importieren';
|
||||
$labels['aclnorights'] = 'Der Zugriff auf diesen Kalender erfordert Administrator-Rechte.';
|
||||
$labels['changeeventconfirm'] = 'Termin ändern';
|
||||
$labels['removeeventconfirm'] = 'Termin löschen';
|
||||
$labels['changerecurringeventwarning'] = 'Dies ist eine Terminreihe. Möchten Sie nur den aktuellen, diesen und alle zukünftigen oder alle Termine bearbeiten oder die Änderungen als neuen Termin speichern?';
|
||||
$labels['removerecurringeventwarning'] = 'Dies ist ein wiederkehrender Termin. Wollen Sie nur diesen Termin bearbeiten oder alle zukünftigen Vorkommen? Alternativ können auch alle Vorkommen bearbeitet werden.';
|
||||
$labels['removerecurringallonly'] = 'Dieses ist ein wiederkehrender Termin. Als ein Teilnehmer können Sie nur den gesamten Termin inklusive aller Wiederholungen löschen.';
|
||||
$labels['currentevent'] = 'Aktuellen';
|
||||
$labels['futurevents'] = 'Zukünftige';
|
||||
$labels['allevents'] = 'Alle';
|
||||
$labels['saveasnew'] = 'Als neu speichern';
|
||||
$labels['birthdays'] = 'Geburtstage';
|
||||
$labels['birthdayscalendar'] = 'Geburtstagskalender';
|
||||
$labels['displaybirthdayscalendar'] = 'Geburtstagskalender anzeigen';
|
||||
$labels['birthdayscalendarsources'] = 'Für diese Adressbücher';
|
||||
$labels['birthdayeventtitle'] = '$names Geburtstag';
|
||||
$labels['birthdayage'] = 'Alter $age';
|
||||
$labels['objectchangelog'] = 'Änderungsverlauf';
|
||||
$labels['objectdiff'] = 'Änderungen aus $rev1 nach $rev2';
|
||||
$labels['objectnotfound'] = 'Termindaten sind leider nicht vergübar';
|
||||
$labels['objectchangelognotavailable'] = 'Änderungshistorie ist nicht verfügbar für diesen Termin';
|
||||
$labels['objectdiffnotavailable'] = 'Vergleich für die gewählten Versionen nicht möglich';
|
||||
$labels['revisionrestoreconfirm'] = 'Wollen Sie wirklich die Version $rev dieses Termins wiederherstellen? Diese Aktion wird die aktuelle Kopie mit der älteren Version ersetzen.';
|
||||
$labels['objectrestoresuccess'] = 'Revision $rev erfolgreich wiederhergestellt';
|
||||
$labels['objectrestoreerror'] = 'Fehler beim Wiederherstellen der alten Revision';
|
||||
$labels['arialabelminical'] = 'Kalender Datumswahl';
|
||||
$labels['arialabelcalendarview'] = 'Kalender Ansicht';
|
||||
$labels['arialabelsearchform'] = 'Suchformular für Termine';
|
||||
$labels['arialabelquicksearchbox'] = 'Sucheingabe für Termine';
|
||||
$labels['arialabelcalsearchform'] = 'Suchformular für Kalender';
|
||||
$labels['calendaractions'] = 'Kalenderaktionen';
|
||||
$labels['arialabeleventattendees'] = 'Teilehmerliste';
|
||||
$labels['arialabeleventresources'] = 'Liste der Terminressourcen';
|
||||
$labels['arialabelresourcesearchform'] = 'Suchformular für Ressourcen';
|
||||
$labels['arialabelresourceselection'] = 'Verfügbare Ressourcen';
|
||||
?>
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = 'Als gelöscht markieren';
|
|||
$labels['aftermoveto'] = 'Verschiebe nach...';
|
||||
$labels['itipoptions'] = 'Termineinladungen';
|
||||
$labels['afteraction'] = 'Nachdem eine Einladungs- oder Update-Nachricht verarbetet wurde';
|
||||
$labels['weeknonone'] = 'nie';
|
||||
$labels['calendar'] = 'Kalender';
|
||||
$labels['calendars'] = 'Kalender';
|
||||
$labels['category'] = 'Kategorie';
|
||||
$labels['categories'] = 'Kategorien';
|
||||
$labels['createcalendar'] = 'Neuen Kalender erstellen';
|
||||
$labels['editcalendar'] = 'Kalendereigenschaften bearbeiten';
|
||||
$labels['name'] = 'Name';
|
||||
$labels['color'] = 'Farbe';
|
||||
$labels['day'] = 'Tag';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'Mein Status';
|
|||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Bestätigt';
|
||||
$labels['status-cancelled'] = 'Gekündigt';
|
||||
$labels['status-tentative'] = 'Mit Vorbehalt';
|
||||
$labels['priority'] = 'Priorität';
|
||||
$labels['sensitivity'] = 'Sichtbarkeit';
|
||||
$labels['public'] = 'öffentlich';
|
||||
|
@ -94,6 +95,7 @@ $labels['printdescriptions'] = 'Beschrieb drucken';
|
|||
$labels['parentcalendar'] = 'Erstellen in';
|
||||
$labels['searchearlierdates'] = '« Frühere Termine suchen';
|
||||
$labels['searchlaterdates'] = 'Spätere Termine suchen »';
|
||||
$labels['laterevents'] = 'Später';
|
||||
$labels['andnmore'] = '$nr weitere...';
|
||||
$labels['togglerole'] = 'Zum Ändern der Rolle klicken';
|
||||
$labels['createfrommail'] = 'Als Termin speichern';
|
||||
|
@ -151,8 +153,6 @@ $labels['availbusy'] = 'Gebucht';
|
|||
$labels['availunknown'] = 'Unbekannt';
|
||||
$labels['availtentative'] = 'Mit Vorbehalt';
|
||||
$labels['availoutofoffice'] = 'Abwesend';
|
||||
$labels['delegatedto'] = 'Delegiert an:';
|
||||
$labels['delegatedfrom'] = 'Delegiert von:';
|
||||
$labels['scheduletime'] = 'Verfügbarkeit anzeigen';
|
||||
$labels['sendinvitations'] = 'Einladungen versenden';
|
||||
$labels['sendnotifications'] = 'Teilnehmer über die Änderungen informieren';
|
||||
|
@ -164,7 +164,7 @@ $labels['nextslot'] = 'Nächster Vorschlag';
|
|||
$labels['suggestedslot'] = 'Empfohlener Terminplatz';
|
||||
$labels['noslotfound'] = 'Es konnten keine freien Zeiten gefunden werden';
|
||||
$labels['invitationsubject'] = 'Sie wurden zu "$title" eingeladen';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nIm Anhang finden Sie eine iCalendar-Datei mit allen Details des Termins. Diese können Sie in Ihre Kalenderanwendung importieren.";
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\n\$description\n\nIm Anhang finden Sie eine iCalendar-Datei mit allen Details des Termins. Diese können Sie in Ihre Kalenderanwendung importieren.";
|
||||
$labels['invitationattendlinks'] = "Falls Ihr E-Mail-Programm keine iTip-Anfragen unterstützt, können Sie den folgenden Link verwenden, um den Termin zu bestätigen oder abzulehnen:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" wurde aktualisiert';
|
||||
$labels['eventupdatesubjectempty'] = 'Termin wurde aktualisiert';
|
||||
|
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = 'Als gelöscht markieren';
|
|||
$labels['aftermoveto'] = 'Verschiebe nach...';
|
||||
$labels['itipoptions'] = 'Veranstaltungseinladungen';
|
||||
$labels['afteraction'] = 'Nachdem eine Einladungs- oder Aktualisierungsnachricht verarbeitet wurde';
|
||||
$labels['weeknonone'] = 'nie';
|
||||
$labels['calendar'] = 'Kalender';
|
||||
$labels['calendars'] = 'Kalender';
|
||||
$labels['category'] = 'Kategorie';
|
||||
$labels['categories'] = 'Kategorien';
|
||||
$labels['createcalendar'] = 'Neuen Kalender erstellen';
|
||||
$labels['editcalendar'] = 'Kalendereigenschaften bearbeiten';
|
||||
$labels['name'] = 'Name';
|
||||
$labels['color'] = 'Farbe';
|
||||
$labels['day'] = 'Tag';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'Mein Status';
|
|||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Bestätigt';
|
||||
$labels['status-cancelled'] = 'Abgesagt';
|
||||
$labels['status-tentative'] = 'Mit Vorbehalt';
|
||||
$labels['priority'] = 'Priorität';
|
||||
$labels['sensitivity'] = 'Sichtbarkeit';
|
||||
$labels['public'] = 'öffentlich';
|
||||
|
@ -94,6 +95,7 @@ $labels['printdescriptions'] = 'Beschreibung drucken';
|
|||
$labels['parentcalendar'] = 'Erstellen in';
|
||||
$labels['searchearlierdates'] = '« Frühere Termine suchen';
|
||||
$labels['searchlaterdates'] = 'Spätere Termine suchen »';
|
||||
$labels['laterevents'] = 'Später';
|
||||
$labels['andnmore'] = '$nr weitere …';
|
||||
$labels['togglerole'] = 'Zum Ändern der Rolle klicken';
|
||||
$labels['createfrommail'] = 'Als Termin speichern';
|
||||
|
@ -151,8 +153,6 @@ $labels['availbusy'] = 'Gebucht';
|
|||
$labels['availunknown'] = 'Unbekannt';
|
||||
$labels['availtentative'] = 'Mit Vorbehalt';
|
||||
$labels['availoutofoffice'] = 'Abwesend';
|
||||
$labels['delegatedto'] = 'Delegiert an:';
|
||||
$labels['delegatedfrom'] = 'Delegiert von:';
|
||||
$labels['scheduletime'] = 'Verfügbarkeit anzeigen';
|
||||
$labels['sendinvitations'] = 'Einladungen versenden';
|
||||
$labels['sendnotifications'] = 'Teilnehmer über die Änderungen informieren';
|
||||
|
@ -164,20 +164,47 @@ $labels['nextslot'] = 'Nächster Vorschlag';
|
|||
$labels['suggestedslot'] = 'Empfohlener Slot';
|
||||
$labels['noslotfound'] = 'Es konnten keine freien Zeiten gefunden werden';
|
||||
$labels['invitationsubject'] = 'Sie wurden zu »$title« eingeladen';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nIm Anhang finden Sie eine iCalendar-Datei mit allen Details des Termins. Diese können Sie in Ihre Kalenderanwendung importieren.";
|
||||
$labels['invitationattendlinks'] = "Falls Ihr E-Mail-Programm keine iTip-Anfragen unterstützt, können Sie den folgenden Link verwenden, um den Termin zu bestätigen oder abzulehnen:\n\$url";
|
||||
$labels['invitationmailbody'] = "*$title*
|
||||
Wann: $date
|
||||
Teilnehmer: $attendees
|
||||
$description
|
||||
Im Anhang finden Sie eine iCalendar-Datei mit allen Details des Termins. Diese können Sie in Ihre Kalenderanwendung importieren.";
|
||||
$labels['invitationattendlinks'] = "Falls Ihr E-Mail-Programm keine iTip-Anfragen unterstützt, können Sie den folgenden Link verwenden, um den Termin zu bestätigen oder abzulehnen:
|
||||
$url";
|
||||
$labels['eventupdatesubject'] = '»$title« wurde aktualisiert';
|
||||
$labels['eventupdatesubjectempty'] = 'Termin wurde aktualisiert';
|
||||
$labels['eventupdatemailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nIm Anhang finden Sie eine iCalendar-Datei mit den aktualisiereten Termindaten. Diese können Sie in Ihre Kalenderanwendung importieren.";
|
||||
$labels['eventupdatemailbody'] = "*$title*
|
||||
Wann: $date
|
||||
Teilnehmer: $attendees
|
||||
Im Anhang finden Sie eine iCalendar-Datei mit den aktualisiereten Termindaten. Diese können Sie in Ihre Kalenderanwendung importieren.";
|
||||
$labels['eventcancelsubject'] = '»$title« wurde abgesagt';
|
||||
$labels['eventcancelmailbody'] = "*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees\n\nDer Termin wurde von \$organizer abgesagt.\n\nIm Anhang finden Sie eine iCalendar-Datei mit den Termindaten.";
|
||||
$labels['eventcancelmailbody'] = "*$title*
|
||||
Wann: $date
|
||||
Teilnehmer: $attendees
|
||||
Der Termin wurde von $organizer abgesagt.
|
||||
Im Anhang finden Sie eine iCalendar-Datei mit den Termindaten.";
|
||||
$labels['itipobjectnotfound'] = 'Der Termin auf den sich diese Nachricht bezieht, wurde in Ihrem Kalender nicht gefunden.';
|
||||
$labels['itipmailbodyaccepted'] = "\$sender hat die Einladung zum folgenden Termin angenommen:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
|
||||
$labels['itipmailbodytentative'] = "\$sender hat die Einladung mit Vorbehalt zum folgenden Termin angenommen:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
|
||||
$labels['itipmailbodydeclined'] = "\$sender hat die Einladung zum folgenden Termin abgelehnt:\n\n*\$title*\n\nWann: \$date\n\nTeilnehmer: \$attendees";
|
||||
$labels['itipmailbodycancel'] = "\$sender hat Ihre Teilnahme bei der folgenden Veranstaltung zurückgewiesen:\n\n*\$title*\n\nWann: \$date";
|
||||
$labels['itipmailbodydelegated'] = "\$sender hat die Teilnahme an folgendem Event delegiert:\n\n*\$title*\n\nWhen: \$date";
|
||||
$labels['itipmailbodydelegatedto'] = "\$sender hat die Teilnahme an folgendem Event an Sie delegiert:\n\n*\$title*\n\nWann: \$date";
|
||||
$labels['itipmailbodyaccepted'] = "$sender hat die Einladung zum folgenden Termin angenommen:
|
||||
*$title*
|
||||
Wann: $date
|
||||
Teilnehmer: $attendees";
|
||||
$labels['itipmailbodytentative'] = "$sender hat die Einladung mit Vorbehalt zum folgenden Termin angenommen:
|
||||
*$title*
|
||||
Wann: $date
|
||||
Teilnehmer: $attendees";
|
||||
$labels['itipmailbodydeclined'] = "$sender hat die Einladung zum folgenden Termin abgelehnt:
|
||||
*$title*
|
||||
Wann: $date
|
||||
Teilnehmer: $attendees";
|
||||
$labels['itipmailbodycancel'] = "$sender hat Ihre Teilnahme bei der folgenden Veranstaltung zurückgewiesen:
|
||||
*$title*
|
||||
Wann: $date";
|
||||
$labels['itipmailbodydelegated'] = "$sender hat die Teilnahme an folgendem Event delegiert:
|
||||
*$title*
|
||||
When: $date";
|
||||
$labels['itipmailbodydelegatedto'] = "$sender hat die Teilnahme an folgendem Event an Sie delegiert:
|
||||
*$title*
|
||||
Wann: $date";
|
||||
$labels['itipdeclineevent'] = 'Möchten Sie die Einladung zu diesem Termin ablehnen?';
|
||||
$labels['declinedeleteconfirm'] = 'Soll der abgelehnte Termin zusätzlich aus dem Kalender gelöscht werden?';
|
||||
$labels['itipcomment'] = 'Kommentar zur Einladungs-/Benachrichtigungsnachricht';
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
*/
|
||||
$labels['default_view'] = 'Προεπιλεγμένη προβολή';
|
||||
$labels['time_format'] = 'Μορφή ώρας';
|
||||
$labels['first_day'] = 'Πρώτη ημέρα της εβδομάδας';
|
||||
$labels['workinghours'] = 'Ώρες εργασίας';
|
||||
$labels['add_category'] = 'Προσθήκη κατηγορίας';
|
||||
$labels['remove_category'] = 'Αφαίρεση κατηγορίας';
|
||||
|
@ -25,7 +26,6 @@ $labels['calendars'] = 'Ημερολόγια';
|
|||
$labels['category'] = 'Κατηγορία';
|
||||
$labels['categories'] = 'Κατηγορίες';
|
||||
$labels['createcalendar'] = 'Δημιουργία νέου ημερολογίου';
|
||||
$labels['editcalendar'] = 'Επεξεργασία ιδιοτήτων ημερολογίου';
|
||||
$labels['name'] = 'Όνομα';
|
||||
$labels['color'] = 'Χρώμα';
|
||||
$labels['day'] = 'Ημέρα';
|
||||
|
|
|
@ -32,14 +32,20 @@ $labels['afterflagdeleted'] = 'Flag as deleted';
|
|||
$labels['aftermoveto'] = 'Move to...';
|
||||
$labels['itipoptions'] = 'Event Invitations';
|
||||
$labels['afteraction'] = 'After an invitation or update message is processed';
|
||||
$labels['showweekno'] = 'Display week numbers';
|
||||
$labels['weeknonone'] = 'never';
|
||||
$labels['weeknodatepicker'] = 'in datepicker only';
|
||||
$labels['weeknoall'] = 'in datepicker and calendar view';
|
||||
|
||||
// calendar
|
||||
$labels['calendar'] = 'Calendar';
|
||||
$labels['calendars'] = 'Calendars';
|
||||
$labels['category'] = 'Category';
|
||||
$labels['categories'] = 'Categories';
|
||||
$labels['addcalendar'] = 'Add calendar';
|
||||
$labels['createcalendar'] = 'Create new calendar';
|
||||
$labels['editcalendar'] = 'Edit calendar properties';
|
||||
$labels['editcalendar'] = 'Edit/Share calendar';
|
||||
$labels['deletecalendar'] = 'Delete calendar';
|
||||
$labels['name'] = 'Name';
|
||||
$labels['color'] = 'Color';
|
||||
$labels['day'] = 'Day';
|
||||
|
@ -102,6 +108,8 @@ $labels['printdescriptions'] = 'Print descriptions';
|
|||
$labels['parentcalendar'] = 'Insert inside';
|
||||
$labels['searchearlierdates'] = '« Search for earlier events';
|
||||
$labels['searchlaterdates'] = 'Search for later events »';
|
||||
$labels['earlierevents'] = 'Earlier';
|
||||
$labels['laterevents'] = 'Later';
|
||||
$labels['andnmore'] = '$nr more...';
|
||||
$labels['togglerole'] = 'Click to toggle role';
|
||||
$labels['createfrommail'] = 'Save as event';
|
||||
|
@ -116,6 +124,7 @@ $labels['showfburl'] = 'Show free-busy URL';
|
|||
$labels['fburldescription'] = 'Use the following address to access Free-Busy information from other applications. You can copy and paste this into any calendar software that supports free-busy information in iCal format. No authentication is required for this URL.';
|
||||
$labels['findcalendars'] = 'Find calendars...';
|
||||
$labels['searchterms'] = 'Search terms';
|
||||
$labels['findevents'] = 'Find events';
|
||||
$labels['calsearchresults'] = 'Available Calendars';
|
||||
$labels['calendarsubscribe'] = 'List permanently';
|
||||
$labels['nocalendarsfound'] = 'No calendars found';
|
||||
|
@ -126,6 +135,7 @@ $labels['invitationsdeclined'] = 'Declined invitations';
|
|||
$labels['changepartstat'] = 'Change participant status';
|
||||
$labels['rsvpcomment'] = 'Invitation text';
|
||||
$labels['eventstartsync'] = 'Move the event start date to the first occurrence';
|
||||
$labels['weekshort'] = 'Wk';
|
||||
|
||||
// agenda view
|
||||
$labels['listrange'] = 'Range to display:';
|
||||
|
@ -179,7 +189,7 @@ $labels['nextslot'] = 'Next Slot';
|
|||
$labels['suggestedslot'] = 'Suggested Slot';
|
||||
$labels['noslotfound'] = 'Unable to find a free time slot';
|
||||
$labels['invitationsubject'] = 'You\'ve been invited to "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nPlease find attached an iCalendar file with all the event details which you can import to your calendar application.";
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\n\$description\n\nPlease find attached an iCalendar file with all the event details which you can import to your calendar application.";
|
||||
$labels['invitationattendlinks'] = "In case your email client doesn't support iTip requests you can use the following link to either accept or decline this invitation:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" has been updated';
|
||||
$labels['eventupdatesubjectempty'] = 'An event that concerns you has been updated';
|
||||
|
@ -210,6 +220,7 @@ $labels['savetocalendar'] = 'Save to calendar';
|
|||
$labels['openpreview'] = 'Check Calendar';
|
||||
$labels['noearlierevents'] = 'No earlier events';
|
||||
$labels['nolaterevents'] = 'No later events';
|
||||
$labels['legend'] = 'Legend';
|
||||
|
||||
// resources
|
||||
$labels['resource'] = 'Resource';
|
||||
|
@ -217,6 +228,7 @@ $labels['addresource'] = 'Book resource';
|
|||
$labels['findresources'] = 'Find resources';
|
||||
$labels['resourcedetails'] = 'Details';
|
||||
$labels['resourceavailability'] = 'Availability';
|
||||
$labels['resourceprops'] = 'Resource properties';
|
||||
$labels['resourceowner'] = 'Owner';
|
||||
$labels['resourceadded'] = 'The resource was added to your event';
|
||||
|
||||
|
@ -237,6 +249,7 @@ $labels['savingdata'] = 'Saving data...';
|
|||
$labels['errorsaving'] = 'Failed to save changes.';
|
||||
$labels['operationfailed'] = 'The requested operation failed.';
|
||||
$labels['invalideventdates'] = 'Invalid dates entered! Please check your input.';
|
||||
$labels['emptyeventtitle'] = 'Event summary cannot be empty.';
|
||||
$labels['invalidcalendarproperties'] = 'Invalid calendar properties! Please set a valid name.';
|
||||
$labels['searchnoresults'] = 'No events found in the selected calendars.';
|
||||
$labels['successremoval'] = 'The event has been deleted successfully.';
|
||||
|
@ -249,6 +262,7 @@ $labels['nowritecalendarfound'] = 'No calendar found to save the event';
|
|||
$labels['importedsuccessfully'] = 'The event was successfully added to \'$calendar\'';
|
||||
$labels['updatedsuccessfully'] = 'The event was successfully updated in \'$calendar\'';
|
||||
$labels['attendeupdateesuccess'] = 'Successfully updated the participant\'s status';
|
||||
$labels['errorunknownattendee'] = 'Failed to find the participant information.';
|
||||
$labels['itipsendsuccess'] = 'Invitation sent to participants.';
|
||||
$labels['itipresponseerror'] = 'Failed to send the response to this event invitation';
|
||||
$labels['itipinvalidrequest'] = 'This invitation is no longer valid';
|
||||
|
@ -258,6 +272,7 @@ $labels['importsuccess'] = 'Successfully imported $nr events';
|
|||
$labels['importnone'] = 'No events found to be imported';
|
||||
$labels['importerror'] = 'An error occured while importing';
|
||||
$labels['aclnorights'] = 'You do not have administrator rights on this calendar.';
|
||||
$labels['importtext'] = 'You can upload events in <a href="https://wikipedia.org/wiki/ICalendar">iCalendar</a> format (.ics).';
|
||||
|
||||
$labels['changeeventconfirm'] = 'Change event';
|
||||
$labels['removeeventconfirm'] = 'Delete event';
|
||||
|
@ -288,7 +303,6 @@ $labels['revisionrestoreconfirm'] = 'Do you really want to restore revision $rev
|
|||
$labels['objectrestoresuccess'] = 'Revision $rev successfully restored';
|
||||
$labels['objectrestoreerror'] = 'Failed to restore the old revision';
|
||||
|
||||
|
||||
// (hidden) titles and labels for accessibility annotations
|
||||
$labels['arialabelminical'] = 'Calendar date selection';
|
||||
$labels['arialabelcalendarview'] = 'Calendar view';
|
||||
|
@ -296,9 +310,11 @@ $labels['arialabelsearchform'] = 'Event search form';
|
|||
$labels['arialabelquicksearchbox'] = 'Event search input';
|
||||
$labels['arialabelcalsearchform'] = 'Calendars search form';
|
||||
$labels['calendaractions'] = 'Calendar actions';
|
||||
$labels['calendarprops'] = 'Calendar properties';
|
||||
$labels['arialabeleventattendees'] = 'Event participants list';
|
||||
$labels['arialabeleventresources'] = 'Event resources list';
|
||||
$labels['arialabelresourcesearchform'] = 'Resources search form';
|
||||
$labels['arialabelresourceselection'] = 'Available resources';
|
||||
$labels['arialabeleventform'] = 'Event editing form';
|
||||
|
||||
?>
|
||||
|
|
|
@ -27,12 +27,13 @@ $labels['afterflagdeleted'] = 'Marcar como eliminado';
|
|||
$labels['aftermoveto'] = 'Mover a...';
|
||||
$labels['itipoptions'] = 'Invitaciones del evento';
|
||||
$labels['afteraction'] = 'Luego que una invitación o actualización de mensaje es procesado';
|
||||
$labels['weeknonone'] = 'nunca';
|
||||
$labels['calendar'] = 'Calendario';
|
||||
$labels['calendars'] = 'Calendarios';
|
||||
$labels['category'] = 'Categoría';
|
||||
$labels['categories'] = 'Categorías';
|
||||
$labels['addcalendar'] = 'Agregar calendario';
|
||||
$labels['createcalendar'] = 'Crear nuevo calendario';
|
||||
$labels['editcalendar'] = 'Editar propiedades del calendario';
|
||||
$labels['name'] = 'Nombre';
|
||||
$labels['color'] = 'Color';
|
||||
$labels['day'] = 'Día';
|
||||
|
@ -75,6 +76,7 @@ $labels['mystatus'] = 'Mi estado';
|
|||
$labels['status'] = 'Estado';
|
||||
$labels['status-confirmed'] = 'Confirmado';
|
||||
$labels['status-cancelled'] = 'Cancelado';
|
||||
$labels['status-tentative'] = 'Tentativo';
|
||||
$labels['priority'] = 'Prioridad';
|
||||
$labels['sensitivity'] = 'Privacidad';
|
||||
$labels['public'] = 'público';
|
||||
|
@ -94,6 +96,8 @@ $labels['printdescriptions'] = 'Imprimir descripciones';
|
|||
$labels['parentcalendar'] = 'Insertar dentro';
|
||||
$labels['searchearlierdates'] = '« Buscar eventos anteriores';
|
||||
$labels['searchlaterdates'] = 'Buscar eventos posteriores »';
|
||||
$labels['earlierevents'] = 'Anteriormente';
|
||||
$labels['laterevents'] = 'Luego';
|
||||
$labels['andnmore'] = '$nr más...';
|
||||
$labels['togglerole'] = 'Click para cambiar rol';
|
||||
$labels['createfrommail'] = 'Guardar como evento';
|
||||
|
@ -104,8 +108,11 @@ $labels['nmonthsback'] = '$nr meses atrás';
|
|||
$labels['showurl'] = 'Mostrar URL del calendario';
|
||||
$labels['showurldescription'] = 'Use la siguiente direccion para acceder (sólo lectura) a su calendario desde otras aplicaciones. Puede copiar y pegar esto dentro de cualquier software de calendario que soporte el formato iCal.';
|
||||
$labels['caldavurldescription'] = 'Copie esta direccion a su aplicación cliente <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> (por ejemplo, Evolution o Mozilla Thunderbird) para sincronizar completamente este calendario específico con su ordenador o dispositivo móvil.';
|
||||
$labels['showfburl'] = 'Mostrar URL libre-ocupado';
|
||||
$labels['fburldescription'] = 'Use la siguiente dirección para acceder a la información Libre-Ocupado desde otras aplicaciones. Puede copiar y pegar esto dentro de cualquier software que soporte información libre-ocupado en el formato iCal. No se requiere autenticación para esta URL.';
|
||||
$labels['findcalendars'] = 'Encontrar calendarios...';
|
||||
$labels['searchterms'] = 'Buscar términos';
|
||||
$labels['findevents'] = 'Encontrar eventos';
|
||||
$labels['calsearchresults'] = 'Calendarios disponibles';
|
||||
$labels['calendarsubscribe'] = 'Listar permanentemente';
|
||||
$labels['nocalendarsfound'] = 'No se encontraron calendarios';
|
||||
|
@ -115,6 +122,7 @@ $labels['invitationspending'] = 'Invitaciones pendientes';
|
|||
$labels['invitationsdeclined'] = 'Invitaciones rechazadas';
|
||||
$labels['changepartstat'] = 'Cambiar el estado del participante';
|
||||
$labels['rsvpcomment'] = 'Texto de invitación';
|
||||
$labels['eventstartsync'] = 'Mover la fecha de inicio del evento a la primera ocurrencia';
|
||||
$labels['listrange'] = 'Rango a mostrar:';
|
||||
$labels['listsections'] = 'Dividir en:';
|
||||
$labels['smartsections'] = 'Secciones inteligentes';
|
||||
|
@ -151,8 +159,6 @@ $labels['availbusy'] = 'Ocupado';
|
|||
$labels['availunknown'] = 'Desconocido';
|
||||
$labels['availtentative'] = 'Tentativo';
|
||||
$labels['availoutofoffice'] = 'Fuera de la oficina';
|
||||
$labels['delegatedto'] = 'Delegado a:';
|
||||
$labels['delegatedfrom'] = 'Delegado de:';
|
||||
$labels['scheduletime'] = 'Buscar disponibilidad';
|
||||
$labels['sendinvitations'] = 'Enviar invitaciones';
|
||||
$labels['sendnotifications'] = 'Notificar a los participantes sobre las modificaciones';
|
||||
|
@ -164,7 +170,7 @@ $labels['nextslot'] = 'Espacio siguiente';
|
|||
$labels['suggestedslot'] = 'Espacio sugerido';
|
||||
$labels['noslotfound'] = 'Imposible encontrar un espacio libre';
|
||||
$labels['invitationsubject'] = 'Ha sido invitado a "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nCuándo: \$date\n\nInvitados: \$attendees\n\nEncontrará adjunto un archivo iCalendar con todos los detalles del evento, el cual puede importar a su aplicación de calendario.";
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nCuándo: \$date\n\nInvitados: \$attendees\n\n\$description\n\nEncontrará adjunto un archivo iCalendar con todos los detalles del evento, el cual puede importar a su aplicación de calendario.";
|
||||
$labels['invitationattendlinks'] = "En caso que su cliente de correo electrónico no soporte peticiones iTip puede usar el siguiente link para aceptar o declinar esta invitación:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" ha sido actualizado';
|
||||
$labels['eventupdatesubjectempty'] = 'Un evento que le interesa ha sido actualizado';
|
||||
|
@ -190,11 +196,13 @@ $labels['savetocalendar'] = 'Guardar en el calendario';
|
|||
$labels['openpreview'] = 'Comprobar Calendario';
|
||||
$labels['noearlierevents'] = 'No hay eventos anteriores';
|
||||
$labels['nolaterevents'] = 'No hay eventos posteriores';
|
||||
$labels['legend'] = 'Leyenda';
|
||||
$labels['resource'] = 'Recurso';
|
||||
$labels['addresource'] = 'Agendar recurso';
|
||||
$labels['findresources'] = 'Encontrar recursos';
|
||||
$labels['resourcedetails'] = 'Detalles';
|
||||
$labels['resourceavailability'] = 'Disponibilidad';
|
||||
$labels['resourceprops'] = 'Propiedades del recurso';
|
||||
$labels['resourceowner'] = 'Propietario';
|
||||
$labels['resourceadded'] = 'El recurso fue agregado a su evento';
|
||||
$labels['tabsummary'] = 'Sumario';
|
||||
|
@ -223,6 +231,7 @@ $labels['nowritecalendarfound'] = 'No hay calendarios para guardar el evento.';
|
|||
$labels['importedsuccessfully'] = 'El evento fue guardado en \'$calendar\' exitosamente';
|
||||
$labels['updatedsuccessfully'] = 'El evento fue actualizado exitosamente en \'$calendar\'';
|
||||
$labels['attendeupdateesuccess'] = 'Se actualizaron los estados de los participantes exitosamente';
|
||||
$labels['errorunknownattendee'] = 'Fallo al encontrar la información de los participantes.';
|
||||
$labels['itipsendsuccess'] = 'Invitaciones enviadas a los participantes.';
|
||||
$labels['itipresponseerror'] = 'Fallo enviando la respuesta a la invitación de este evento';
|
||||
$labels['itipinvalidrequest'] = 'Esta invitación no es válida';
|
||||
|
@ -232,6 +241,7 @@ $labels['importsuccess'] = 'Importados $nr eventos exitosamente';
|
|||
$labels['importnone'] = 'No se importaron eventos';
|
||||
$labels['importerror'] = 'Fallo al importar';
|
||||
$labels['aclnorights'] = 'No tiene permisos de administrador en este calendario.';
|
||||
$labels['importtext'] = 'Puede subir eventos en formato <a href="https://wikipedia.org/wiki/ICalendar">iCalendar</a> (.ics)';
|
||||
$labels['changeeventconfirm'] = 'Cambiar evento';
|
||||
$labels['removeeventconfirm'] = 'Eliminar evento';
|
||||
$labels['changerecurringeventwarning'] = 'Este es un evento recurrente. ¿Desea editar solo el evento actual, este y las ocurrencias futuras, todas las ocurrencias o guardarlo como un evento nuevo?';
|
||||
|
@ -241,6 +251,7 @@ $labels['currentevent'] = 'Actual';
|
|||
$labels['futurevents'] = 'Futuro';
|
||||
$labels['allevents'] = 'Todos';
|
||||
$labels['saveasnew'] = 'Guardar como nuevo';
|
||||
$labels['recurrenceerror'] = 'Imposible de resolver la regla de recurrencia para la fecha de inicio especificada.';
|
||||
$labels['birthdays'] = 'Cumpleaños';
|
||||
$labels['birthdayscalendar'] = 'Calendario de cumpleaños';
|
||||
$labels['displaybirthdayscalendar'] = 'Mostrar calendario de cumpleaños';
|
||||
|
@ -261,8 +272,10 @@ $labels['arialabelsearchform'] = 'Formulario de búsqueda de evento';
|
|||
$labels['arialabelquicksearchbox'] = 'Entrada de búsqueda de evento';
|
||||
$labels['arialabelcalsearchform'] = 'Formulario de búsqueda de calendario';
|
||||
$labels['calendaractions'] = 'Acciones del calendario';
|
||||
$labels['calendarprops'] = 'Propiedades del calendario';
|
||||
$labels['arialabeleventattendees'] = 'Lista de participantes del evento';
|
||||
$labels['arialabeleventresources'] = 'Lista de recursos del evento';
|
||||
$labels['arialabelresourcesearchform'] = 'Formulario de búsqueda de recursos';
|
||||
$labels['arialabelresourceselection'] = 'Recursos disponibles';
|
||||
$labels['arialabeleventform'] = 'Formulario de edición de evento';
|
||||
?>
|
||||
|
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = 'Marcar como eliminado';
|
|||
$labels['aftermoveto'] = 'Mover a...';
|
||||
$labels['itipoptions'] = 'Invitaciones para el evento';
|
||||
$labels['afteraction'] = 'Se procesa después de un mensaje de invitación o actualización';
|
||||
$labels['weeknonone'] = 'never';
|
||||
$labels['calendar'] = 'Calendario';
|
||||
$labels['calendars'] = 'Calendarios';
|
||||
$labels['category'] = 'Categoría';
|
||||
$labels['categories'] = 'Categorías';
|
||||
$labels['createcalendar'] = 'Crear nuevo calendario';
|
||||
$labels['editcalendar'] = 'Editar propiedades del calendario';
|
||||
$labels['name'] = 'Nombre';
|
||||
$labels['color'] = 'Color';
|
||||
$labels['day'] = 'Día';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'Mi estado';
|
|||
$labels['status'] = 'Estado';
|
||||
$labels['status-confirmed'] = 'Confirmado';
|
||||
$labels['status-cancelled'] = 'Cancelado';
|
||||
$labels['status-tentative'] = 'Provisional';
|
||||
$labels['priority'] = 'Prioridad';
|
||||
$labels['sensitivity'] = 'Privacidad';
|
||||
$labels['public'] = 'Pública';
|
||||
|
@ -94,6 +95,7 @@ $labels['printdescriptions'] = 'Imprimir descripción ';
|
|||
$labels['parentcalendar'] = 'Inserte en el interior';
|
||||
$labels['searchearlierdates'] = '« Búsqueda de eventos anteriores';
|
||||
$labels['searchlaterdates'] = 'Búsqueda de eventos posteriores »';
|
||||
$labels['laterevents'] = 'Luego';
|
||||
$labels['andnmore'] = '$nr más...';
|
||||
$labels['togglerole'] = 'Haga clic para cambiar el rol';
|
||||
$labels['createfrommail'] = 'Guardar como evento';
|
||||
|
@ -151,8 +153,6 @@ $labels['availbusy'] = 'Ocupado';
|
|||
$labels['availunknown'] = 'Desconocido';
|
||||
$labels['availtentative'] = 'Provisional';
|
||||
$labels['availoutofoffice'] = 'Fuera de la oficina';
|
||||
$labels['delegatedto'] = 'Delegar a: ';
|
||||
$labels['delegatedfrom'] = 'Delegado de:';
|
||||
$labels['scheduletime'] = 'Buscar disponibilidad';
|
||||
$labels['sendinvitations'] = 'Enviar invitaciones';
|
||||
$labels['sendnotifications'] = 'Notificar a los participantes acerca de las modificaciones';
|
||||
|
@ -164,7 +164,6 @@ $labels['nextslot'] = 'Siguiente ranura';
|
|||
$labels['suggestedslot'] = 'Ranura sugerida';
|
||||
$labels['noslotfound'] = 'Incapaz de encontrar un intervalo de tiempo libre';
|
||||
$labels['invitationsubject'] = 'Usted sido invitado a "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nSe adjunta un archivo iCalendar con todos los detalles del evento que se puede importar a la aplicación de calendario.";
|
||||
$labels['invitationattendlinks'] = "En caso de que su cliente de correo electrónico no admite solicitudes iTIP que puede utilizar el siguiente enlace para aceptar o rechazar esta invitación:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" Ha sido actualizado';
|
||||
$labels['eventupdatesubjectempty'] = 'Un evento que le concierne ha sido actualizado';
|
||||
|
|
163
localization/et_EE.inc
Normal file
|
@ -0,0 +1,163 @@
|
|||
<?php
|
||||
/**
|
||||
* Localizations for Kolab Calendar plugin
|
||||
*
|
||||
* Copyright (C) 2014, Kolab Systems AG
|
||||
*
|
||||
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
|
||||
*/
|
||||
$labels['default_view'] = 'Vaikimisi vaade';
|
||||
$labels['time_format'] = 'Kellaaja vorming';
|
||||
$labels['first_day'] = 'Esimene nädala päev';
|
||||
$labels['first_hour'] = 'Esimene tund, mida näidata';
|
||||
$labels['workinghours'] = 'Töötunnid';
|
||||
$labels['add_category'] = 'Lisa kategooria';
|
||||
$labels['remove_category'] = 'Eemalda kategooria';
|
||||
$labels['eventcoloring'] = 'Ürituste värv';
|
||||
$labels['coloringmode0'] = 'Vastavalt kalendrile';
|
||||
$labels['coloringmode1'] = 'Vastavalt kategooriale';
|
||||
$labels['afternothing'] = 'Ära tee midagi';
|
||||
$labels['aftertrash'] = 'Liiguta prügikasti';
|
||||
$labels['aftermoveto'] = 'Liiguta...';
|
||||
$labels['weeknonone'] = 'mitte kunagi';
|
||||
$labels['calendar'] = 'Kalender';
|
||||
$labels['calendars'] = 'Kalendrid';
|
||||
$labels['category'] = 'Kategooria';
|
||||
$labels['categories'] = 'Kategooriad';
|
||||
$labels['addcalendar'] = 'Lisa kalender';
|
||||
$labels['createcalendar'] = 'Loo uus kalender';
|
||||
$labels['name'] = 'Nimi';
|
||||
$labels['color'] = 'Värv';
|
||||
$labels['day'] = 'Päev';
|
||||
$labels['week'] = 'Nädal';
|
||||
$labels['month'] = 'Kuu';
|
||||
$labels['agenda'] = 'Ajakava';
|
||||
$labels['new'] = 'Uus';
|
||||
$labels['new_event'] = 'Uus sündmus';
|
||||
$labels['edit_event'] = 'Muuda sündmust';
|
||||
$labels['edit'] = 'Muuda';
|
||||
$labels['save'] = 'Salvesta';
|
||||
$labels['removelist'] = 'Eemalda nimekirjast';
|
||||
$labels['cancel'] = 'Loobu';
|
||||
$labels['select'] = 'Vali';
|
||||
$labels['print'] = 'Prindi';
|
||||
$labels['printtitle'] = 'Prindi kalendrid';
|
||||
$labels['title'] = 'Kokkuvõte';
|
||||
$labels['description'] = 'Kirjeldus';
|
||||
$labels['all-day'] = 'kogu-päev';
|
||||
$labels['export'] = 'Ekspordi';
|
||||
$labels['exporttitle'] = 'Ekspordi iCalendar-isse';
|
||||
$labels['exportattachments'] = 'Manusega';
|
||||
$labels['location'] = 'Asukoht';
|
||||
$labels['url'] = 'URL';
|
||||
$labels['date'] = 'Kuupäev';
|
||||
$labels['start'] = 'Algus';
|
||||
$labels['starttime'] = 'Alustamise aeg';
|
||||
$labels['end'] = 'Lõpp';
|
||||
$labels['endtime'] = 'Lõpu aeg';
|
||||
$labels['repeat'] = 'Kordamine';
|
||||
$labels['selectdate'] = 'Vali kuupäev';
|
||||
$labels['freebusy'] = 'Näita mulle kui';
|
||||
$labels['free'] = 'Vaba';
|
||||
$labels['busy'] = 'Hõivatud';
|
||||
$labels['outofoffice'] = 'Pole kontoris';
|
||||
$labels['mystatus'] = 'Minu staatus';
|
||||
$labels['status'] = 'Staatus';
|
||||
$labels['status-confirmed'] = 'Kinnitatud';
|
||||
$labels['status-cancelled'] = 'Tühistatud';
|
||||
$labels['priority'] = 'Tähtsus';
|
||||
$labels['sensitivity'] = 'Privaatsus';
|
||||
$labels['public'] = 'avalik';
|
||||
$labels['private'] = 'privaatne';
|
||||
$labels['confidential'] = 'konfidentsiaalne';
|
||||
$labels['links'] = 'Viide';
|
||||
$labels['alarms'] = 'Meeldetuletus';
|
||||
$labels['comment'] = 'Kommenteeri';
|
||||
$labels['created'] = 'Loodud';
|
||||
$labels['changed'] = 'Viimati muudetud';
|
||||
$labels['unknown'] = 'Teadmata';
|
||||
$labels['eventoptions'] = 'Valikud';
|
||||
$labels['eventhistory'] = 'Ajalugu';
|
||||
$labels['printdescriptions'] = 'Prindi kirjeldused';
|
||||
$labels['parentcalendar'] = 'Sisesta';
|
||||
$labels['earlierevents'] = 'Varem';
|
||||
$labels['laterevents'] = 'Hiljem';
|
||||
$labels['andnmore'] = 'veel $nr ...';
|
||||
$labels['createfrommail'] = 'Salvesta sündmusena';
|
||||
$labels['importevents'] = 'Impordi sündmuseid';
|
||||
$labels['onemonthback'] = '1 kuu tagasi';
|
||||
$labels['nmonthsback'] = '$nr kuud tagasi';
|
||||
$labels['showurl'] = 'Näita kalendri URL-i';
|
||||
$labels['calsearchresults'] = 'Saadaolevad kalendrid';
|
||||
$labels['nocalendarsfound'] = 'Ühtegi kalendrit ei leitud';
|
||||
$labels['nrcalendarsfound'] = 'Leiti $nr kalendrit';
|
||||
$labels['quickview'] = 'Vaata ainult seda kalendrit';
|
||||
$labels['rsvpcomment'] = 'Kutse tekst';
|
||||
$labels['until'] = 'kuni';
|
||||
$labels['today'] = 'Täna';
|
||||
$labels['tomorrow'] = 'Homme';
|
||||
$labels['thisweek'] = 'See nädal';
|
||||
$labels['nextweek'] = 'Järgmine nädal';
|
||||
$labels['prevweek'] = 'Eelmine nädal';
|
||||
$labels['thismonth'] = 'Sellel kuul';
|
||||
$labels['nextmonth'] = 'Järgmisel kuul';
|
||||
$labels['weekofyear'] = 'NädalNädal';
|
||||
$labels['pastevents'] = 'Minevikus';
|
||||
$labels['futureevents'] = 'Tulevikus';
|
||||
$labels['showalarms'] = 'Näita meeldetuletusi';
|
||||
$labels['attendee'] = 'Osaleja';
|
||||
$labels['role'] = 'Roll';
|
||||
$labels['availability'] = 'Saadaval';
|
||||
$labels['confirmstate'] = 'Steatus';
|
||||
$labels['addattendee'] = 'Lisa osaleja';
|
||||
$labels['roleorganizer'] = 'Organiseerija';
|
||||
$labels['rolerequired'] = 'Nõutud';
|
||||
$labels['roleoptional'] = 'Valikuline';
|
||||
$labels['cutypegroup'] = 'Grupp';
|
||||
$labels['cutyperesource'] = 'Ressurss';
|
||||
$labels['cutyperoom'] = 'Ruum';
|
||||
$labels['availfree'] = 'Vaba';
|
||||
$labels['availbusy'] = 'Hõivatud';
|
||||
$labels['availunknown'] = 'Teadmata';
|
||||
$labels['availoutofoffice'] = 'Pole kontoris';
|
||||
$labels['sendinvitations'] = 'Saada kutsed';
|
||||
$labels['prevslot'] = 'Eelmine koht';
|
||||
$labels['nextslot'] = 'Järgmine koht';
|
||||
$labels['suggestedslot'] = 'Soovitatud koht';
|
||||
$labels['updatemycopy'] = 'Uuenda minu kalendrid';
|
||||
$labels['savetocalendar'] = 'Salvesta kalendrisse';
|
||||
$labels['openpreview'] = 'Kontrolli kalendrit';
|
||||
$labels['legend'] = 'Märgistus';
|
||||
$labels['resource'] = 'Ressurss';
|
||||
$labels['resourcedetails'] = 'Üksikasjad';
|
||||
$labels['resourceavailability'] = 'Saadavus';
|
||||
$labels['resourceowner'] = 'Omanik';
|
||||
$labels['tabsummary'] = 'Kokkuvõte';
|
||||
$labels['tabrecurrence'] = 'Kordumine';
|
||||
$labels['tabattendees'] = 'Osalejad';
|
||||
$labels['tabresources'] = 'Ressursid';
|
||||
$labels['tabattachments'] = 'Manused';
|
||||
$labels['tabsharing'] = 'Jagamine';
|
||||
$labels['deleteobjectconfirm'] = 'Kas sa tõesti soovid seda sündmust kustutada?';
|
||||
$labels['deleteventconfirm'] = 'Kas sa tõesti soovid seda sündmust kustutada?';
|
||||
$labels['savingdata'] = 'Andmete salvestamine...';
|
||||
$labels['errorsaving'] = 'Muudatuste salvestamine ebaõnnestus.';
|
||||
$labels['errorimportingevent'] = 'Sündmuse importimine ebaõnnestus';
|
||||
$labels['nowritecalendarfound'] = 'Ei leitud ühtegi kalendrit kuhu sündmusi salvestada';
|
||||
$labels['itipinvalidrequest'] = 'See kutse ei kehti enam';
|
||||
$labels['importerror'] = 'Importimisel tekkis tõrge';
|
||||
$labels['changeeventconfirm'] = 'Muuda sündmust';
|
||||
$labels['removeeventconfirm'] = 'Kustuta sündmus';
|
||||
$labels['currentevent'] = 'Praegune';
|
||||
$labels['futurevents'] = 'TulevikusTulevane';
|
||||
$labels['allevents'] = 'Kõik';
|
||||
$labels['saveasnew'] = 'Salvesta uuena';
|
||||
$labels['birthdays'] = 'Sünnipäevad';
|
||||
$labels['birthdayscalendar'] = 'Sünnipäevade kalender';
|
||||
$labels['objectchangelog'] = 'Muuda ajalugu';
|
||||
$labels['objectdiff'] = 'Muudatused versioonide $rev1 ja $rev2 vahel';
|
||||
$labels['arialabelcalendarview'] = 'Kalendri vaade';
|
||||
$labels['calendaractions'] = 'Kalendri toimingud';
|
||||
$labels['calendarprops'] = 'Kalendri omadused';
|
||||
$labels['arialabelresourceselection'] = 'Saadaolevad ressursid';
|
||||
?>
|
|
@ -25,12 +25,18 @@ $labels['afterflagdeleted'] = 'Merkitse poistettavaksi';
|
|||
$labels['aftermoveto'] = 'Siirrä...';
|
||||
$labels['itipoptions'] = 'Tapahtuman kutsut';
|
||||
$labels['afteraction'] = 'Kun kutsu tai päivitysviesti on käsitelty';
|
||||
$labels['showweekno'] = 'Näytä viikkonumerot';
|
||||
$labels['weeknonone'] = 'ei koskaan';
|
||||
$labels['weeknodatepicker'] = 'vain päivävalitsimessa';
|
||||
$labels['weeknoall'] = 'päivävalitsimessa ja kalenterinäkymässä';
|
||||
$labels['calendar'] = 'Kalenteri';
|
||||
$labels['calendars'] = 'Kalenterit';
|
||||
$labels['category'] = 'Luokka';
|
||||
$labels['categories'] = 'Luokat';
|
||||
$labels['addcalendar'] = 'Lisää kalenteri';
|
||||
$labels['createcalendar'] = 'Luo uusi kalenteri';
|
||||
$labels['editcalendar'] = 'Muokkaa kalenterin ominaisuuksia';
|
||||
$labels['editcalendar'] = 'Muokkaa tai jaa kalenteri';
|
||||
$labels['deletecalendar'] = 'Poista kalenteri';
|
||||
$labels['name'] = 'Nimi';
|
||||
$labels['color'] = 'Väri';
|
||||
$labels['day'] = 'Päivä';
|
||||
|
@ -73,6 +79,7 @@ $labels['mystatus'] = 'Tilani';
|
|||
$labels['status'] = 'Tila';
|
||||
$labels['status-confirmed'] = 'Vahvistettu';
|
||||
$labels['status-cancelled'] = 'Peruttu';
|
||||
$labels['status-tentative'] = 'Alustava';
|
||||
$labels['priority'] = 'Tärkeys';
|
||||
$labels['sensitivity'] = 'Yksityisyys';
|
||||
$labels['public'] = 'julkinen';
|
||||
|
@ -92,6 +99,8 @@ $labels['printdescriptions'] = 'Tulosta kuvaukset';
|
|||
$labels['parentcalendar'] = 'Aseta sisään';
|
||||
$labels['searchearlierdates'] = '« Etsi aiempia tapahtumia';
|
||||
$labels['searchlaterdates'] = 'Etsi myöhempiä tapahtumia »';
|
||||
$labels['earlierevents'] = 'Aiemmin';
|
||||
$labels['laterevents'] = 'Myöhemmin';
|
||||
$labels['andnmore'] = '$nr lisää...';
|
||||
$labels['togglerole'] = 'Klikkaa vaihtaaksesi rooli';
|
||||
$labels['createfrommail'] = 'Tallenna tapahtumana';
|
||||
|
@ -104,6 +113,7 @@ $labels['showurldescription'] = 'Käytä seuraavia osoitteita avataksesi kalente
|
|||
$labels['caldavurldescription'] = 'Kopioi tämä osoite <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a-asiakassovellukseen (esim. Evolution tai Mozilla Thunderbird) synkronoidaksesi tämän kalenterin tietokoneesi tai mobiililaitteesi kanssa.';
|
||||
$labels['findcalendars'] = 'Etsi kalentereita...';
|
||||
$labels['searchterms'] = 'Hakuehdot';
|
||||
$labels['findevents'] = 'Etsi tapahtumia';
|
||||
$labels['calsearchresults'] = 'Saatavilla olevat kalenterit';
|
||||
$labels['calendarsubscribe'] = 'Luetteloi pysyvästi';
|
||||
$labels['nocalendarsfound'] = 'Kalentereita ei löytynyt';
|
||||
|
@ -113,6 +123,7 @@ $labels['invitationspending'] = 'Odottavat kutsut';
|
|||
$labels['invitationsdeclined'] = 'Torjutut kutsut';
|
||||
$labels['changepartstat'] = 'Muuta osallistujan tilaa';
|
||||
$labels['rsvpcomment'] = 'Kutsuteksti';
|
||||
$labels['weekshort'] = 'Vko';
|
||||
$labels['listrange'] = 'Näytettävä aikaväli';
|
||||
$labels['listsections'] = 'Jaa osiin:';
|
||||
$labels['smartsections'] = 'Älykkäät osiot';
|
||||
|
@ -149,8 +160,6 @@ $labels['availbusy'] = 'Varattu';
|
|||
$labels['availunknown'] = 'Tuntematon';
|
||||
$labels['availtentative'] = 'Alustava';
|
||||
$labels['availoutofoffice'] = 'Ei toimistolla';
|
||||
$labels['delegatedto'] = 'Delegoitu henkilölle:';
|
||||
$labels['delegatedfrom'] = 'Delegoitus henkilöltä:';
|
||||
$labels['scheduletime'] = 'Etsi saatavuus';
|
||||
$labels['sendinvitations'] = 'Lähetä kutsut';
|
||||
$labels['sendnotifications'] = 'Ilmoita osallistujille muutoksista';
|
||||
|
@ -162,7 +171,6 @@ $labels['nextslot'] = 'Seuraava ajankohta';
|
|||
$labels['suggestedslot'] = 'Ehdotettu ajankohta';
|
||||
$labels['noslotfound'] = 'Vapaata ajankohtaa ei löytynyt';
|
||||
$labels['invitationsubject'] = 'Sinut on kutsuttu tapahtumaan "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nMilloin: \$date\n\nKutsutut: \$attendees\n\nOhessa iCalendar -tiedosto mistä löytyvät kaikki tapahtuman yksityistiedot. Voit tuoda tämän tiedoston kalenteriohjelmaasi.";
|
||||
$labels['invitationattendlinks'] = "Mikäli sähköpostiohjelmasi ei tue iTip pyyntöjä, voit aina käyttää ao. osoitetta kutsun hyväksymiseen / hylkäämiseen:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" on päivitetty';
|
||||
$labels['eventupdatesubjectempty'] = 'Sinua koskeva tapahtuma on päivitetty';
|
||||
|
@ -193,6 +201,7 @@ $labels['addresource'] = 'Varaa resurssi';
|
|||
$labels['findresources'] = 'Etsi resursseja';
|
||||
$labels['resourcedetails'] = 'Tiedot';
|
||||
$labels['resourceavailability'] = 'Saatavuus';
|
||||
$labels['resourceprops'] = 'Resurssin ominaisuudet';
|
||||
$labels['resourceowner'] = 'Omistaja';
|
||||
$labels['resourceadded'] = 'Resurssi on liitetty tapahtumaasi';
|
||||
$labels['tabsummary'] = 'Yhteenveto';
|
||||
|
@ -209,6 +218,7 @@ $labels['savingdata'] = 'Tallennetaan tietoja...';
|
|||
$labels['errorsaving'] = 'Muutosten tallentaminen epäonnistui.';
|
||||
$labels['operationfailed'] = 'Pyydetty toiminto epäonnistui.';
|
||||
$labels['invalideventdates'] = 'Annettu virheellisiä päivämääriä! Tarkista syöte.';
|
||||
$labels['emptyeventtitle'] = 'Tapahtuman yhteenveto ei voi olla tyhjä.';
|
||||
$labels['invalidcalendarproperties'] = 'Kalenterin ominaisuudet ovat virheelliset. Aseta kelvollinen nimi.';
|
||||
$labels['searchnoresults'] = 'Valituista kalentereista ei löytynyt tapahtumia.';
|
||||
$labels['successremoval'] = 'Tapahtuma on poistettu onnistuneesti.';
|
||||
|
@ -221,6 +231,7 @@ $labels['nowritecalendarfound'] = 'Tapahtuman tallentamiseksi ei löytynyt kalen
|
|||
$labels['importedsuccessfully'] = 'Tapahtuma lisättiin onnistuneesti kalenteriin \'$calendar\'';
|
||||
$labels['updatedsuccessfully'] = 'Tapahtuma on onnistuneesti päivitetty kalenterissa \'$calendar\'';
|
||||
$labels['attendeupdateesuccess'] = 'Osallistujan tila päivitetty onnistuneesti';
|
||||
$labels['errorunknownattendee'] = 'Osallistujatietojen löytäminen epäonnistui.';
|
||||
$labels['itipsendsuccess'] = 'Kutsu lähetetty osallistujille.';
|
||||
$labels['itipresponseerror'] = 'Vastauksen lähettäminen tapahtumakutsuun epäonnistui';
|
||||
$labels['itipinvalidrequest'] = 'Kutsu ei ole enää kelvollinen';
|
||||
|
@ -230,6 +241,7 @@ $labels['importsuccess'] = '$nr tapahtumaa tuotiin onnistuneesti';
|
|||
$labels['importnone'] = 'Tuotavaksi tarkoitettuja tapahtumia ei löytynyt';
|
||||
$labels['importerror'] = 'Tuotaessa tapahtui virhe';
|
||||
$labels['aclnorights'] = 'Sinulla ei ole ylläpitäjän oikeuksia tähän kalenteriin.';
|
||||
$labels['importtext'] = 'Voit lähettää tapahtumia <a href="https://wikipedia.org/wiki/ICalendar">iCalendar</a>-muodossa (.ics).';
|
||||
$labels['changeeventconfirm'] = 'Vaihda tapahtuma';
|
||||
$labels['removeeventconfirm'] = 'Poista tapahtuma';
|
||||
$labels['changerecurringeventwarning'] = 'Tämä on tuistuva tapahtuma. Haluatko muokata vain tätä ajankohtaa, tätä ja tulevia tapahtuman ajankohtia, kaikkia tapahtuman ajankohtia vai tallentaa kokonaan uutena tapahtumana? ';
|
||||
|
@ -259,8 +271,10 @@ $labels['arialabelsearchform'] = 'Tapahtumahaun lomake';
|
|||
$labels['arialabelquicksearchbox'] = 'Tapatumahaun syöte';
|
||||
$labels['arialabelcalsearchform'] = 'Kalenterihakujen lomake';
|
||||
$labels['calendaractions'] = 'Kalenterin toiminnot';
|
||||
$labels['calendarprops'] = 'Kalenterin ominaisuudet';
|
||||
$labels['arialabeleventattendees'] = 'Tapahtuman osallistujalista';
|
||||
$labels['arialabeleventresources'] = 'Tapahtuman resurssilista';
|
||||
$labels['arialabelresourcesearchform'] = 'Resurssien hakulomake';
|
||||
$labels['arialabelresourceselection'] = 'Saatavilla olevat resurssit';
|
||||
$labels['arialabeleventform'] = 'Tapahtuman muokkauslomake';
|
||||
?>
|
||||
|
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = 'Marquer comme supprimer';
|
|||
$labels['aftermoveto'] = 'Déplacer vers...';
|
||||
$labels['itipoptions'] = 'Invitations à l\'événement';
|
||||
$labels['afteraction'] = 'Après une invitation ou une modification, le message est traité';
|
||||
$labels['weeknonone'] = 'jamais';
|
||||
$labels['calendar'] = 'Calendrier';
|
||||
$labels['calendars'] = 'Calendriers';
|
||||
$labels['category'] = 'Catégorie';
|
||||
$labels['categories'] = 'Catégories';
|
||||
$labels['createcalendar'] = 'Créer un nouveau calendrier';
|
||||
$labels['editcalendar'] = 'Modifier les propriétés du calendrier';
|
||||
$labels['name'] = 'Nom';
|
||||
$labels['color'] = 'Couleur';
|
||||
$labels['day'] = 'Jour';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'Mon statut';
|
|||
$labels['status'] = 'Statut';
|
||||
$labels['status-confirmed'] = 'Confirmé';
|
||||
$labels['status-cancelled'] = 'Annulé';
|
||||
$labels['status-tentative'] = 'Provisoire';
|
||||
$labels['priority'] = 'Priorité';
|
||||
$labels['sensitivity'] = 'Diffusion';
|
||||
$labels['public'] = 'publique';
|
||||
|
@ -94,6 +95,7 @@ $labels['printdescriptions'] = 'Imprimer les descriptions';
|
|||
$labels['parentcalendar'] = 'Ajouter à l\'intérieur';
|
||||
$labels['searchearlierdates'] = '« Chercher des événements plus anciens';
|
||||
$labels['searchlaterdates'] = 'Chercher des événement plus récents »';
|
||||
$labels['laterevents'] = 'Plus tard';
|
||||
$labels['andnmore'] = '$nr de plus...';
|
||||
$labels['togglerole'] = 'Cliquez pour changer de rôle';
|
||||
$labels['createfrommail'] = 'Enregistrer comme un événement';
|
||||
|
@ -151,8 +153,6 @@ $labels['availbusy'] = 'Occupé';
|
|||
$labels['availunknown'] = 'Inconnu';
|
||||
$labels['availtentative'] = 'Provisoire';
|
||||
$labels['availoutofoffice'] = 'Absent';
|
||||
$labels['delegatedto'] = 'Délégué à :';
|
||||
$labels['delegatedfrom'] = 'Délégué de :';
|
||||
$labels['scheduletime'] = 'Trouver les disponibilités';
|
||||
$labels['sendinvitations'] = 'Envoyer les invitations';
|
||||
$labels['sendnotifications'] = 'Informer les participants des modifications';
|
||||
|
@ -164,7 +164,6 @@ $labels['nextslot'] = 'Créneau suivant';
|
|||
$labels['suggestedslot'] = 'Emplacement suggéré';
|
||||
$labels['noslotfound'] = 'Impossible de trouver un créneau disponible';
|
||||
$labels['invitationsubject'] = 'Vous avez été invité à "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nQuand: \$date\n\nParticipants: \$attendees\n\nVous trouverez ci-joint un fichier iCalendar avec tous les détails de l'événement que vous pourrez importer dans votre calendrier électronique.";
|
||||
$labels['invitationattendlinks'] = "Dans le cas où votre application de messagerie ne gère pas les demandes \"iTip\", vous pouvez utiliser ce lien pour accepter ou refuser l'invitation : \n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" a été modifié';
|
||||
$labels['eventupdatesubjectempty'] = 'Un événement vous concernant a été modifié';
|
||||
|
|
24
localization/hr_HR.inc
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
/**
|
||||
* Localizations for Kolab Calendar plugin
|
||||
*
|
||||
* Copyright (C) 2014, Kolab Systems AG
|
||||
*
|
||||
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
|
||||
*/
|
||||
$labels['time_format'] = 'Format datuma';
|
||||
$labels['first_day'] = 'Prvi dan tjedna';
|
||||
$labels['first_hour'] = 'Prvi sat za prikaz';
|
||||
$labels['workinghours'] = 'Radni sati';
|
||||
$labels['add_category'] = 'Dodaj kategoriju';
|
||||
$labels['remove_category'] = 'Obriši kategoriju';
|
||||
$labels['defaultcalendar'] = 'Kreiraj nove događaje u';
|
||||
$labels['eventcoloring'] = 'Bojanje događaja';
|
||||
$labels['coloringmode0'] = 'Prema kalendaru';
|
||||
$labels['coloringmode1'] = 'Prema kategoriji';
|
||||
$labels['calendar'] = 'Kalendar';
|
||||
$labels['calendars'] = 'Kalendari';
|
||||
$labels['category'] = 'Kategorija';
|
||||
$labels['categories'] = 'Kategorije';
|
||||
$labels['status-tentative'] = 'Tentative';
|
||||
?>
|
|
@ -20,12 +20,12 @@ $labels['coloringmode0'] = 'Naptár szerint';
|
|||
$labels['coloringmode1'] = 'Kategória szerint';
|
||||
$labels['coloringmode2'] = 'Naptár színe körvonal, kategória színe belsőrész';
|
||||
$labels['coloringmode3'] = 'Kategória színe körvonal, naptár színe belsőrész';
|
||||
$labels['weeknonone'] = 'soha';
|
||||
$labels['calendar'] = 'Naptár';
|
||||
$labels['calendars'] = 'Naptárak';
|
||||
$labels['category'] = 'Kategória';
|
||||
$labels['categories'] = 'Kategóriák';
|
||||
$labels['createcalendar'] = 'Új naptár létrehozása';
|
||||
$labels['editcalendar'] = 'Naptár tulajdonságai';
|
||||
$labels['name'] = 'Név';
|
||||
$labels['color'] = 'Szín';
|
||||
$labels['day'] = 'Nap';
|
||||
|
@ -66,6 +66,7 @@ $labels['tentative'] = 'Feltételes';
|
|||
$labels['status'] = 'Stát.';
|
||||
$labels['status-confirmed'] = 'Confirmed';
|
||||
$labels['status-cancelled'] = 'Cancelled';
|
||||
$labels['status-tentative'] = 'Feltételes';
|
||||
$labels['priority'] = 'Prioritás';
|
||||
$labels['sensitivity'] = 'Manánszféra';
|
||||
$labels['public'] = 'publikus';
|
||||
|
@ -83,6 +84,7 @@ $labels['printdescriptions'] = 'Leírás nyomtatása';
|
|||
$labels['parentcalendar'] = 'Szülőnaptár';
|
||||
$labels['searchearlierdates'] = '< Korábbi események keresése';
|
||||
$labels['searchlaterdates'] = 'Későbbi események keresése >';
|
||||
$labels['laterevents'] = 'Későbbi';
|
||||
$labels['andnmore'] = 'még $nr ...';
|
||||
$labels['togglerole'] = 'Kattintson a szerepváltáshoz';
|
||||
$labels['createfrommail'] = 'Mentés naptári eseményként';
|
||||
|
@ -130,8 +132,6 @@ $labels['availbusy'] = 'Foglalt';
|
|||
$labels['availunknown'] = 'Ismeretlen foglaltság';
|
||||
$labels['availtentative'] = 'Feltételes';
|
||||
$labels['availoutofoffice'] = 'Házon kívül';
|
||||
$labels['delegatedto'] = 'Beosztva ide: ';
|
||||
$labels['delegatedfrom'] = 'Beosztva innen: ';
|
||||
$labels['scheduletime'] = 'Elérhetőség';
|
||||
$labels['sendinvitations'] = 'Meghívók küldése';
|
||||
$labels['sendnotifications'] = 'Résztvevők értesítése a változásokról';
|
||||
|
@ -142,7 +142,6 @@ $labels['prevslot'] = 'Előző idősáv';
|
|||
$labels['nextslot'] = 'Következő idősáv';
|
||||
$labels['noslotfound'] = 'Nem sikerült szabad idősávot találni';
|
||||
$labels['invitationsubject'] = '$title';
|
||||
$labels['invitationmailbody'] = "Meghívó érkezett '\$title' eseményre.\n\nIdőpont: \$date\nSzervező: \$organizer\nRésztvevők: \$attendees\n\n\nMellékletben egy iCalendar naptárbejegyzés, mely tetszőleges naptárprogramba importálható.";
|
||||
$labels['invitationattendlinks'] = "Amennyiben a levelezőben nem lát elfogadó/elutasító gombokat (a levelező program nem támogatja az iTip üzeneteket), kattintson ide a meghívó elfogadására, vagy elutasítására:\n\$url";
|
||||
$labels['eventupdatesubject'] = '$title - módosítva';
|
||||
$labels['eventupdatesubjectempty'] = 'Egy Önt érintő esemény módosítva lett';
|
||||
|
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = 'Segna come cancellato';
|
|||
$labels['aftermoveto'] = 'Sposta in...';
|
||||
$labels['itipoptions'] = 'Inviti all\'evento';
|
||||
$labels['afteraction'] = 'Dopo un invito o un aggiornamento il messaggio è processato';
|
||||
$labels['weeknonone'] = 'una volta';
|
||||
$labels['calendar'] = 'Calendario';
|
||||
$labels['calendars'] = 'Calendari';
|
||||
$labels['category'] = 'Categoria';
|
||||
$labels['categories'] = 'Categorie';
|
||||
$labels['createcalendar'] = 'Crea nuovo calendario';
|
||||
$labels['editcalendar'] = 'Modifica proprietà calendario';
|
||||
$labels['name'] = 'Nome';
|
||||
$labels['color'] = 'Colore';
|
||||
$labels['day'] = 'Giorno';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'Il mio stato';
|
|||
$labels['status'] = 'Stato';
|
||||
$labels['status-confirmed'] = 'Confermato';
|
||||
$labels['status-cancelled'] = 'Cancellato';
|
||||
$labels['status-tentative'] = 'Provvisorio';
|
||||
$labels['priority'] = 'Priorità';
|
||||
$labels['sensitivity'] = 'Privacy';
|
||||
$labels['public'] = 'pubblico';
|
||||
|
@ -94,6 +95,7 @@ $labels['printdescriptions'] = 'Stampa descrizioni';
|
|||
$labels['parentcalendar'] = 'Inserisci dentro';
|
||||
$labels['searchearlierdates'] = '« Cerca eventi precedenti';
|
||||
$labels['searchlaterdates'] = 'Cerca eventi successivi »';
|
||||
$labels['laterevents'] = 'Dopo';
|
||||
$labels['andnmore'] = 'Altri $nr...';
|
||||
$labels['togglerole'] = 'Fare clic per cambiare il ruolo';
|
||||
$labels['createfrommail'] = 'Salva come evento';
|
||||
|
@ -151,8 +153,6 @@ $labels['availbusy'] = 'Occupato';
|
|||
$labels['availunknown'] = 'Sconosciuto';
|
||||
$labels['availtentative'] = 'Provvisorio';
|
||||
$labels['availoutofoffice'] = 'Fuori sede';
|
||||
$labels['delegatedto'] = 'Delegato a:';
|
||||
$labels['delegatedfrom'] = 'Delegato da:';
|
||||
$labels['scheduletime'] = 'Trova disponibilità';
|
||||
$labels['sendinvitations'] = 'Manda inviti';
|
||||
$labels['sendnotifications'] = 'Notifica le modifiche ai partecipanti';
|
||||
|
@ -164,7 +164,6 @@ $labels['nextslot'] = 'Spazio successivo';
|
|||
$labels['suggestedslot'] = 'Spazio suggerito';
|
||||
$labels['noslotfound'] = 'Impossibile trovare uno spazio di tempo libero';
|
||||
$labels['invitationsubject'] = 'Sei stato invitato a "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nQuando: \$date\n\nInvitati: \$attendees\n\nIn allegato un file iCalendar con tutti i dettagli dell'evento, che puoi importare nella tua applicazione calendario.";
|
||||
$labels['invitationattendlinks'] = "Se il tuo client di posta elettronica non supporta le richieste iTip, puoi seguire il seguente collegamento per accettare o rifiutare l'invito:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" è stato aggiornato';
|
||||
$labels['eventupdatesubjectempty'] = 'Un evento che ti riguarda è stato aggiornato';
|
||||
|
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = '削除フラグ';
|
|||
$labels['aftermoveto'] = '移動...';
|
||||
$labels['itipoptions'] = 'イベント招待';
|
||||
$labels['afteraction'] = '招待もしくは更新の後にメッセージは送達されます';
|
||||
$labels['weeknonone'] = '繰返さない';
|
||||
$labels['calendar'] = 'カレンダー';
|
||||
$labels['calendars'] = 'カレンダー';
|
||||
$labels['category'] = 'カテゴリ';
|
||||
$labels['categories'] = 'カテゴリ';
|
||||
$labels['createcalendar'] = '新しいカレンダーの作成';
|
||||
$labels['editcalendar'] = 'カレンダーのプロパティ編集';
|
||||
$labels['name'] = '名前';
|
||||
$labels['color'] = '色';
|
||||
$labels['day'] = '日';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'マイ ステータス';
|
|||
$labels['status'] = '状態';
|
||||
$labels['status-confirmed'] = '確認済';
|
||||
$labels['status-cancelled'] = 'キャンセル済';
|
||||
$labels['status-tentative'] = '仮';
|
||||
$labels['priority'] = '優先度';
|
||||
$labels['sensitivity'] = 'プライバシー';
|
||||
$labels['public'] = 'パブリック';
|
||||
|
@ -94,6 +95,7 @@ $labels['printdescriptions'] = '説明印刷';
|
|||
$labels['parentcalendar'] = '内に挿入';
|
||||
$labels['searchearlierdates'] = '<< 以前のイベントを検索';
|
||||
$labels['searchlaterdates'] = '今後のイベントの検索 >>';
|
||||
$labels['laterevents'] = '後で';
|
||||
$labels['andnmore'] = '$nr さらに…';
|
||||
$labels['togglerole'] = 'クリックでロールをトグル';
|
||||
$labels['createfrommail'] = 'イベントとして保存';
|
||||
|
@ -151,8 +153,6 @@ $labels['availbusy'] = 'ビジー';
|
|||
$labels['availunknown'] = '不明';
|
||||
$labels['availtentative'] = '仮';
|
||||
$labels['availoutofoffice'] = '外出';
|
||||
$labels['delegatedto'] = '委任先:';
|
||||
$labels['delegatedfrom'] = '委任元:';
|
||||
$labels['scheduletime'] = '利用可検索';
|
||||
$labels['sendinvitations'] = '招待を送る';
|
||||
$labels['sendnotifications'] = '変更を参加者へ通知する';
|
||||
|
@ -164,7 +164,6 @@ $labels['nextslot'] = '次のスロット';
|
|||
$labels['suggestedslot'] = '指示されたスロット';
|
||||
$labels['noslotfound'] = '空スロットを見つけられません';
|
||||
$labels['invitationsubject'] = '"$title" に招待されました';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nいつ: \$date\n\n招待者: \$attendees\n\nあなたのカレンダーアプリケーションにインポートできる全イベントの詳細がインポートできる添付されたiカレンダーファイルを見つけてください。";
|
||||
$labels['invitationattendlinks'] = "この場合あなたのメールクライアントはiTip リクエストをサポートしてません、以下のリンクからこの招待を承諾もしくは辞退してください:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" はアップデートされました';
|
||||
$labels['eventupdatesubjectempty'] = 'あなたに関連するイベントが更新されました';
|
||||
|
|
|
@ -29,7 +29,6 @@ $labels['calendars'] = '캘린더';
|
|||
$labels['category'] = '카테고리';
|
||||
$labels['categories'] = '카테고리';
|
||||
$labels['createcalendar'] = '새 캘린더 추가';
|
||||
$labels['editcalendar'] = '캘린더 설정';
|
||||
$labels['name'] = '이름';
|
||||
$labels['color'] = '색상';
|
||||
$labels['day'] = '일';
|
||||
|
@ -69,6 +68,7 @@ $labels['mystatus'] = '내 상태';
|
|||
$labels['status'] = '상태';
|
||||
$labels['status-confirmed'] = '확인됨';
|
||||
$labels['status-cancelled'] = '취소됨';
|
||||
$labels['status-tentative'] = '임시';
|
||||
$labels['priority'] = '우선순위';
|
||||
$labels['sensitivity'] = '프라이버시';
|
||||
$labels['public'] = '공개';
|
||||
|
@ -135,8 +135,6 @@ $labels['availbusy'] = '바쁨';
|
|||
$labels['availunknown'] = '알 수 없는';
|
||||
$labels['availtentative'] = '임시';
|
||||
$labels['availoutofoffice'] = '부재중';
|
||||
$labels['delegatedto'] = '위임 :';
|
||||
$labels['delegatedfrom'] = '위임받음 :';
|
||||
$labels['scheduletime'] = '가능여부 확인';
|
||||
$labels['sendinvitations'] = '초대장 보내기';
|
||||
$labels['sendnotifications'] = '변경 사항을 참가자에게 알림';
|
||||
|
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = 'Atzīmēt kā dzēstu';
|
|||
$labels['aftermoveto'] = 'Pārvietot uz ...';
|
||||
$labels['itipoptions'] = 'Notikuma uzaicinājumi';
|
||||
$labels['afteraction'] = 'Pēc tam, kad uzaicinājums vai izmaiņu ziņojums ir apstrādāts';
|
||||
$labels['weeknonone'] = 'nekad';
|
||||
$labels['calendar'] = 'Kalendārs';
|
||||
$labels['calendars'] = 'Kalendāri';
|
||||
$labels['category'] = 'Kategorija';
|
||||
$labels['categories'] = 'Kategorijas';
|
||||
$labels['createcalendar'] = 'Jauns kalendārs';
|
||||
$labels['editcalendar'] = 'Kalendāra īpašības';
|
||||
$labels['name'] = 'Nosaukums';
|
||||
$labels['color'] = 'Krāsa';
|
||||
$labels['day'] = 'Diena';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'Mans statuss';
|
|||
$labels['status'] = 'Statuss';
|
||||
$labels['status-confirmed'] = 'Apstiprināts';
|
||||
$labels['status-cancelled'] = 'Atcelts';
|
||||
$labels['status-tentative'] = 'Varbūt';
|
||||
$labels['priority'] = 'Prioritāte';
|
||||
$labels['sensitivity'] = 'Privātums';
|
||||
$labels['public'] = 'publisks';
|
||||
|
@ -151,8 +152,6 @@ $labels['availbusy'] = 'Aizņemts';
|
|||
$labels['availunknown'] = 'Nezināms';
|
||||
$labels['availtentative'] = 'Varbūt';
|
||||
$labels['availoutofoffice'] = 'Ārpus biroja';
|
||||
$labels['delegatedto'] = 'Deleģēt:';
|
||||
$labels['delegatedfrom'] = 'Deleģēts no:';
|
||||
$labels['scheduletime'] = 'Atrast brīvu laiku';
|
||||
$labels['sendinvitations'] = 'Nosūtīt uzaicinājumus';
|
||||
$labels['sendnotifications'] = 'Apziņot dalībniekus par izmaiņām';
|
||||
|
@ -164,7 +163,6 @@ $labels['nextslot'] = 'Nākamā iedaļa';
|
|||
$labels['suggestedslot'] = 'Ieteicamā iedaļa';
|
||||
$labels['noslotfound'] = 'Nav brīvas laika iedaļas';
|
||||
$labels['invitationsubject'] = 'Jūs esat uzaicināts uz "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nKad: \$date\n\nUzaicinātie: \$attendees\n\nLūdzu skatiet pievienoto iCalendar failu ar notikuma informācij, kuru jūs varat importēt savā kalendāra aplikācijā.";
|
||||
$labels['invitationattendlinks'] = "Gadījumā ja jūsu e-pasta praogramma neatbalsta iTip pieprasījumus, tad jūs varat izmantot šo saiti, lai pieņemtu vai noraidītu šo uzaicinājumu:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" ir mainīts';
|
||||
$labels['eventupdatesubjectempty'] = 'Pasākums, kas attiecas uz jums ir mainīts';
|
||||
|
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = 'Markeren als verwijderd';
|
|||
$labels['aftermoveto'] = 'Verplaatsen naar...';
|
||||
$labels['itipoptions'] = 'Uitnodigingen voor activiteiten';
|
||||
$labels['afteraction'] = 'Nadat een uitnodiging of updatebericht is verwerkt';
|
||||
$labels['weeknonone'] = 'nooit';
|
||||
$labels['calendar'] = 'Agenda';
|
||||
$labels['calendars'] = 'Agenda\'s';
|
||||
$labels['category'] = 'Categorie';
|
||||
$labels['categories'] = 'Categorieën';
|
||||
$labels['createcalendar'] = 'Nieuwe agenda maken';
|
||||
$labels['editcalendar'] = 'Agenda-eigenschappen bewerken';
|
||||
$labels['name'] = 'Naam';
|
||||
$labels['color'] = 'Kleur';
|
||||
$labels['day'] = 'Dag';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'Mijn status';
|
|||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Bevestigd';
|
||||
$labels['status-cancelled'] = 'Geannuleerd';
|
||||
$labels['status-tentative'] = 'Misschien';
|
||||
$labels['priority'] = 'Prioriteit';
|
||||
$labels['sensitivity'] = 'Privacy';
|
||||
$labels['public'] = 'openbaar';
|
||||
|
@ -94,6 +95,7 @@ $labels['printdescriptions'] = 'Beschrijvingen afdrukken';
|
|||
$labels['parentcalendar'] = 'Invoegen in';
|
||||
$labels['searchearlierdates'] = '« Zoek eerdere activiteiten';
|
||||
$labels['searchlaterdates'] = 'Zoek latere activiteiten »';
|
||||
$labels['laterevents'] = 'Later';
|
||||
$labels['andnmore'] = 'Nog $nr...';
|
||||
$labels['togglerole'] = 'Klik om van rol te wisselen';
|
||||
$labels['createfrommail'] = 'Opslaan als activiteit';
|
||||
|
@ -151,8 +153,6 @@ $labels['availbusy'] = 'Bezet';
|
|||
$labels['availunknown'] = 'Onbekend';
|
||||
$labels['availtentative'] = 'Misschien';
|
||||
$labels['availoutofoffice'] = 'Niet aanwezig';
|
||||
$labels['delegatedto'] = 'Gedelegeerd aan:';
|
||||
$labels['delegatedfrom'] = 'Gedelegeerd door:';
|
||||
$labels['scheduletime'] = 'Beschikbaarheid zoeken';
|
||||
$labels['sendinvitations'] = 'Uitnodigingen versturen';
|
||||
$labels['sendnotifications'] = 'Wijzigingen melden aan deelnemers';
|
||||
|
@ -164,7 +164,6 @@ $labels['nextslot'] = 'Volgend tijdstip';
|
|||
$labels['suggestedslot'] = 'Voorgesteld tijdstip';
|
||||
$labels['noslotfound'] = 'Geen beschikbaar tijdstip gevonden';
|
||||
$labels['invitationsubject'] = 'U bent uitgenodigd voor "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nWanneer: \$date\n\nGenodigden: \$attendees\n\nAls bijlage vindt u een iCalendar-bestand met alle gegevens van de activiteit die u in uw agendaprogramma kunt importeren.";
|
||||
$labels['invitationattendlinks'] = "In het geval dat uw e-mailprogramma geen iTip-verzoeken ondersteunt, kunt u de volgende koppeling gebruiken om deze uitnodiging te accepteren or af te slaan:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" is bijgewerkt';
|
||||
$labels['eventupdatesubjectempty'] = 'Een activiteit die u aangaat is bijgewerkt';
|
||||
|
|
267
localization/pl.inc
Normal file
|
@ -0,0 +1,267 @@
|
|||
<?php
|
||||
/**
|
||||
* Localizations for Kolab Calendar plugin
|
||||
*
|
||||
* Copyright (C) 2014, Kolab Systems AG
|
||||
*
|
||||
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
|
||||
*/
|
||||
$labels['default_view'] = 'Domyślny widok';
|
||||
$labels['time_format'] = 'Format czasu';
|
||||
$labels['timeslots'] = 'Przedziały czasowe w ciągu godziny';
|
||||
$labels['first_day'] = 'Pierwszy dzień tygodnia';
|
||||
$labels['first_hour'] = 'Pierwsza godzina';
|
||||
$labels['workinghours'] = 'Godziny robocze';
|
||||
$labels['add_category'] = 'Dodaj kategorię';
|
||||
$labels['remove_category'] = 'Usuń kategorię';
|
||||
$labels['defaultcalendar'] = 'Twórz nowe zdarzenia w';
|
||||
$labels['eventcoloring'] = 'Kolor zdarzenia';
|
||||
$labels['coloringmode0'] = 'Zgodnie z kalendarzem';
|
||||
$labels['coloringmode1'] = 'Zgodnie z kategorią';
|
||||
$labels['coloringmode2'] = 'Kalendarz dla obramowania, kategoria dla środka';
|
||||
$labels['coloringmode3'] = 'Kategoria dla obramowania, kalendarz dla środka';
|
||||
$labels['afternothing'] = 'Nie rób nic';
|
||||
$labels['aftertrash'] = 'Przenieś do Kosza';
|
||||
$labels['afterdelete'] = 'Usuń wiadomość';
|
||||
$labels['afterflagdeleted'] = 'Oznacz jako usunięta';
|
||||
$labels['aftermoveto'] = 'Przenieś do...';
|
||||
$labels['itipoptions'] = 'Zaproszenia';
|
||||
$labels['afteraction'] = 'Wiadomość jest przetwarzana po zaproszeniu lub aktualizacji';
|
||||
$labels['calendar'] = 'Kalendarz';
|
||||
$labels['calendars'] = 'Kalendarze';
|
||||
$labels['category'] = 'Kategoria';
|
||||
$labels['categories'] = 'Kategorie';
|
||||
$labels['createcalendar'] = 'Utwórz nowy kalendarz';
|
||||
$labels['name'] = 'Nazwa';
|
||||
$labels['color'] = 'Kolor';
|
||||
$labels['day'] = 'Dzień';
|
||||
$labels['week'] = 'Tydzień';
|
||||
$labels['month'] = 'Miesiąc';
|
||||
$labels['agenda'] = 'Agenda';
|
||||
$labels['new'] = 'Nowy';
|
||||
$labels['new_event'] = 'Nowe zdarzenie';
|
||||
$labels['edit_event'] = 'Edytuj zdarzenie';
|
||||
$labels['edit'] = 'Edytuj';
|
||||
$labels['save'] = 'Zapisz';
|
||||
$labels['removelist'] = 'Usuń z listy';
|
||||
$labels['cancel'] = 'Anuluj';
|
||||
$labels['select'] = 'Wybierz';
|
||||
$labels['print'] = 'Drukuj';
|
||||
$labels['printtitle'] = 'Drukuj kalendarze';
|
||||
$labels['title'] = 'Podsumowanie';
|
||||
$labels['description'] = 'Opis';
|
||||
$labels['all-day'] = 'cały dzień';
|
||||
$labels['export'] = 'Eksport';
|
||||
$labels['exporttitle'] = 'Eksport w formacie iCalendar';
|
||||
$labels['exportrange'] = 'Zdarzenia z';
|
||||
$labels['exportattachments'] = 'Z załącznikami';
|
||||
$labels['customdate'] = 'Własna data';
|
||||
$labels['location'] = 'Położenie';
|
||||
$labels['url'] = 'Adres URL';
|
||||
$labels['date'] = 'Data';
|
||||
$labels['start'] = 'Początek';
|
||||
$labels['starttime'] = 'Początek';
|
||||
$labels['end'] = 'Koniec';
|
||||
$labels['endtime'] = 'Koniec';
|
||||
$labels['repeat'] = 'Powtórz';
|
||||
$labels['selectdate'] = 'Wybierz datę';
|
||||
$labels['freebusy'] = 'Pokaż mnie jako';
|
||||
$labels['free'] = 'Wolny';
|
||||
$labels['busy'] = 'Zajęty';
|
||||
$labels['outofoffice'] = 'Poza biurem';
|
||||
$labels['tentative'] = 'Niepewny';
|
||||
$labels['mystatus'] = 'Mój status';
|
||||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Potwierdzony';
|
||||
$labels['status-cancelled'] = 'Anulowany';
|
||||
$labels['status-tentative'] = 'Niepewny';
|
||||
$labels['priority'] = 'Priorytet';
|
||||
$labels['sensitivity'] = 'Poufność';
|
||||
$labels['public'] = 'publiczny';
|
||||
$labels['private'] = 'prywatny';
|
||||
$labels['confidential'] = 'poufny';
|
||||
$labels['links'] = 'Reference';
|
||||
$labels['alarms'] = 'Przypomnienie';
|
||||
$labels['comment'] = 'Komentarz';
|
||||
$labels['created'] = 'Utworzono';
|
||||
$labels['changed'] = 'Ostatnia modyfikacja';
|
||||
$labels['unknown'] = 'Nieznany';
|
||||
$labels['eventoptions'] = 'Opcje';
|
||||
$labels['generated'] = 'wygenerowano';
|
||||
$labels['eventhistory'] = 'Historia';
|
||||
$labels['removelink'] = 'Usuń odnośnik e-mail';
|
||||
$labels['printdescriptions'] = 'Drukuj opisy';
|
||||
$labels['parentcalendar'] = 'Wstaw wewnątrz';
|
||||
$labels['searchearlierdates'] = '« Szukaj wcześniejszych zdarzeń';
|
||||
$labels['searchlaterdates'] = 'Szukaj późniejszych zdarzeń »';
|
||||
$labels['laterevents'] = 'Później';
|
||||
$labels['andnmore'] = '$nr więcej...';
|
||||
$labels['togglerole'] = 'Kliknuj aby przestawić rolę';
|
||||
$labels['createfrommail'] = 'Zapisz jako zdarzenie';
|
||||
$labels['importevents'] = 'Importuj zdarzenia';
|
||||
$labels['importrange'] = 'Zdarzenia z';
|
||||
$labels['onemonthback'] = '1 miesiąc wstecz';
|
||||
$labels['nmonthsback'] = '$nr miesięcy wstecz';
|
||||
$labels['showurl'] = 'Pokaż adres URL kalendarza';
|
||||
$labels['showurldescription'] = 'Używaj tego adresu aby dostać się do kalendarza z innych programów (w trybie tylko-do-odczytu). Możesz wkleić go do dowolnej aplikacji obsługującej format iCal.';
|
||||
$labels['caldavurldescription'] = 'Skopiuj ten adres do aplikacji obsługującej format <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> (np. Evolution lub Mozilla Thunderbird) aby zsynchronizować wybrany kalendarz z twoim komputerem lub urządzeniem przenośnym.';
|
||||
$labels['findcalendars'] = 'Wyszukaj kalendarze...';
|
||||
$labels['searchterms'] = 'Szukana fraza';
|
||||
$labels['calsearchresults'] = 'Dostępne kalendarze';
|
||||
$labels['calendarsubscribe'] = 'Dodaj do listy na stałe';
|
||||
$labels['nocalendarsfound'] = 'Nie znaleziono żadych kalendarzy';
|
||||
$labels['nrcalendarsfound'] = 'znaleziono $nr kalendarzy';
|
||||
$labels['quickview'] = 'Pokaż tylko ten kalendarz';
|
||||
$labels['invitationspending'] = 'Oczekujące zaproszenia';
|
||||
$labels['invitationsdeclined'] = 'Odrzucone zaproszenia';
|
||||
$labels['changepartstat'] = 'Zmień status uczestnika';
|
||||
$labels['rsvpcomment'] = 'Treść zaproszenia';
|
||||
$labels['listrange'] = 'Zakres do pokazania:';
|
||||
$labels['listsections'] = 'Podziel na:';
|
||||
$labels['smartsections'] = 'Inteligentne sekcje';
|
||||
$labels['until'] = 'dopóki';
|
||||
$labels['today'] = 'Dzisiaj';
|
||||
$labels['tomorrow'] = 'Jutro';
|
||||
$labels['thisweek'] = 'Bieżący tydzień';
|
||||
$labels['nextweek'] = 'Następny tydzień';
|
||||
$labels['prevweek'] = 'Poprzedni tydzień';
|
||||
$labels['thismonth'] = 'Bieżący miesiąc';
|
||||
$labels['nextmonth'] = 'Następny miesiąc';
|
||||
$labels['weekofyear'] = 'Tydzień';
|
||||
$labels['pastevents'] = 'Przeszłe';
|
||||
$labels['futureevents'] = 'Przyszłe';
|
||||
$labels['showalarms'] = 'Pokaż powiadomienia';
|
||||
$labels['defaultalarmtype'] = 'Domyślne powiadomienie';
|
||||
$labels['defaultalarmoffset'] = 'Domyślny czas powiadomienia';
|
||||
$labels['attendee'] = 'Uczestnik';
|
||||
$labels['role'] = 'Rola';
|
||||
$labels['availability'] = 'Dostępny';
|
||||
$labels['confirmstate'] = 'Status';
|
||||
$labels['addattendee'] = 'Dodaj uczestnika';
|
||||
$labels['roleorganizer'] = 'Organizator';
|
||||
$labels['rolerequired'] = 'Wymagany';
|
||||
$labels['roleoptional'] = 'Opcjonalny';
|
||||
$labels['rolechair'] = 'Przewodniczący';
|
||||
$labels['rolenonparticipant'] = 'Nieobecny';
|
||||
$labels['cutypeindividual'] = 'Osoba';
|
||||
$labels['cutypegroup'] = 'Grupa';
|
||||
$labels['cutyperesource'] = 'Zasób';
|
||||
$labels['cutyperoom'] = 'Pokój';
|
||||
$labels['availfree'] = 'Wolny';
|
||||
$labels['availbusy'] = 'Zajęty';
|
||||
$labels['availunknown'] = 'Nieznany';
|
||||
$labels['availtentative'] = 'Niepewny';
|
||||
$labels['availoutofoffice'] = 'Poza biurem';
|
||||
$labels['scheduletime'] = 'Sprawdź dostępność';
|
||||
$labels['sendinvitations'] = 'Wyślij zaproszenia';
|
||||
$labels['sendnotifications'] = 'Powiadom uczestników o zmianach';
|
||||
$labels['sendcancellation'] = 'Powiadom uczestników o anulowaniu zdarzenia';
|
||||
$labels['onlyworkinghours'] = 'Sprawdź dostępność w moich godzinach pracy';
|
||||
$labels['reqallattendees'] = 'Wymagany/wszyscy uczestnicy';
|
||||
$labels['prevslot'] = 'Poprzedni przedział';
|
||||
$labels['nextslot'] = 'Następny przedział';
|
||||
$labels['suggestedslot'] = 'Sugerowany przedział';
|
||||
$labels['noslotfound'] = 'Nie znaleziono wolnego przedziału czasu';
|
||||
$labels['invitationsubject'] = 'Zostałeś zaproszony do "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees\n\n\$description\n\nW załączeniu plik w formacie iCalendar ze szczegółami zdarzenia, który możesz zaimportować do twojej aplikacji kalendarza.";
|
||||
$labels['invitationattendlinks'] = "W przypadku gdy klient poczty elektronicznej nie obsługuje rządań w formacie iTip, aby zaakceptować lub odrzucić to zaproszenie, można skorzystać z następującego linku:\n\$url ";
|
||||
$labels['eventupdatesubject'] = '"$title" zostało zaktualizowane';
|
||||
$labels['eventupdatesubjectempty'] = 'Zdarzenie które cię dotyczy zostało zaktualizowane';
|
||||
$labels['eventupdatemailbody'] = "*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees\n\nW załączeniu plik w formacie iCalendar zawierający zaktualizowane szczegóły zdarzenia, które możesz zaimportować do swojej aplikacji kalendarza.";
|
||||
$labels['eventcancelsubject'] = '"$title" zostało anulowane';
|
||||
$labels['eventcancelmailbody'] = "*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees\n\nZdarzenie zostało anulowane przez \$organizer.\n\nW załączeniu plik w formacie iCalendar ze zaktualizowanymi szczegółami zdarzenia.";
|
||||
$labels['itipobjectnotfound'] = 'W twoim kalendarzu nie znaleziono zdarzenia związanego z tą wiadomością.';
|
||||
$labels['itipmailbodyaccepted'] = "\$sender zaakceptował zaproszenie do następującego zdarzenia:\n\n*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees";
|
||||
$labels['itipmailbodytentative'] = "\$sender warunkowo zaakceptował zaproszenie do następującego zdarzenia:\n\n*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees";
|
||||
$labels['itipmailbodydeclined'] = "\$sender odrzucił zaproszenie na następujące zdarzenie:\n\n*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees";
|
||||
$labels['itipmailbodycancel'] = "\$sender odrzucił twój udział w zastępującym zdarzeniu:\n\n*\$title*\n\nKiedy: \$date";
|
||||
$labels['itipmailbodydelegated'] = "\$sender oddelegował udział w następującym wydarzeniu:\n\n*\$title*\n\nKiedy: \$date";
|
||||
$labels['itipmailbodydelegatedto'] = "\$sender oddelegował do ciebie udział w następującym wydarzeniu:\n\n*\$title*\n\nKiedy: \$date";
|
||||
$labels['itipdeclineevent'] = 'Czy chcesz odrzucić zaproszenie na to zdarzenie?';
|
||||
$labels['declinedeleteconfirm'] = 'Czy chcesz także usunąć to odrzucone zdarzenie ze swojego kalendarza?';
|
||||
$labels['itipcomment'] = 'Komentarz zaproszenia/powiadomienia';
|
||||
$labels['itipcommenttitle'] = 'Komentarz ten będzie dołączony do wiadomości wysłanej do uczestników zdarzenia';
|
||||
$labels['notanattendee'] = 'Nie jesteś na liście uczestników tego zdarzenia';
|
||||
$labels['eventcancelled'] = 'Zdarzenie zostało anulowane';
|
||||
$labels['saveincalendar'] = 'zapisz w';
|
||||
$labels['updatemycopy'] = 'Uaktualnij w moim kalendarzu';
|
||||
$labels['savetocalendar'] = 'Zapisz do kalendarza';
|
||||
$labels['openpreview'] = 'Sprawdź kalendarz';
|
||||
$labels['noearlierevents'] = 'Brak wcześniejszych zdarzeń';
|
||||
$labels['nolaterevents'] = '« Brak póżniejszych zdarzeń';
|
||||
$labels['resource'] = 'Zasób';
|
||||
$labels['addresource'] = 'Rezerwuj zasób';
|
||||
$labels['findresources'] = 'Wyszukaj zasoby';
|
||||
$labels['resourcedetails'] = 'Szczegóły';
|
||||
$labels['resourceavailability'] = 'Dostępność';
|
||||
$labels['resourceowner'] = 'Właściciel';
|
||||
$labels['resourceadded'] = 'Zasób został dodany do twojego zdarzenia';
|
||||
$labels['tabsummary'] = 'Podsumowanie';
|
||||
$labels['tabrecurrence'] = 'Powtarzalność';
|
||||
$labels['tabattendees'] = 'Uczestnicy';
|
||||
$labels['tabresources'] = 'Zasoby';
|
||||
$labels['tabattachments'] = 'Załączniki';
|
||||
$labels['tabsharing'] = 'Udostępnianie';
|
||||
$labels['deleteobjectconfirm'] = 'Czy na pewno chcesz usunąć to zdarzenie?';
|
||||
$labels['deleteventconfirm'] = 'Czy na pewno chcesz usunąć to zdarzenie?';
|
||||
$labels['deletecalendarconfirm'] = 'Czy na pewno chcesz usunąć ten kalendarz z wszystkimi zadaniami?';
|
||||
$labels['deletecalendarconfirmrecursive'] = 'Czy na pewno chcesz usunąć ten kalendarz ze wszystkimi zdarzeniami i pod-kalendarzami?';
|
||||
$labels['savingdata'] = 'Zapisuję dane...';
|
||||
$labels['errorsaving'] = 'Błąd podczas zapisu danych.';
|
||||
$labels['operationfailed'] = 'Żądana operacja nie powiodła się.';
|
||||
$labels['invalideventdates'] = 'Błędna data! Proszę sprawdzić wprowadzone dane.';
|
||||
$labels['invalidcalendarproperties'] = 'Błędna właściwość kalendarza! Proszę podać poprawną nazwę.';
|
||||
$labels['searchnoresults'] = 'Nie znaleziono zdarzeń w wybranym kalendarzu.';
|
||||
$labels['successremoval'] = 'Zdarzenie zostało usunięte.';
|
||||
$labels['successrestore'] = 'Zdarzenie zostało przywrócone.';
|
||||
$labels['errornotifying'] = 'Nie udało się wysłać powiadomień do uczestników zdarzenia';
|
||||
$labels['errorimportingevent'] = 'Nie udało się zaimportować zdarzenia';
|
||||
$labels['importwarningexists'] = 'Kopia tego zdarzenia już istnieje w twoim kalendarzu.';
|
||||
$labels['newerversionexists'] = 'Istnieje nowsza wersja tego zdarzenia ! Przerwano.';
|
||||
$labels['nowritecalendarfound'] = 'Nie znaleziono kalendarza aby zapisać zdarzenie.';
|
||||
$labels['importedsuccessfully'] = 'Zdarzenie dodano do \'$calendar\'';
|
||||
$labels['updatedsuccessfully'] = 'Zdarzenie zostało pomyślnie zaktualizowane w \'$calendar\'';
|
||||
$labels['attendeupdateesuccess'] = 'Zaktualizowano status uczestnika.';
|
||||
$labels['itipsendsuccess'] = 'Wysłano zaproszenia do uczestników.';
|
||||
$labels['itipresponseerror'] = 'Nie udało się wysłać odpowiedzi na to zaproszenie.';
|
||||
$labels['itipinvalidrequest'] = 'To zaproszenie nie jest już aktualne.';
|
||||
$labels['sentresponseto'] = 'Wysłano odpowiedź na zaproszenie do $mailto.';
|
||||
$labels['localchangeswarning'] = 'Zamierzasz dokonać zmian, które mogą zostać wykonane tylko w twoim kalendarzu i nie zostaną wysłane do organizatora zdarzenia.';
|
||||
$labels['importsuccess'] = 'Zaimportowano $nr zdarzeń.';
|
||||
$labels['importnone'] = 'Nie znaleziono zdarzeń do zaimportowania.';
|
||||
$labels['importerror'] = 'Wystąpił błąd podczas importu.';
|
||||
$labels['aclnorights'] = 'Nie masz uprawnień administracyjnych dla tego kalendarza.';
|
||||
$labels['changeeventconfirm'] = 'Zmień zdarzenie';
|
||||
$labels['removeeventconfirm'] = 'Usuń zdarzenie';
|
||||
$labels['changerecurringeventwarning'] = 'To jest zdarzenie powtarzalne. Czy chcesz zmienić bieżące zdarzenie, bieżące i przyszłe, wszystkie, a może zapisać je jako nowe zdarzenie?';
|
||||
$labels['removerecurringeventwarning'] = 'Jest to zdarzenie cykliczne. Czy chcesz usunąć wyłącznie bieżące zdarzenie i jego przyszłe wystąpienia, czy wszystkie wystąpienia tego zdarzenia?';
|
||||
$labels['removerecurringallonly'] = 'Jest to zdarzenie cykliczne. Jako uczestnik, możesz jedynie usunąć całe zdarzenie ze wszystkimi jego wystąpieniami.';
|
||||
$labels['currentevent'] = 'Bieżące';
|
||||
$labels['futurevents'] = 'Przyszłe';
|
||||
$labels['allevents'] = 'Wszystkie';
|
||||
$labels['saveasnew'] = 'Zapisz jako nowe';
|
||||
$labels['birthdays'] = 'Uruodziny';
|
||||
$labels['birthdayscalendar'] = 'Kalendarz Urodzin';
|
||||
$labels['displaybirthdayscalendar'] = 'Wyświetl kalendarz urodzin';
|
||||
$labels['birthdayscalendarsources'] = 'Z tych książek adresowych';
|
||||
$labels['birthdayeventtitle'] = 'Urodziny $name\'s';
|
||||
$labels['birthdayage'] = 'Wiek $age';
|
||||
$labels['objectchangelog'] = 'Historia zmian';
|
||||
$labels['objectdiff'] = 'Zmiany od $rev1 do $rev2';
|
||||
$labels['objectnotfound'] = 'Nie udało się wczytać zdarzenia';
|
||||
$labels['objectchangelognotavailable'] = 'Historia zmian jest niedostępna dla tego zdarzenia';
|
||||
$labels['objectdiffnotavailable'] = 'Nie można porównać wybranych wersji';
|
||||
$labels['revisionrestoreconfirm'] = 'Czy na pewno chcesz przywrócić wersję $rev tego zdarzenia? Bierzące zdarzenie zostanie zastąpione starszą wersją.';
|
||||
$labels['objectrestoresuccess'] = 'Wersja $rev została pomyślnie przywrócona';
|
||||
$labels['objectrestoreerror'] = 'Nie udało się przywrócić starej wersji';
|
||||
$labels['arialabelminical'] = 'Wybór daty kalendarza';
|
||||
$labels['arialabelcalendarview'] = 'Podgląd kalendarza';
|
||||
$labels['arialabelsearchform'] = 'Formularz wyszukiwania zdarzeń';
|
||||
$labels['arialabelquicksearchbox'] = 'Fraza wyszukiwania zdarzeń';
|
||||
$labels['arialabelcalsearchform'] = 'Formularz wyszukiwania kalendarzy';
|
||||
$labels['calendaractions'] = 'Akcje kalendarzy';
|
||||
$labels['arialabeleventattendees'] = 'Lista uczestników zdarzenia';
|
||||
$labels['arialabeleventresources'] = 'Lista zasobów zdarzenia';
|
||||
$labels['arialabelresourcesearchform'] = 'Formularz wyszukiwania zasobów';
|
||||
$labels['arialabelresourceselection'] = 'Dostępne zasoby';
|
||||
?>
|
|
@ -27,12 +27,18 @@ $labels['afterflagdeleted'] = 'Oznacz jako usunięta';
|
|||
$labels['aftermoveto'] = 'Przenieś do...';
|
||||
$labels['itipoptions'] = 'Zaproszenia';
|
||||
$labels['afteraction'] = 'Wiadomość jest przetwarzana po zaproszeniu lub aktualizacji';
|
||||
$labels['showweekno'] = 'Wyświetlaj numery tygodni';
|
||||
$labels['weeknonone'] = 'nigdy';
|
||||
$labels['weeknodatepicker'] = 'tylko przy wyborze daty';
|
||||
$labels['weeknoall'] = 'w widoku kalendarza i przy wyborze daty';
|
||||
$labels['calendar'] = 'Kalendarz';
|
||||
$labels['calendars'] = 'Kalendarze';
|
||||
$labels['category'] = 'Kategoria';
|
||||
$labels['categories'] = 'Kategorie';
|
||||
$labels['addcalendar'] = 'Dodaj kalendarz';
|
||||
$labels['createcalendar'] = 'Utwórz nowy kalendarz';
|
||||
$labels['editcalendar'] = 'Edytuj właściwości kalendarza';
|
||||
$labels['editcalendar'] = 'Edytuj/Udostępnij kalendarz';
|
||||
$labels['deletecalendar'] = 'Usuń kalendarz';
|
||||
$labels['name'] = 'Nazwa';
|
||||
$labels['color'] = 'Kolor';
|
||||
$labels['day'] = 'Dzień';
|
||||
|
@ -75,6 +81,7 @@ $labels['mystatus'] = 'Mój status';
|
|||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Potwierdzony';
|
||||
$labels['status-cancelled'] = 'Anulowany';
|
||||
$labels['status-tentative'] = 'Niepewny';
|
||||
$labels['priority'] = 'Priorytet';
|
||||
$labels['sensitivity'] = 'Poufność';
|
||||
$labels['public'] = 'publiczny';
|
||||
|
@ -94,6 +101,8 @@ $labels['printdescriptions'] = 'Drukuj opisy';
|
|||
$labels['parentcalendar'] = 'Wstaw wewnątrz';
|
||||
$labels['searchearlierdates'] = '« Szukaj wcześniejszych zdarzeń';
|
||||
$labels['searchlaterdates'] = 'Szukaj późniejszych zdarzeń »';
|
||||
$labels['earlierevents'] = 'Wcześniej';
|
||||
$labels['laterevents'] = 'Późniejsze';
|
||||
$labels['andnmore'] = '$nr więcej...';
|
||||
$labels['togglerole'] = 'Kliknuj aby przestawić rolę';
|
||||
$labels['createfrommail'] = 'Zapisz jako zdarzenie';
|
||||
|
@ -104,8 +113,11 @@ $labels['nmonthsback'] = '$nr miesięcy wstecz';
|
|||
$labels['showurl'] = 'Pokaż adres URL kalendarza';
|
||||
$labels['showurldescription'] = 'Używaj tego adresu aby dostać się do kalendarza z innych programów (w trybie tylko-do-odczytu). Możesz wkleić go do dowolnej aplikacji obsługującej format iCal.';
|
||||
$labels['caldavurldescription'] = 'Skopiuj ten adres do aplikacji obsługującej format <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> (np. Evolution lub Mozilla Thunderbird) aby zsynchronizować wybrany kalendarz z twoim komputerem lub urządzeniem przenośnym.';
|
||||
$labels['showfburl'] = 'Pokaż adres free-busy.';
|
||||
$labels['fburldescription'] = 'Używaj ten adres w aplikacjach obsługujących informacje Free-Busy. Możesz go skopiować i wkleić w dowolnej aplikacji kalendarza, która obsługuje informacje wolny-zajęty w formacie iCal. Dla tego adresu uwierzytelnianie nie jest wymagane.';
|
||||
$labels['findcalendars'] = 'Wyszukaj kalendarze...';
|
||||
$labels['searchterms'] = 'Szukana fraza';
|
||||
$labels['findevents'] = 'Znajdź wydarzenia';
|
||||
$labels['calsearchresults'] = 'Dostępne kalendarze';
|
||||
$labels['calendarsubscribe'] = 'Dodaj do listy na stałe';
|
||||
$labels['nocalendarsfound'] = 'Nie znaleziono żadych kalendarzy';
|
||||
|
@ -115,6 +127,8 @@ $labels['invitationspending'] = 'Oczekujące zaproszenia';
|
|||
$labels['invitationsdeclined'] = 'Odrzucone zaproszenia';
|
||||
$labels['changepartstat'] = 'Zmień status uczestnika';
|
||||
$labels['rsvpcomment'] = 'Treść zaproszenia';
|
||||
$labels['eventstartsync'] = 'Przenieś datę początku zdarzenia do pierwszego wystąpienia';
|
||||
$labels['weekshort'] = 'tydz.';
|
||||
$labels['listrange'] = 'Zakres do pokazania:';
|
||||
$labels['listsections'] = 'Podziel na:';
|
||||
$labels['smartsections'] = 'Inteligentne sekcje';
|
||||
|
@ -151,8 +165,6 @@ $labels['availbusy'] = 'Zajęty';
|
|||
$labels['availunknown'] = 'Nieznany';
|
||||
$labels['availtentative'] = 'Niepewny';
|
||||
$labels['availoutofoffice'] = 'Poza biurem';
|
||||
$labels['delegatedto'] = 'Oddelegowany do:';
|
||||
$labels['delegatedfrom'] = 'Oddelegowany z:';
|
||||
$labels['scheduletime'] = 'Sprawdź dostępność';
|
||||
$labels['sendinvitations'] = 'Wyślij zaproszenia';
|
||||
$labels['sendnotifications'] = 'Powiadom uczestników o zmianach';
|
||||
|
@ -164,7 +176,7 @@ $labels['nextslot'] = 'Następny przedział';
|
|||
$labels['suggestedslot'] = 'Sugerowany przedział';
|
||||
$labels['noslotfound'] = 'Nie znaleziono wolnego przedziału czasu';
|
||||
$labels['invitationsubject'] = 'Zostałeś zaproszony do "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees\n\nW załączeniu plik w formacie iCalendar ze szczegółami zdarzenia, który możesz zaimportować do twojej aplikacji kalendarza.";
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees\n\n\$description\n\nW załączeniu plik w formacie iCalendar ze szczegółami zdarzenia, który możesz zaimportować do twojego kalendarza.";
|
||||
$labels['invitationattendlinks'] = "W przypadku gdy klient poczty elektronicznej nie obsługuje rządań w formacie iTip, aby zaakceptować lub odrzucić to zaproszenie, można skorzystać z następującego linku:\n\$url ";
|
||||
$labels['eventupdatesubject'] = '"$title" zostało zaktualizowane';
|
||||
$labels['eventupdatesubjectempty'] = 'Zdarzenie które cię dotyczy zostało zaktualizowane';
|
||||
|
@ -176,8 +188,8 @@ $labels['itipmailbodyaccepted'] = "\$sender zaakceptował zaproszenie do następ
|
|||
$labels['itipmailbodytentative'] = "\$sender warunkowo zaakceptował zaproszenie do następującego zdarzenia:\n\n*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees";
|
||||
$labels['itipmailbodydeclined'] = "\$sender odrzucił zaproszenie na następujące zdarzenie:\n\n*\$title*\n\nKiedy: \$date\n\nZaproszeni: \$attendees";
|
||||
$labels['itipmailbodycancel'] = "\$sender odrzucił twój udział w zastępującym zdarzeniu:\n\n*\$title*\n\nKiedy: \$date";
|
||||
$labels['itipmailbodydelegated'] = "\$sender oddelegował udział w następującym wydarzeniu:\n\n*\$title*\n\nKiedy: \$date";
|
||||
$labels['itipmailbodydelegatedto'] = "\$sender oddelegował do ciebie udział w następującym wydarzeniu:\n\n*\$title*\n\nKiedy: \$date";
|
||||
$labels['itipmailbodydelegated'] = "\$sender delegował udział w następującym wydarzeniu:\n\n*\$title*\n\nKiedy: \$date";
|
||||
$labels['itipmailbodydelegatedto'] = "\$sender delegował udział w następującym wydarzeniu na ciebie\n\n*\$title*\n\nKiedy: \$date";
|
||||
$labels['itipdeclineevent'] = 'Czy chcesz odrzucić zaproszenie na to zdarzenie?';
|
||||
$labels['declinedeleteconfirm'] = 'Czy chcesz także usunąć to odrzucone zdarzenie ze swojego kalendarza?';
|
||||
$labels['itipcomment'] = 'Komentarz zaproszenia/powiadomienia';
|
||||
|
@ -189,12 +201,14 @@ $labels['updatemycopy'] = 'Uaktualnij w moim kalendarzu';
|
|||
$labels['savetocalendar'] = 'Zapisz do kalendarza';
|
||||
$labels['openpreview'] = 'Sprawdź kalendarz';
|
||||
$labels['noearlierevents'] = 'Brak wcześniejszych zdarzeń';
|
||||
$labels['nolaterevents'] = '« Brak póżniejszych zdarzeń';
|
||||
$labels['nolaterevents'] = 'Brak póżniejszych zdarzeń';
|
||||
$labels['legend'] = 'Legenda';
|
||||
$labels['resource'] = 'Zasób';
|
||||
$labels['addresource'] = 'Rezerwuj zasób';
|
||||
$labels['findresources'] = 'Wyszukaj zasoby';
|
||||
$labels['resourcedetails'] = 'Szczegóły';
|
||||
$labels['resourceavailability'] = 'Dostępność';
|
||||
$labels['resourceprops'] = 'Właściwości zasobów';
|
||||
$labels['resourceowner'] = 'Właściciel';
|
||||
$labels['resourceadded'] = 'Zasób został dodany do twojego zdarzenia';
|
||||
$labels['tabsummary'] = 'Podsumowanie';
|
||||
|
@ -211,6 +225,7 @@ $labels['savingdata'] = 'Zapisuję dane...';
|
|||
$labels['errorsaving'] = 'Błąd podczas zapisu danych.';
|
||||
$labels['operationfailed'] = 'Żądana operacja nie powiodła się.';
|
||||
$labels['invalideventdates'] = 'Błędna data! Proszę sprawdzić wprowadzone dane.';
|
||||
$labels['emptyeventtitle'] = 'Podsumowanie zdarzenia nie może być puste.';
|
||||
$labels['invalidcalendarproperties'] = 'Błędna właściwość kalendarza! Proszę podać poprawną nazwę.';
|
||||
$labels['searchnoresults'] = 'Nie znaleziono zdarzeń w wybranym kalendarzu.';
|
||||
$labels['successremoval'] = 'Zdarzenie zostało usunięte.';
|
||||
|
@ -223,6 +238,7 @@ $labels['nowritecalendarfound'] = 'Nie znaleziono kalendarza aby zapisać zdarze
|
|||
$labels['importedsuccessfully'] = 'Zdarzenie dodano do \'$calendar\'';
|
||||
$labels['updatedsuccessfully'] = 'Zdarzenie zostało pomyślnie zaktualizowane w \'$calendar\'';
|
||||
$labels['attendeupdateesuccess'] = 'Zaktualizowano status uczestnika.';
|
||||
$labels['errorunknownattendee'] = 'Nie udało się znaleźć informacji o uczestniku.';
|
||||
$labels['itipsendsuccess'] = 'Wysłano zaproszenia do uczestników.';
|
||||
$labels['itipresponseerror'] = 'Nie udało się wysłać odpowiedzi na to zaproszenie.';
|
||||
$labels['itipinvalidrequest'] = 'To zaproszenie nie jest już aktualne.';
|
||||
|
@ -232,6 +248,7 @@ $labels['importsuccess'] = 'Zaimportowano $nr zdarzeń.';
|
|||
$labels['importnone'] = 'Nie znaleziono zdarzeń do zaimportowania.';
|
||||
$labels['importerror'] = 'Wystąpił błąd podczas importu.';
|
||||
$labels['aclnorights'] = 'Nie masz uprawnień administracyjnych dla tego kalendarza.';
|
||||
$labels['importtext'] = 'Możesz przesyłać wydarzenia <a href="https://wikipedia.org/wiki/ICalendar">iCalendar</a>w formacie (.ics).';
|
||||
$labels['changeeventconfirm'] = 'Zmień zdarzenie';
|
||||
$labels['removeeventconfirm'] = 'Usuń zdarzenie';
|
||||
$labels['changerecurringeventwarning'] = 'To jest zdarzenie powtarzalne. Czy chcesz zmienić bieżące zdarzenie, bieżące i przyszłe, wszystkie, a może zapisać je jako nowe zdarzenie?';
|
||||
|
@ -241,11 +258,12 @@ $labels['currentevent'] = 'Bieżące';
|
|||
$labels['futurevents'] = 'Przyszłe';
|
||||
$labels['allevents'] = 'Wszystkie';
|
||||
$labels['saveasnew'] = 'Zapisz jako nowe';
|
||||
$labels['birthdays'] = 'Uruodziny';
|
||||
$labels['recurrenceerror'] = 'Nie można ustalić reguły powtarzalności dla podanej daty początkowej.';
|
||||
$labels['birthdays'] = 'Urodziny';
|
||||
$labels['birthdayscalendar'] = 'Kalendarz Urodzin';
|
||||
$labels['displaybirthdayscalendar'] = 'Wyświetl kalendarz urodzin';
|
||||
$labels['birthdayscalendarsources'] = 'Z tych książek adresowych';
|
||||
$labels['birthdayeventtitle'] = 'Urodziny $name\'s';
|
||||
$labels['birthdayeventtitle'] = 'Urodziny $name';
|
||||
$labels['birthdayage'] = 'Wiek $age';
|
||||
$labels['objectchangelog'] = 'Historia zmian';
|
||||
$labels['objectdiff'] = 'Zmiany od $rev1 do $rev2';
|
||||
|
@ -253,16 +271,18 @@ $labels['objectnotfound'] = 'Nie udało się wczytać zdarzenia';
|
|||
$labels['objectchangelognotavailable'] = 'Historia zmian jest niedostępna dla tego zdarzenia';
|
||||
$labels['objectdiffnotavailable'] = 'Nie można porównać wybranych wersji';
|
||||
$labels['revisionrestoreconfirm'] = 'Czy na pewno chcesz przywrócić wersję $rev tego zdarzenia? Bierzące zdarzenie zostanie zastąpione starszą wersją.';
|
||||
$labels['objectrestoresuccess'] = 'Wersja $rev została pomyślnie przywrócona';
|
||||
$labels['objectrestoreerror'] = 'Nie udało się przywrócić starej wersji';
|
||||
$labels['objectrestoresuccess'] = 'Wersja $rev poprawnie przywrócona';
|
||||
$labels['objectrestoreerror'] = 'Błąd przywracania starej wersji';
|
||||
$labels['arialabelminical'] = 'Wybór daty kalendarza';
|
||||
$labels['arialabelcalendarview'] = 'Podgląd kalendarza';
|
||||
$labels['arialabelsearchform'] = 'Formularz wyszukiwania zdarzeń';
|
||||
$labels['arialabelquicksearchbox'] = 'Fraza wyszukiwania zdarzeń';
|
||||
$labels['arialabelcalsearchform'] = 'Formularz wyszukiwania kalendarzy';
|
||||
$labels['calendaractions'] = 'Akcje kalendarzy';
|
||||
$labels['calendarprops'] = 'Właściwości kalendarza';
|
||||
$labels['arialabeleventattendees'] = 'Lista uczestników zdarzenia';
|
||||
$labels['arialabeleventresources'] = 'Lista zasobów zdarzenia';
|
||||
$labels['arialabelresourcesearchform'] = 'Formularz wyszukiwania zasobów';
|
||||
$labels['arialabelresourceselection'] = 'Dostępne zasoby';
|
||||
$labels['arialabeleventform'] = 'Formularz edycji wydarzenia';
|
||||
?>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
*/
|
||||
$labels['default_view'] = 'Visualização padrão';
|
||||
$labels['time_format'] = 'Formato da hora';
|
||||
$labels['timeslots'] = 'Time slots per hour';
|
||||
$labels['timeslots'] = 'Faixa de tempo por hora';
|
||||
$labels['first_day'] = 'Primeiro dia da semana';
|
||||
$labels['first_hour'] = 'Primeira hora a mostrar';
|
||||
$labels['workinghours'] = 'Horário de trabalho';
|
||||
|
@ -20,12 +20,20 @@ $labels['coloringmode0'] = 'De acordo com o calendário';
|
|||
$labels['coloringmode1'] = 'De acordo com a categoria';
|
||||
$labels['coloringmode2'] = 'Calendário para esboço, categoria para conteúdo';
|
||||
$labels['coloringmode3'] = 'Categoria para esboço, calendário para conteúdo';
|
||||
$labels['afternothing'] = 'Não fazer nada';
|
||||
$labels['aftertrash'] = 'Enviar para a lixeira';
|
||||
$labels['afterdelete'] = 'Deletar a mensagem';
|
||||
$labels['afterflagdeleted'] = 'Marcar como deletado';
|
||||
$labels['aftermoveto'] = 'Enviar para...';
|
||||
$labels['itipoptions'] = 'Convites de Eventos';
|
||||
$labels['afteraction'] = 'O que fazer após um convite ou atualização em mensagem for processada';
|
||||
$labels['showweekno'] = 'Exibir número de semanas';
|
||||
$labels['weeknonone'] = 'nunca';
|
||||
$labels['calendar'] = 'Calendário';
|
||||
$labels['calendars'] = 'Calendários';
|
||||
$labels['category'] = 'Categoria';
|
||||
$labels['categories'] = 'Categorias';
|
||||
$labels['createcalendar'] = 'Criar novo calendário';
|
||||
$labels['editcalendar'] = 'Editar propriedades do calendário';
|
||||
$labels['name'] = 'Nome';
|
||||
$labels['color'] = 'Cor';
|
||||
$labels['day'] = 'Dia';
|
||||
|
@ -48,14 +56,15 @@ $labels['all-day'] = 'dia todo';
|
|||
$labels['export'] = 'Exportar';
|
||||
$labels['exporttitle'] = 'Exportar para iCalendar';
|
||||
$labels['exportrange'] = 'Eventos de';
|
||||
$labels['exportattachments'] = 'With attachments';
|
||||
$labels['customdate'] = 'Custom date';
|
||||
$labels['exportattachments'] = 'Com anexos';
|
||||
$labels['customdate'] = 'Data personalizada';
|
||||
$labels['location'] = 'Local';
|
||||
$labels['url'] = 'URL';
|
||||
$labels['date'] = 'Data';
|
||||
$labels['start'] = 'Início';
|
||||
$labels['starttime'] = 'Hora de início';
|
||||
$labels['end'] = 'Término';
|
||||
$labels['endtime'] = 'Hora de término';
|
||||
$labels['repeat'] = 'Repetir';
|
||||
$labels['selectdate'] = 'Escolha a data';
|
||||
$labels['freebusy'] = 'Mostrar me como';
|
||||
|
@ -63,9 +72,11 @@ $labels['free'] = 'Disponível';
|
|||
$labels['busy'] = 'Ocupado';
|
||||
$labels['outofoffice'] = 'Fora de escritório';
|
||||
$labels['tentative'] = 'Tentativa';
|
||||
$labels['mystatus'] = 'Minha situação';
|
||||
$labels['status'] = 'Situação';
|
||||
$labels['status-confirmed'] = 'Confirmado';
|
||||
$labels['status-cancelled'] = 'Cancalado';
|
||||
$labels['status-tentative'] = 'Tentative';
|
||||
$labels['priority'] = 'Prioridade';
|
||||
$labels['sensitivity'] = 'Privacidade';
|
||||
$labels['public'] = 'público';
|
||||
|
@ -74,7 +85,7 @@ $labels['confidential'] = 'confidencial';
|
|||
$labels['links'] = 'Reference';
|
||||
$labels['alarms'] = 'Lembrete';
|
||||
$labels['comment'] = 'Comentário';
|
||||
$labels['created'] = 'Created';
|
||||
$labels['created'] = 'Criado';
|
||||
$labels['changed'] = 'Última modificação';
|
||||
$labels['unknown'] = 'Desconhecido';
|
||||
$labels['eventoptions'] = 'Opções';
|
||||
|
@ -85,6 +96,7 @@ $labels['printdescriptions'] = 'Descrições de impressão';
|
|||
$labels['parentcalendar'] = 'Inserir dentro';
|
||||
$labels['searchearlierdates'] = '« Procurar por eventos anteriores';
|
||||
$labels['searchlaterdates'] = 'Procurar por eventos posteriores »';
|
||||
$labels['laterevents'] = 'Mais tarde';
|
||||
$labels['andnmore'] = '$nr mais...';
|
||||
$labels['togglerole'] = 'Clique para alternar o papel';
|
||||
$labels['createfrommail'] = 'Salvar como evento';
|
||||
|
@ -94,11 +106,18 @@ $labels['onemonthback'] = '1 mês atrás';
|
|||
$labels['nmonthsback'] = '$nr meses atrás';
|
||||
$labels['showurl'] = 'Mostrar URL do calendário';
|
||||
$labels['showurldescription'] = 'Use o seguinte endereço para acessar (somente leitura) seu calendário em outras aplicações. Você pode copiar e colar este endereço em qualquer software de calendário que suporte o formato iCal.';
|
||||
$labels['caldavurldescription'] = 'Copy this address to a <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> client application (e.g. Evolution or Mozilla Thunderbird) to fully synchronize this specific calendar with your computer or mobile device.';
|
||||
$labels['caldavurldescription'] = 'Copie esse endereço para um aplicativo cliente do <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> (ex. Evolution ou Mozilla Thunderbird) para sincronização completa desse calendário específico com seu computador ou celular.';
|
||||
$labels['findcalendars'] = 'Buscar calendários...';
|
||||
$labels['searchterms'] = 'Search terms';
|
||||
$labels['searchterms'] = 'Buscar termos';
|
||||
$labels['calsearchresults'] = 'Calendários disponíveis';
|
||||
$labels['calendarsubscribe'] = 'Listar permanentemente';
|
||||
$labels['nocalendarsfound'] = 'Nenhum calendário encontrado';
|
||||
$labels['nrcalendarsfound'] = '$nr calendários encontrados';
|
||||
$labels['quickview'] = 'Ver apenas esse calendário';
|
||||
$labels['invitationspending'] = 'Convites pendentes';
|
||||
$labels['invitationsdeclined'] = 'Convites recusados';
|
||||
$labels['changepartstat'] = 'Alterar situação de participantes';
|
||||
$labels['rsvpcomment'] = 'Texto do convite';
|
||||
$labels['listrange'] = 'Intervalo para exibir:';
|
||||
$labels['listsections'] = 'Dividir em:';
|
||||
$labels['smartsections'] = 'Seções inteligentes';
|
||||
|
@ -107,12 +126,13 @@ $labels['today'] = 'Hoje';
|
|||
$labels['tomorrow'] = 'Amanhã';
|
||||
$labels['thisweek'] = 'Esta semana';
|
||||
$labels['nextweek'] = 'Próxima semana';
|
||||
$labels['prevweek'] = 'Semana passada';
|
||||
$labels['thismonth'] = 'Este mês';
|
||||
$labels['nextmonth'] = 'Próximo mês';
|
||||
$labels['weekofyear'] = 'Semana';
|
||||
$labels['pastevents'] = 'Passado';
|
||||
$labels['futureevents'] = 'Futuro';
|
||||
$labels['showalarms'] = 'Mostrar lembrentes';
|
||||
$labels['showalarms'] = 'Mostrar lembretes';
|
||||
$labels['defaultalarmtype'] = 'Configuração de lembrete padrão';
|
||||
$labels['defaultalarmoffset'] = 'Horário padrão de lembrete';
|
||||
$labels['attendee'] = 'Participante';
|
||||
|
@ -124,15 +144,16 @@ $labels['roleorganizer'] = 'Organizador';
|
|||
$labels['rolerequired'] = 'Obrigatório';
|
||||
$labels['roleoptional'] = 'Opcional';
|
||||
$labels['rolechair'] = 'Cadeira';
|
||||
$labels['rolenonparticipant'] = 'Ausente';
|
||||
$labels['cutypeindividual'] = 'Individual';
|
||||
$labels['cutypegroup'] = 'Grupo';
|
||||
$labels['cutyperesource'] = 'Recurso';
|
||||
$labels['cutyperoom'] = 'Sala';
|
||||
$labels['availfree'] = 'Disponível';
|
||||
$labels['availbusy'] = 'Ocupado';
|
||||
$labels['availunknown'] = 'Desconhecido';
|
||||
$labels['availtentative'] = 'Tentativa';
|
||||
$labels['availoutofoffice'] = 'Fora de escritório';
|
||||
$labels['delegatedto'] = 'Delegado para:';
|
||||
$labels['delegatedfrom'] = 'Delegado de:';
|
||||
$labels['scheduletime'] = 'Procurar disponibilidade';
|
||||
$labels['sendinvitations'] = 'Enviar convites';
|
||||
$labels['sendnotifications'] = 'Avisar os participantes sobre as modificações';
|
||||
|
@ -141,6 +162,7 @@ $labels['onlyworkinghours'] = 'Procurar disponibilidade dentro do meu horário d
|
|||
$labels['reqallattendees'] = 'Obrigatório/todos os participantes';
|
||||
$labels['prevslot'] = 'Espaço anterior';
|
||||
$labels['nextslot'] = 'Próximo espaço';
|
||||
$labels['suggestedslot'] = 'Espaço sugerido';
|
||||
$labels['noslotfound'] = 'Incapaz de encontrar um horário disponível';
|
||||
$labels['invitationsubject'] = 'Você foi convidado para "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees\n\nSegue em anexo um arquivo iCalendar com todos os detalhes do evento na qual você pode importar para sua aplicação de calendário.";
|
||||
|
@ -148,20 +170,27 @@ $labels['invitationattendlinks'] = "No caso do seu cliente de e-mail não suport
|
|||
$labels['eventupdatesubject'] = '"$title" foi atualizado';
|
||||
$labels['eventupdatesubjectempty'] = 'Um evento do seu interesse foi atualizado';
|
||||
$labels['eventupdatemailbody'] = "*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees\n\nSegue em anexo um arquivo iCalendar com os detalhes atualizados do evento na qual você pode importar para sua aplicação de calendário.";
|
||||
$labels['eventcancelsubject'] = '"$title" foi cancelado.';
|
||||
$labels['eventcancelmailbody'] = "*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees\n\nO evento foi cancelado por \$organizer.\n\nSegue em anexo um arquivo iCalendar com os detalhes atualizados do evento.";
|
||||
$labels['itipobjectnotfound'] = 'O evento referenciado por esta mensagem não foi encontrado em seu calendário.';
|
||||
$labels['itipmailbodyaccepted'] = "\$sender aceitou o convite para o seguinte evento:\n\n*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees";
|
||||
$labels['itipmailbodytentative'] = "\$sender aceitou como tentativa o convite para o seguinte evento:\n\n*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees";
|
||||
$labels['itipmailbodydeclined'] = "\$sender recusou o convite para o seguinte evento:\n\n*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees";
|
||||
$labels['itipmailbodycancel'] = "\$sender rejeitou sua participação no seguinte evento:\n\n*\$title*\n\nQuando: \$date";
|
||||
$labels['itipmailbodydelegated'] = "\$sender delegou a participação no seguinte evento:\n\n*\$title*\n\nWhen: \$date";
|
||||
$labels['itipmailbodydelegatedto'] = "\$sender delegou a sua participação no seguinte evento:\n\n*\$title*\n\nWhen: \$date";
|
||||
$labels['itipdeclineevent'] = 'Você deseja recusar o convite para este evento?';
|
||||
$labels['declinedeleteconfirm'] = 'Do you also want to delete this declined event from your calendar?';
|
||||
$labels['itipcomment'] = 'Invitation/notification comment';
|
||||
$labels['declinedeleteconfirm'] = 'Deseja também deletar esse evento recusado do seu calendário?';
|
||||
$labels['itipcomment'] = 'Comentário do Convite/Notificação';
|
||||
$labels['itipcommenttitle'] = 'Estas observações serão enviadas com o convite/notificação aos participantes.';
|
||||
$labels['notanattendee'] = 'Você não está listado como um participante deste evento';
|
||||
$labels['eventcancelled'] = 'O evento foi cancelado';
|
||||
$labels['saveincalendar'] = 'salvar em';
|
||||
$labels['updatemycopy'] = 'Atualize em meu calendário';
|
||||
$labels['savetocalendar'] = 'Gravar no calendário';
|
||||
$labels['openpreview'] = 'Verificar calendário';
|
||||
$labels['noearlierevents'] = 'Sem eventos anteriores';
|
||||
$labels['nolaterevents'] = 'Sem eventos posteriores';
|
||||
$labels['resource'] = 'Recurso';
|
||||
$labels['addresource'] = 'Livro de recursos';
|
||||
$labels['findresources'] = 'Encontrar recursos';
|
||||
|
@ -178,7 +207,7 @@ $labels['tabsharing'] = 'Compartilhamento';
|
|||
$labels['deleteobjectconfirm'] = 'Você realmente deseja remover este evento?';
|
||||
$labels['deleteventconfirm'] = 'Você realmente deseja remover este evento?';
|
||||
$labels['deletecalendarconfirm'] = 'Você realmente deseja excluir este calendário com todos os seus eventos?';
|
||||
$labels['deletecalendarconfirmrecursive'] = 'Do you really want to delete this calendar with all its events and sub-calendars?';
|
||||
$labels['deletecalendarconfirmrecursive'] = 'Tem a certeza que quer eliminar este calendário com todos os seus eventos e sub-calendários?';
|
||||
$labels['savingdata'] = 'Salvando dados...';
|
||||
$labels['errorsaving'] = 'Falha ao salvar as modificações.';
|
||||
$labels['operationfailed'] = 'A operação requisitada falhou.';
|
||||
|
@ -199,22 +228,42 @@ $labels['itipsendsuccess'] = 'Convite enviado aos participantes.';
|
|||
$labels['itipresponseerror'] = 'Falha ao enviar a resposta para este convite de evento';
|
||||
$labels['itipinvalidrequest'] = 'Este convite não é mais válido';
|
||||
$labels['sentresponseto'] = 'Resposta de convite enviada com sucesso para $mailto';
|
||||
$labels['localchangeswarning'] = 'You are about to make changes that will only be reflected on your calendar and not be sent to the organizer of the event.';
|
||||
$labels['localchangeswarning'] = 'Você está prestes a fazer modificações que serão apenas alteradas no seu calendário e não será enviado ao organizador do evento.';
|
||||
$labels['importsuccess'] = 'Importado com sucesso $nr eventos';
|
||||
$labels['importnone'] = 'Não há eventos a serem importados';
|
||||
$labels['importerror'] = 'Ocorreu um erro na importação';
|
||||
$labels['aclnorights'] = 'Você não tem permissão de administrador neste calendário.';
|
||||
$labels['changeeventconfirm'] = 'Trocar evento';
|
||||
$labels['removeeventconfirm'] = 'Deletar evento';
|
||||
$labels['changerecurringeventwarning'] = 'Este é um evento com repetição. Você gostaria de editar o evento atual somente, estas e todas as futuras ocorrências ou salvar este como um novo evento?';
|
||||
$labels['removerecurringeventwarning'] = 'Este evento é recorrente. Deseja eliminar a ocorrência atual, esta e todas as futuras ocorrências ou todas as ocorrências do evento?';
|
||||
$labels['removerecurringallonly'] = 'Este evento é recorrente. Como participante você só pode apagar o evento com todas as ocorrências.';
|
||||
$labels['currentevent'] = 'Atual';
|
||||
$labels['futurevents'] = 'Futuro';
|
||||
$labels['allevents'] = 'Todos';
|
||||
$labels['saveasnew'] = 'Salvar como novo';
|
||||
$labels['birthdays'] = 'Birthdays';
|
||||
$labels['birthdayscalendar'] = 'Birthdays Calendar';
|
||||
$labels['displaybirthdayscalendar'] = 'Display birthdays calendar';
|
||||
$labels['birthdayscalendarsources'] = 'From these address books';
|
||||
$labels['birthdayeventtitle'] = '$name\'s Birthday';
|
||||
$labels['birthdayage'] = 'Age $age';
|
||||
$labels['birthdays'] = 'Aniversários';
|
||||
$labels['birthdayscalendar'] = 'Calendário de Aniversários';
|
||||
$labels['displaybirthdayscalendar'] = 'Mostrar calendário de aniversários';
|
||||
$labels['birthdayscalendarsources'] = 'Desses catálogos de endereços';
|
||||
$labels['birthdayeventtitle'] = '$name\' - Aniversário';
|
||||
$labels['birthdayage'] = '$age anos';
|
||||
$labels['objectchangelog'] = 'Mudar Histórico';
|
||||
$labels['objectdiff'] = 'Alterações da $rev1 para $rev2';
|
||||
$labels['objectnotfound'] = 'Falha ao ler os dados do evento';
|
||||
$labels['objectchangelognotavailable'] = 'Não é possível alterar o histórico deste evento';
|
||||
$labels['objectdiffnotavailable'] = 'Não é possível comparar as revisões selecionadas';
|
||||
$labels['revisionrestoreconfirm'] = 'Confirmar a restauração da revisão $rev deste evento? Os dados atuais serão substituídos pelos da versão anterior.';
|
||||
$labels['objectrestoresuccess'] = 'Revisão $rev restaurada com sucesso';
|
||||
$labels['objectrestoreerror'] = 'Falha ao restaurar a revisão antiga';
|
||||
$labels['arialabelminical'] = 'Seleção da data do calendário';
|
||||
$labels['arialabelcalendarview'] = 'Vista do calendário';
|
||||
$labels['arialabelsearchform'] = 'Formulário de pesquisa de eventos';
|
||||
$labels['arialabelquicksearchbox'] = 'Pesquisa de eventos';
|
||||
$labels['arialabelcalsearchform'] = 'Formulário de pesquisa de calendários';
|
||||
$labels['calendaractions'] = 'Ações do calendário';
|
||||
$labels['arialabeleventattendees'] = 'Lista de participantes do evento';
|
||||
$labels['arialabeleventresources'] = 'Lista de recursos para eventos';
|
||||
$labels['arialabelresourcesearchform'] = 'Formulário de pesquisa de recursos';
|
||||
$labels['arialabelresourceselection'] = 'Recursos disponíveis';
|
||||
?>
|
||||
|
|
|
@ -32,7 +32,6 @@ $labels['calendars'] = 'Calendários';
|
|||
$labels['category'] = 'Categoria';
|
||||
$labels['categories'] = 'Categorias';
|
||||
$labels['createcalendar'] = 'Criar um novo calendário';
|
||||
$labels['editcalendar'] = 'Alterar propriedades do calendário';
|
||||
$labels['name'] = 'Nome';
|
||||
$labels['color'] = 'Cor';
|
||||
$labels['day'] = 'Dia';
|
||||
|
@ -75,6 +74,7 @@ $labels['mystatus'] = 'O meu estado';
|
|||
$labels['status'] = 'Estado';
|
||||
$labels['status-confirmed'] = 'Confirmado';
|
||||
$labels['status-cancelled'] = 'Cancelado';
|
||||
$labels['status-tentative'] = 'Tentativa';
|
||||
$labels['priority'] = 'Prioridade';
|
||||
$labels['sensitivity'] = 'Privacidade';
|
||||
$labels['public'] = 'público';
|
||||
|
@ -151,8 +151,6 @@ $labels['availbusy'] = 'Ocupado';
|
|||
$labels['availunknown'] = 'Desconhecido';
|
||||
$labels['availtentative'] = 'Tentativa';
|
||||
$labels['availoutofoffice'] = 'Ausente';
|
||||
$labels['delegatedto'] = 'Delegado a:';
|
||||
$labels['delegatedfrom'] = 'Delegado de:';
|
||||
$labels['scheduletime'] = 'Procurar disponibilidade';
|
||||
$labels['sendinvitations'] = 'Enviar convites';
|
||||
$labels['sendnotifications'] = 'Avisar os participantes sobre as alterações';
|
||||
|
@ -164,7 +162,6 @@ $labels['nextslot'] = 'Próximo espaço';
|
|||
$labels['suggestedslot'] = 'Espaço sugerido';
|
||||
$labels['noslotfound'] = 'Incapaz de encontrar um horário disponível';
|
||||
$labels['invitationsubject'] = 'Foi convidado para "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nQuando: \$date\n\nConvidados: \$attendees\n\nSegue em anexo um arquivo iCalendar com todos os detalhes de um evento, o qual pode importar para o seu calendário.";
|
||||
$labels['invitationattendlinks'] = "No caso do seu cliente de e-mail não suportar pedidos do tipo iTIP, pode usar o seguinte link para aceitar ou recusar este convite:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" foi atualizado.';
|
||||
$labels['eventupdatesubjectempty'] = 'Um evento do seu interesse foi atualizado';
|
||||
|
|
|
@ -27,12 +27,18 @@ $labels['afterflagdeleted'] = 'Пометить как удалённое';
|
|||
$labels['aftermoveto'] = 'Переместить в...';
|
||||
$labels['itipoptions'] = 'Приглашения на события';
|
||||
$labels['afteraction'] = 'После того, как приглашение или сообщение о его изменении обработано';
|
||||
$labels['showweekno'] = 'Показать номера недели';
|
||||
$labels['weeknonone'] = 'никогда';
|
||||
$labels['weeknodatepicker'] = 'только в режиме выбора даты';
|
||||
$labels['weeknoall'] = 'посмотреть в режиме выбора даты и календаря';
|
||||
$labels['calendar'] = 'Календарь';
|
||||
$labels['calendars'] = 'Календари';
|
||||
$labels['category'] = 'Категория';
|
||||
$labels['categories'] = 'Категории';
|
||||
$labels['addcalendar'] = 'Добавить календарь';
|
||||
$labels['createcalendar'] = 'Создать новый календарь';
|
||||
$labels['editcalendar'] = 'Редактировать свойства календаря';
|
||||
$labels['editcalendar'] = 'Редактировать/Поделиться календарь';
|
||||
$labels['deletecalendar'] = 'Удалить календарь';
|
||||
$labels['name'] = 'Имя';
|
||||
$labels['color'] = 'Цвет';
|
||||
$labels['day'] = 'День';
|
||||
|
@ -75,6 +81,7 @@ $labels['mystatus'] = 'Мой статус';
|
|||
$labels['status'] = 'Статус';
|
||||
$labels['status-confirmed'] = 'Подтвеждённый';
|
||||
$labels['status-cancelled'] = 'Отмененные';
|
||||
$labels['status-tentative'] = 'Неопределённо';
|
||||
$labels['priority'] = 'Приоритет';
|
||||
$labels['sensitivity'] = 'Секретность';
|
||||
$labels['public'] = 'общедоступная';
|
||||
|
@ -94,6 +101,8 @@ $labels['printdescriptions'] = 'Печатать описания';
|
|||
$labels['parentcalendar'] = 'Вставить внутри';
|
||||
$labels['searchearlierdates'] = '« Искать события раньше';
|
||||
$labels['searchlaterdates'] = 'Искать события позже »';
|
||||
$labels['earlierevents'] = 'Ранее';
|
||||
$labels['laterevents'] = 'Позднее';
|
||||
$labels['andnmore'] = '$nr больше...';
|
||||
$labels['togglerole'] = 'Кликните для переключения роли';
|
||||
$labels['createfrommail'] = 'Сохранить как событие';
|
||||
|
@ -104,8 +113,11 @@ $labels['nmonthsback'] = '$nr месяца(ев) назад';
|
|||
$labels['showurl'] = 'Показать URL календаря';
|
||||
$labels['showurldescription'] = 'Используйте следующий адрес для просмотра Вашего календаря из других приложений. Вы можете скопировать и вставить это в любое приложение которое поддерживает формат iCal.';
|
||||
$labels['caldavurldescription'] = 'Скопируйте этот адрес в клиент, <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">поддерживающий CalDAV</a> (например, Evolution или Mozilla Thunderbird) для полной синхронизации данного календаря со своим компьютером или мобильным устройством.';
|
||||
$labels['showfburl'] = 'Показать свободный-занятый URL';
|
||||
$labels['fburldescription'] = 'Используйте следующий адрес для доступа к информации свободе-занятости из других приложений. Вы можете скопировать и вставить это в любое программное обеспечение календаря, которое поддерживает информацию о свободе-занятости в формате iCal. Для этого URL аутентификация не требуется.';
|
||||
$labels['findcalendars'] = 'Найти календари...';
|
||||
$labels['searchterms'] = 'Условия поиска';
|
||||
$labels['findevents'] = 'Найти события';
|
||||
$labels['calsearchresults'] = 'Доступные календари';
|
||||
$labels['calendarsubscribe'] = 'Всегда показывать';
|
||||
$labels['nocalendarsfound'] = 'Календарей не найдено';
|
||||
|
@ -115,6 +127,8 @@ $labels['invitationspending'] = 'Ожидающие приглашения';
|
|||
$labels['invitationsdeclined'] = 'Отклонённые приглашения';
|
||||
$labels['changepartstat'] = 'Изменить статус участника';
|
||||
$labels['rsvpcomment'] = 'Текст приглашения';
|
||||
$labels['eventstartsync'] = 'Переместить дату начала события к первому случаю';
|
||||
$labels['weekshort'] = 'Нд';
|
||||
$labels['listrange'] = 'Диапазон:';
|
||||
$labels['listsections'] = 'Разделить на:';
|
||||
$labels['smartsections'] = 'Умные секции';
|
||||
|
@ -151,8 +165,6 @@ $labels['availbusy'] = 'Занят';
|
|||
$labels['availunknown'] = 'Неизвестно';
|
||||
$labels['availtentative'] = 'Предварительно';
|
||||
$labels['availoutofoffice'] = 'Вне офиса';
|
||||
$labels['delegatedto'] = 'Поручено:';
|
||||
$labels['delegatedfrom'] = 'Поручено от:';
|
||||
$labels['scheduletime'] = 'Найти доступность';
|
||||
$labels['sendinvitations'] = 'Отправить приглашения';
|
||||
$labels['sendnotifications'] = 'Уведомить участников об изменениях';
|
||||
|
@ -164,7 +176,7 @@ $labels['nextslot'] = 'Следующее время';
|
|||
$labels['suggestedslot'] = 'Предлагаемое время';
|
||||
$labels['noslotfound'] = 'Невозможно найти свободное время';
|
||||
$labels['invitationsubject'] = 'Вы приглашены на "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees\n\nВо вложении вы найдёте файл iCalendar со всеми деталями события, который Вы можете импортировать в Вашу программу-ежедневник.";
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nКогда: \$date\n\nПриглашенные: \$attendees\n\nВо вложении вы найдёте файл iCalendar со всеми деталями события, который вы можете импортировать в приложение календаря.";
|
||||
$labels['invitationattendlinks'] = "В случае, если Ваш почтовый клиент не поддерживает запросы iTip, Вы можете использовать ссылку данную ниже, чтобы принять или отклонить это приглашение:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" было обновлено';
|
||||
$labels['eventupdatesubjectempty'] = 'Событие, которое касается Вас, было обновлено';
|
||||
|
@ -190,11 +202,13 @@ $labels['savetocalendar'] = 'Сохранить в календарь';
|
|||
$labels['openpreview'] = 'Проверить календарь';
|
||||
$labels['noearlierevents'] = 'Нет предыдущих событий';
|
||||
$labels['nolaterevents'] = 'Нет последующих событий';
|
||||
$labels['legend'] = 'Легенда';
|
||||
$labels['resource'] = 'Ресурс';
|
||||
$labels['addresource'] = 'Зарезервировать ресурс';
|
||||
$labels['findresources'] = 'Найти ресурсы';
|
||||
$labels['resourcedetails'] = 'Подробнее';
|
||||
$labels['resourceavailability'] = 'Доступность';
|
||||
$labels['resourceprops'] = 'Свойства ресурса';
|
||||
$labels['resourceowner'] = 'Владелец';
|
||||
$labels['resourceadded'] = 'Ресурс добавлен в ваше событие';
|
||||
$labels['tabsummary'] = 'Сводка';
|
||||
|
@ -211,6 +225,7 @@ $labels['savingdata'] = 'Сохранение данных...';
|
|||
$labels['errorsaving'] = 'Ошибка сохранения изменений.';
|
||||
$labels['operationfailed'] = 'Не удалось выполнить запрошенную операцию.';
|
||||
$labels['invalideventdates'] = 'Неверная дата! Пожалуйста проверьте данные.';
|
||||
$labels['emptyeventtitle'] = 'Сводка событий не может быть пустой.';
|
||||
$labels['invalidcalendarproperties'] = 'Неверные свойства календаря! Пожалуйста введите допустимые данные.';
|
||||
$labels['searchnoresults'] = 'Событие не найдено в выбранных календарях.';
|
||||
$labels['successremoval'] = 'Событие успешно удалено.';
|
||||
|
@ -223,6 +238,7 @@ $labels['nowritecalendarfound'] = 'Не найден календарь для
|
|||
$labels['importedsuccessfully'] = 'Событие успешно добавлено в \'$calendar\'';
|
||||
$labels['updatedsuccessfully'] = 'Событие успешно обновлено в \'$calendar\'';
|
||||
$labels['attendeupdateesuccess'] = 'Успешно обновлен статус участника';
|
||||
$labels['errorunknownattendee'] = 'Не удалось найти информацию об участнике.';
|
||||
$labels['itipsendsuccess'] = 'Приглашания отправлены участникам.';
|
||||
$labels['itipresponseerror'] = 'Не удалось послать ответ на это приглашение';
|
||||
$labels['itipinvalidrequest'] = 'Это приглашение больше не действительно';
|
||||
|
@ -232,6 +248,7 @@ $labels['importsuccess'] = 'Успешно импортировано $nr соб
|
|||
$labels['importnone'] = 'Не найдено событий для импорта';
|
||||
$labels['importerror'] = 'Ошибка при импорте';
|
||||
$labels['aclnorights'] = 'Вы не имеете прав администратора для этого календаря.';
|
||||
$labels['importtext'] = 'Вы можете загружать события в формате <a href="https://wikipedia.org/wiki/ICalendar">iCalendar</a> (.ics).';
|
||||
$labels['changeeventconfirm'] = 'Изменить событие';
|
||||
$labels['removeeventconfirm'] = 'Удалить событие';
|
||||
$labels['changerecurringeventwarning'] = 'Это - повторяющееся событие. Хотели бы Вы редактировать только текущее событие, это и все будущие повторения, все события или сохранять его как новое событие?';
|
||||
|
@ -241,6 +258,7 @@ $labels['currentevent'] = 'Текущее';
|
|||
$labels['futurevents'] = 'Будущие';
|
||||
$labels['allevents'] = 'Все';
|
||||
$labels['saveasnew'] = 'Сохранить как новое';
|
||||
$labels['recurrenceerror'] = 'Не удалось разрешить правило повторения для указанной даты начала.';
|
||||
$labels['birthdays'] = 'Дни рождения';
|
||||
$labels['birthdayscalendar'] = 'Календарь Дней Рождения';
|
||||
$labels['displaybirthdayscalendar'] = 'Показывать календарь Дней Рождения';
|
||||
|
@ -261,8 +279,10 @@ $labels['arialabelsearchform'] = 'Форма поиска событий';
|
|||
$labels['arialabelquicksearchbox'] = 'Поиск событий';
|
||||
$labels['arialabelcalsearchform'] = 'Форма поиска календарей';
|
||||
$labels['calendaractions'] = 'Действия с календарями';
|
||||
$labels['calendarprops'] = 'Свойства календаря';
|
||||
$labels['arialabeleventattendees'] = 'Участники события';
|
||||
$labels['arialabeleventresources'] = 'Ресурсы события';
|
||||
$labels['arialabelresourcesearchform'] = 'Форма поиска ресурсов';
|
||||
$labels['arialabelresourceselection'] = 'Доступные ресурсы';
|
||||
$labels['arialabeleventform'] = 'Форма редактирования события';
|
||||
?>
|
||||
|
|
|
@ -27,7 +27,6 @@ $labels['calendars'] = 'Kalendáre';
|
|||
$labels['category'] = 'Kategória';
|
||||
$labels['categories'] = 'Kategórie';
|
||||
$labels['createcalendar'] = 'Vytvoriť nový kalendár';
|
||||
$labels['editcalendar'] = 'Upraviť nastavenie kalendára';
|
||||
$labels['name'] = 'Meno';
|
||||
$labels['color'] = 'Farba';
|
||||
$labels['day'] = 'Deň';
|
||||
|
@ -70,6 +69,7 @@ $labels['mystatus'] = 'Môj stav';
|
|||
$labels['status'] = 'Stav';
|
||||
$labels['status-confirmed'] = 'Potvrdené';
|
||||
$labels['status-cancelled'] = 'Zrušené';
|
||||
$labels['status-tentative'] = 'Nezáväzne';
|
||||
$labels['priority'] = 'Priorita';
|
||||
$labels['importrange'] = 'Udalosti z';
|
||||
$labels['weekofyear'] = 'Týždeň';
|
||||
|
|
|
@ -32,7 +32,6 @@ $labels['calendars'] = 'Koledarji';
|
|||
$labels['category'] = 'Kategorija';
|
||||
$labels['categories'] = 'Kategorije';
|
||||
$labels['createcalendar'] = 'Ustvari nov koledar';
|
||||
$labels['editcalendar'] = 'Uredi nastavitve koledarja';
|
||||
$labels['name'] = 'Ime';
|
||||
$labels['color'] = 'Barva';
|
||||
$labels['day'] = 'Dan';
|
||||
|
@ -75,6 +74,7 @@ $labels['mystatus'] = 'Moj status';
|
|||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Potrjeno';
|
||||
$labels['status-cancelled'] = 'Preklicano';
|
||||
$labels['status-tentative'] = 'Pogojno';
|
||||
$labels['priority'] = 'Prednost';
|
||||
$labels['sensitivity'] = 'Zasebnost';
|
||||
$labels['public'] = 'javno';
|
||||
|
@ -94,6 +94,7 @@ $labels['printdescriptions'] = 'Opis za tisk';
|
|||
$labels['parentcalendar'] = 'Vstavi';
|
||||
$labels['searchearlierdates'] = '« Išči po prejšnjih dogodkih';
|
||||
$labels['searchlaterdates'] = 'Išči po kasnejših dogodkih »';
|
||||
$labels['laterevents'] = 'Kasneje';
|
||||
$labels['andnmore'] = '$nr več...';
|
||||
$labels['togglerole'] = 'Klikni za prikaz vloge';
|
||||
$labels['createfrommail'] = 'Shrani kot dogodek';
|
||||
|
@ -151,8 +152,6 @@ $labels['availbusy'] = 'Zaseden';
|
|||
$labels['availunknown'] = 'Neznano';
|
||||
$labels['availtentative'] = 'Pogojno';
|
||||
$labels['availoutofoffice'] = 'Izven pisarne';
|
||||
$labels['delegatedto'] = 'Preneseno na:';
|
||||
$labels['delegatedfrom'] = 'Preneseno od:';
|
||||
$labels['scheduletime'] = 'Najdi razpoložljivost';
|
||||
$labels['sendinvitations'] = 'Pošlji vabila';
|
||||
$labels['sendnotifications'] = 'Sporoči udeležencem spremembe';
|
||||
|
@ -164,7 +163,6 @@ $labels['nextslot'] = 'Naslednje mesto';
|
|||
$labels['suggestedslot'] = 'Predlagano mesto';
|
||||
$labels['noslotfound'] = 'Ne najdem prostega mesta';
|
||||
$labels['invitationsubject'] = 'Vabljeni ste v "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nWhen: \$date\n\nInvitees: \$attendees\n\nProsim preglejte pripeto iCalendar datoteko z vsemi informacijami o dogodku. Datoteko lahko uvozite v vašo koledar aplikacijo.";
|
||||
$labels['invitationattendlinks'] = "V kolikor vaš email klient ne podpira iTip zahtevkov lahko uporabite naslednjo povezavo za sprejem ali zavrnitev vabila:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" je bil posodobljen';
|
||||
$labels['eventupdatesubjectempty'] = 'Dogodek, ki vas zadeva je bil posodobljen';
|
||||
|
|
260
localization/sv.inc
Normal file
|
@ -0,0 +1,260 @@
|
|||
<?php
|
||||
/**
|
||||
* Localizations for Kolab Calendar plugin
|
||||
*
|
||||
* Copyright (C) 2014, Kolab Systems AG
|
||||
*
|
||||
* For translation see https://www.transifex.com/projects/p/kolab/resource/calendar/
|
||||
*/
|
||||
$labels['default_view'] = 'Standardvy';
|
||||
$labels['time_format'] = 'Tidformat';
|
||||
$labels['timeslots'] = 'Tidsluckor per timme';
|
||||
$labels['first_day'] = 'Första veckodag';
|
||||
$labels['first_hour'] = 'Dagen börjar';
|
||||
$labels['workinghours'] = 'Arbetstid';
|
||||
$labels['add_category'] = 'Lägg till kategori';
|
||||
$labels['remove_category'] = 'Ta bort kategori';
|
||||
$labels['defaultcalendar'] = 'Skapa nya händelser i';
|
||||
$labels['eventcoloring'] = 'Händelsefärg';
|
||||
$labels['coloringmode0'] = 'Enligt kalender';
|
||||
$labels['coloringmode1'] = 'Enligt kategori';
|
||||
$labels['coloringmode2'] = 'Kalender för översikt, kategori för innehåll';
|
||||
$labels['coloringmode3'] = 'Kategori för översikt, kalender för innehåll';
|
||||
$labels['afternothing'] = 'Gör inget';
|
||||
$labels['aftertrash'] = 'Flytta till papperskorgen';
|
||||
$labels['afterdelete'] = 'Ta bort meddelandet';
|
||||
$labels['afterflagdeleted'] = 'Märk som borttaget';
|
||||
$labels['aftermoveto'] = 'Flytta till ...';
|
||||
$labels['itipoptions'] = 'Händelseinbjudningar';
|
||||
$labels['afteraction'] = 'Efter en inbjudan eller uppdatering bearbetats meddelande';
|
||||
$labels['calendar'] = 'Kalender';
|
||||
$labels['calendars'] = 'Kalendrar';
|
||||
$labels['category'] = 'Kategori';
|
||||
$labels['categories'] = 'Kategorier';
|
||||
$labels['createcalendar'] = 'Skapa ny kalender';
|
||||
$labels['name'] = 'Namn';
|
||||
$labels['color'] = 'Färg';
|
||||
$labels['day'] = 'Dag';
|
||||
$labels['week'] = 'Vecka';
|
||||
$labels['month'] = 'Månad';
|
||||
$labels['agenda'] = 'Agenda';
|
||||
$labels['new'] = 'Ny';
|
||||
$labels['new_event'] = 'Ny händelse';
|
||||
$labels['edit_event'] = 'Redigera händelse';
|
||||
$labels['edit'] = 'Redigera';
|
||||
$labels['save'] = 'Spara';
|
||||
$labels['removelist'] = 'Ta bort från lista';
|
||||
$labels['cancel'] = 'Avbryt';
|
||||
$labels['select'] = 'Välj';
|
||||
$labels['print'] = 'Skriv ut';
|
||||
$labels['printtitle'] = 'Skriv ut kalendrar';
|
||||
$labels['title'] = 'Sammanfattning';
|
||||
$labels['description'] = 'Beskrivning';
|
||||
$labels['all-day'] = 'heldag';
|
||||
$labels['export'] = 'Exportera';
|
||||
$labels['exporttitle'] = 'Exportera till iCalendar';
|
||||
$labels['exportrange'] = 'Händelser från';
|
||||
$labels['exportattachments'] = 'Med bilagor';
|
||||
$labels['customdate'] = 'Anpassat datum';
|
||||
$labels['location'] = 'Plats';
|
||||
$labels['url'] = 'URL';
|
||||
$labels['date'] = 'Datum';
|
||||
$labels['start'] = 'Start';
|
||||
$labels['starttime'] = 'Starttid';
|
||||
$labels['end'] = 'Slut';
|
||||
$labels['endtime'] = 'Sluttid';
|
||||
$labels['repeat'] = 'Upprepa';
|
||||
$labels['selectdate'] = 'Välj datum';
|
||||
$labels['freebusy'] = 'Visa mig som';
|
||||
$labels['free'] = 'Ledig';
|
||||
$labels['busy'] = 'Upptagen';
|
||||
$labels['outofoffice'] = 'Frånvarande';
|
||||
$labels['tentative'] = 'Preliminärt';
|
||||
$labels['mystatus'] = 'Min status';
|
||||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Bekräftad';
|
||||
$labels['status-cancelled'] = 'Inställd';
|
||||
$labels['status-tentative'] = 'Preliminärt';
|
||||
$labels['priority'] = 'Prioritet';
|
||||
$labels['sensitivity'] = 'Integritet';
|
||||
$labels['public'] = 'publik';
|
||||
$labels['private'] = 'privat';
|
||||
$labels['confidential'] = 'konfidentiell';
|
||||
$labels['links'] = 'Referens';
|
||||
$labels['alarms'] = 'Påminnelse';
|
||||
$labels['comment'] = 'Kommentar';
|
||||
$labels['created'] = 'Skapad';
|
||||
$labels['changed'] = 'Senast ändrad';
|
||||
$labels['unknown'] = 'Okänd';
|
||||
$labels['eventoptions'] = 'Alternativ';
|
||||
$labels['generated'] = 'genererad vid';
|
||||
$labels['eventhistory'] = 'Historik';
|
||||
$labels['removelink'] = 'Ta bort e-postreferens';
|
||||
$labels['printdescriptions'] = 'Skriv ut beskrivning';
|
||||
$labels['parentcalendar'] = 'Infoga inuti';
|
||||
$labels['searchearlierdates'] = '« Sök efter tidigare händelser';
|
||||
$labels['searchlaterdates'] = 'Sök efter senare händelser »';
|
||||
$labels['andnmore'] = '$nr fler ...';
|
||||
$labels['togglerole'] = 'Klicka för att växla roll';
|
||||
$labels['createfrommail'] = 'Spara som händelse';
|
||||
$labels['importevents'] = 'Importera händelser';
|
||||
$labels['importrange'] = 'Händelser från';
|
||||
$labels['onemonthback'] = '1 månad bakåt';
|
||||
$labels['nmonthsback'] = '$nr månader bakåt';
|
||||
$labels['showurl'] = 'Visa kalender-URL';
|
||||
$labels['showurldescription'] = 'Använd följande adress för åtkomst (endast läsbar) till din kalender från andra applikationer. Du kan kopiera och klistra in adressen in i ett kalenderprogram som stöder iCal-formatet.';
|
||||
$labels['caldavurldescription'] = 'Kopiera denna adress till ett <a href="http://en.wikipedia.org/wiki/CalDAV" target="_blank">CalDAV</a> klientprogram (t.ex. Evolution eller Mozilla Thunderbird) för att helt synkronisera denna specifika kalender med din dator eller mobila enhet.';
|
||||
$labels['findcalendars'] = 'Hitta kalendrar ...';
|
||||
$labels['searchterms'] = 'Sökord';
|
||||
$labels['calsearchresults'] = 'Tillgängliga kalendrar';
|
||||
$labels['calendarsubscribe'] = 'Lista permanent';
|
||||
$labels['nocalendarsfound'] = 'Inga kalendrar hittades';
|
||||
$labels['nrcalendarsfound'] = '$nr kalendrar hittades';
|
||||
$labels['quickview'] = 'Visa endast denna kalender';
|
||||
$labels['invitationspending'] = 'Avvaktade inbjudningar';
|
||||
$labels['invitationsdeclined'] = 'Avböjda inbjudningar';
|
||||
$labels['changepartstat'] = 'Ändra deltagarstatus';
|
||||
$labels['rsvpcomment'] = 'Inbjudningstext';
|
||||
$labels['listrange'] = 'Intervall att visa';
|
||||
$labels['listsections'] = 'Dela upp i';
|
||||
$labels['smartsections'] = 'Smarta sektioner';
|
||||
$labels['until'] = 'tills';
|
||||
$labels['today'] = 'Idag';
|
||||
$labels['tomorrow'] = 'Imorgon';
|
||||
$labels['thisweek'] = 'Denna vecka';
|
||||
$labels['nextweek'] = 'Nästa vecka';
|
||||
$labels['prevweek'] = 'Föregående vecka';
|
||||
$labels['thismonth'] = 'Denna månad';
|
||||
$labels['nextmonth'] = 'Nästa månad';
|
||||
$labels['weekofyear'] = 'Vecka';
|
||||
$labels['pastevents'] = 'Förflutna';
|
||||
$labels['futureevents'] = 'Framtida';
|
||||
$labels['showalarms'] = 'Visa påminnelser';
|
||||
$labels['defaultalarmtype'] = 'Standardinställning för påminnelser';
|
||||
$labels['defaultalarmoffset'] = 'Standartid för påminnelser';
|
||||
$labels['attendee'] = 'Deltagare';
|
||||
$labels['role'] = 'Roll';
|
||||
$labels['availability'] = 'Tillg.';
|
||||
$labels['confirmstate'] = 'Status';
|
||||
$labels['addattendee'] = 'Lägg till deltagare';
|
||||
$labels['roleorganizer'] = 'Organisatör';
|
||||
$labels['rolerequired'] = 'Obligatorisk';
|
||||
$labels['roleoptional'] = 'Valfritt';
|
||||
$labels['rolechair'] = 'Stol';
|
||||
$labels['rolenonparticipant'] = 'Frånvarande';
|
||||
$labels['cutypeindividual'] = 'Individuell';
|
||||
$labels['cutypegroup'] = 'Grupp';
|
||||
$labels['cutyperesource'] = 'Resurs';
|
||||
$labels['cutyperoom'] = 'Rum';
|
||||
$labels['availfree'] = 'Ledig';
|
||||
$labels['availbusy'] = 'Upptagen';
|
||||
$labels['availunknown'] = 'Okänd';
|
||||
$labels['availtentative'] = 'Preliminärt';
|
||||
$labels['availoutofoffice'] = 'Frånvarande';
|
||||
$labels['scheduletime'] = 'Hitta tillgänglighet';
|
||||
$labels['sendinvitations'] = 'Skicka inbjudningar';
|
||||
$labels['sendnotifications'] = 'Meddela deltagare om ändringar';
|
||||
$labels['sendcancellation'] = 'Meddela deltagare om att händelsen ställts in';
|
||||
$labels['onlyworkinghours'] = 'Sök tillgänglighet inom min arbetstid';
|
||||
$labels['reqallattendees'] = 'Obligatorisk/alla deltagare';
|
||||
$labels['prevslot'] = 'Föregående lucka';
|
||||
$labels['nextslot'] = 'Nästa lucka';
|
||||
$labels['suggestedslot'] = 'Föreslagen lucka';
|
||||
$labels['noslotfound'] = 'Det gick inte att hitta en ledig tidslucka';
|
||||
$labels['invitationsubject'] = 'Du har blivit inbjuden till "$title"';
|
||||
$labels['invitationattendlinks'] = "Om din e-postklient inte stöder iTip-förfrågningar kan du använda följande länk för att antingen tacka ja eller eller nej till denna inbjudan:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" har uppdaterats';
|
||||
$labels['eventupdatesubjectempty'] = 'En händelse som berör dig har uppdaterats';
|
||||
$labels['eventupdatemailbody'] = "*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees\n\nHärmed bifogas en iCalendar-fil med uppdaterad information som du kan importera till din kalenderapplikation.";
|
||||
$labels['eventcancelmailbody'] = "*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees\n\nHändelsen har ställts in av \$organizer.\n\nHärmed bifogas en iCalendar-fil med uppdaterad information om händelsen.";
|
||||
$labels['itipobjectnotfound'] = 'Den händelse som avses i detta meddelande hittades inte i din kalender.';
|
||||
$labels['itipmailbodyaccepted'] = "\$sender har accepterat inbjudan till följande händelse:\n\n*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees";
|
||||
$labels['itipmailbodytentative'] = "\$sender har preliminärt accepterat inbjudan till följande evenemang:\n\n*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees";
|
||||
$labels['itipmailbodydeclined'] = "\$sender har tackat nej till inbjudan till följande händelse:\n\n*\$title*\n\nNär: \$date\n\nIbjudna: \$attendees";
|
||||
$labels['itipmailbodycancel'] = "\$sender har avvisat ditt deltagande i följande händelse:\n\n*\$title*\n\nNär: \$dat";
|
||||
$labels['itipmailbodydelegated'] = "\$sender har delegerat deltagandet i följande händelse:\n\n*\$title*\n\nNär: \$date";
|
||||
$labels['itipmailbodydelegatedto'] = "\$sender har delegerat deltagandet i följande händelse till dig:\n\n*\$title*\n\nNär: \$date";
|
||||
$labels['itipdeclineevent'] = 'Vill du tacka nej till inbjudan till denna händelse?';
|
||||
$labels['declinedeleteconfirm'] = 'Vill du även ta bort denna händelse, som du tackat nej till, från din kalender?';
|
||||
$labels['itipcomment'] = 'Kommentar till inbjudan/meddelande';
|
||||
$labels['itipcommenttitle'] = 'Denna kommentar kommer att bifogas i inbjudan/meddelandet som skickas till deltagarna';
|
||||
$labels['notanattendee'] = 'Du är inte listad som en deltagare i denna händelse';
|
||||
$labels['eventcancelled'] = 'Händelsen har ställts in';
|
||||
$labels['saveincalendar'] = 'Spara i';
|
||||
$labels['updatemycopy'] = 'Uppdatera i min kalender';
|
||||
$labels['savetocalendar'] = 'Spara till kalender';
|
||||
$labels['openpreview'] = 'Kontrollera kalender';
|
||||
$labels['noearlierevents'] = 'Inga tidigare händelser';
|
||||
$labels['nolaterevents'] = 'Inga senare händelser';
|
||||
$labels['resource'] = 'Resurs';
|
||||
$labels['addresource'] = 'Boka resurs';
|
||||
$labels['findresources'] = 'Hitta resurser';
|
||||
$labels['resourcedetails'] = 'Detaljer';
|
||||
$labels['resourceavailability'] = 'Tillgänglighet';
|
||||
$labels['resourceowner'] = 'Ägare';
|
||||
$labels['resourceadded'] = 'Resursen har kopplats till din händelser ';
|
||||
$labels['tabsummary'] = 'Sammanfattning';
|
||||
$labels['tabrecurrence'] = 'Återkommande';
|
||||
$labels['tabattendees'] = 'Deltagare';
|
||||
$labels['tabresources'] = 'Resurser';
|
||||
$labels['tabattachments'] = 'Bilagor';
|
||||
$labels['tabsharing'] = 'Delning';
|
||||
$labels['deleteobjectconfirm'] = 'Vill du verkligen ta bort denna händelse';
|
||||
$labels['deleteventconfirm'] = 'Vill du verkligen ta bort denna händelse';
|
||||
$labels['deletecalendarconfirm'] = 'Vill du verkligen ta bort denna kalender med alla dess händelser?';
|
||||
$labels['deletecalendarconfirmrecursive'] = 'Vill du verkligen ta bort denna kalender med alla händelser och delkalendrar?';
|
||||
$labels['savingdata'] = 'Sparar data ...';
|
||||
$labels['errorsaving'] = 'Misslyckades att spara ändringar.';
|
||||
$labels['operationfailed'] = 'Den begärda åtgärden misslyckades.';
|
||||
$labels['invalideventdates'] = 'Ogiltiga datum angivna! Kontrollera din inmatning.';
|
||||
$labels['invalidcalendarproperties'] = 'Ogiltiga kalenderegenskaper! Var god ange ett giltigt namn.';
|
||||
$labels['searchnoresults'] = 'Inga händelser hittades i de valda kalendrarna.';
|
||||
$labels['successremoval'] = 'Händelsen har tagits bort.';
|
||||
$labels['successrestore'] = 'Händelsen har återställts.';
|
||||
$labels['errornotifying'] = 'Det gick inte att skicka meddelande till händelsens deltagare';
|
||||
$labels['errorimportingevent'] = 'Det gick inte att importera händelsen';
|
||||
$labels['importwarningexists'] = 'En kopia av denna händelse finns redan i din kalender.';
|
||||
$labels['newerversionexists'] = 'En nyare version av denna händelse finns redan! Åtgärd avbruten.';
|
||||
$labels['nowritecalendarfound'] = 'Ingen kalender hittades att spara händelsen i';
|
||||
$labels['importedsuccessfully'] = 'Händelsen har lagts till i \'$calendar\'';
|
||||
$labels['updatedsuccessfully'] = 'Händelsen uppdaterades i \'$calendar\'';
|
||||
$labels['attendeupdateesuccess'] = 'Uppdaterade deltagarens status';
|
||||
$labels['itipsendsuccess'] = 'Inbjudan har skickats till deltagare.';
|
||||
$labels['itipresponseerror'] = 'Det gick inte att skicka ett svar på inbjudan till denna händelse';
|
||||
$labels['itipinvalidrequest'] = 'Denna inbjudan är inte längre giltig';
|
||||
$labels['sentresponseto'] = 'Skickade svar på inbjudan till $mailto';
|
||||
$labels['localchangeswarning'] = 'Du är på väg att göra ändringar som endast kommer att återspeglas i din kalender och inte skickas till organisatören av händelsen.';
|
||||
$labels['importsuccess'] = 'Importerade $nr händelser';
|
||||
$labels['importnone'] = 'Hittade inga händelser att importera';
|
||||
$labels['importerror'] = 'Ett fel uppstod vid import';
|
||||
$labels['aclnorights'] = 'Du har inga administratörsrättigheter i denna kalender.';
|
||||
$labels['changeeventconfirm'] = 'Ändra händelse';
|
||||
$labels['removeeventconfirm'] = 'Ta bort händelse';
|
||||
$labels['changerecurringeventwarning'] = 'Detta är en återkommande händelse. Vill du redigera endast den aktuella händelsen, denna och alla framtida händelser, alla händelser eller spara den som en ny händelse?';
|
||||
$labels['removerecurringeventwarning'] = 'etta är en återkommande händelse. Vill du ta bort endast den aktuella händelsen, denna och alla framtida händelser eller alla förekomster av denna händelse';
|
||||
$labels['currentevent'] = 'Nuvarande';
|
||||
$labels['futurevents'] = 'Framtida';
|
||||
$labels['allevents'] = 'Alla';
|
||||
$labels['saveasnew'] = 'Spara som ny';
|
||||
$labels['birthdays'] = 'Födelsedagar';
|
||||
$labels['birthdayscalendar'] = 'Födelsedagskalender';
|
||||
$labels['displaybirthdayscalendar'] = 'Visa födelsedagskalender';
|
||||
$labels['birthdayscalendarsources'] = 'Från dessa adressböcker';
|
||||
$labels['birthdayeventtitle'] = '$name\s födelsedag';
|
||||
$labels['birthdayage'] = '$age år';
|
||||
$labels['objectchangelog'] = 'Ändringshistorik';
|
||||
$labels['objectnotfound'] = 'Det gick inte att läsa in data för händelsen';
|
||||
$labels['objectchangelognotavailable'] = 'Ändringshistorik är inte tillgänglig för denna händelse';
|
||||
$labels['objectdiffnotavailable'] = 'Ingen jämförelse möjlig för valda revisioner';
|
||||
$labels['revisionrestoreconfirm'] = 'Vill du verkligen återställa revision $rev för denna händelse? Det kommer att ersätta den aktuella händelsen med den gamla versionen.';
|
||||
$labels['arialabelminical'] = 'Kalender datumurval';
|
||||
$labels['arialabelcalendarview'] = 'Kalender vy';
|
||||
$labels['arialabelsearchform'] = 'Händelse sökformulär';
|
||||
$labels['arialabelquicksearchbox'] = 'Händelse sökinmatning';
|
||||
$labels['arialabelcalsearchform'] = 'Kalender sökformulär';
|
||||
$labels['calendaractions'] = 'Kalender åtgärder';
|
||||
$labels['arialabeleventattendees'] = 'Händelse deltagarlista';
|
||||
$labels['arialabeleventresources'] = 'Händelse resurslista';
|
||||
$labels['arialabelresourcesearchform'] = 'Resurser sökformulär';
|
||||
$labels['arialabelresourceselection'] = 'Tillgängliga resurser';
|
||||
?>
|
|
@ -27,12 +27,12 @@ $labels['afterflagdeleted'] = 'Märk som borttaget';
|
|||
$labels['aftermoveto'] = 'Flytta till ...';
|
||||
$labels['itipoptions'] = 'Händelseinbjudningar';
|
||||
$labels['afteraction'] = 'Efter en inbjudan eller uppdatering bearbetats meddelande';
|
||||
$labels['weeknonone'] = 'aldrig';
|
||||
$labels['calendar'] = 'Kalender';
|
||||
$labels['calendars'] = 'Kalendrar';
|
||||
$labels['category'] = 'Kategori';
|
||||
$labels['categories'] = 'Kategorier';
|
||||
$labels['createcalendar'] = 'Skapa ny kalender';
|
||||
$labels['editcalendar'] = 'Redigera kalenderegenskaper';
|
||||
$labels['name'] = 'Namn';
|
||||
$labels['color'] = 'Färg';
|
||||
$labels['day'] = 'Dag';
|
||||
|
@ -75,6 +75,7 @@ $labels['mystatus'] = 'Min status';
|
|||
$labels['status'] = 'Status';
|
||||
$labels['status-confirmed'] = 'Bekräftad';
|
||||
$labels['status-cancelled'] = 'Inställd';
|
||||
$labels['status-tentative'] = 'Preliminärt';
|
||||
$labels['priority'] = 'Prioritet';
|
||||
$labels['sensitivity'] = 'Integritet';
|
||||
$labels['public'] = 'publik';
|
||||
|
@ -94,6 +95,7 @@ $labels['printdescriptions'] = 'Skriv ut beskrivning';
|
|||
$labels['parentcalendar'] = 'Infoga inuti';
|
||||
$labels['searchearlierdates'] = '« Sök efter tidigare händelser';
|
||||
$labels['searchlaterdates'] = 'Sök efter senare händelser »';
|
||||
$labels['laterevents'] = 'Senare';
|
||||
$labels['andnmore'] = '$nr fler ...';
|
||||
$labels['togglerole'] = 'Klicka för att växla roll';
|
||||
$labels['createfrommail'] = 'Spara som händelse';
|
||||
|
@ -151,8 +153,6 @@ $labels['availbusy'] = 'Upptagen';
|
|||
$labels['availunknown'] = 'Okänd';
|
||||
$labels['availtentative'] = 'Preliminärt';
|
||||
$labels['availoutofoffice'] = 'Frånvarande';
|
||||
$labels['delegatedto'] = 'Delegerad till:';
|
||||
$labels['delegatedfrom'] = 'Delegerad från:';
|
||||
$labels['scheduletime'] = 'Hitta tillgänglighet';
|
||||
$labels['sendinvitations'] = 'Skicka inbjudningar';
|
||||
$labels['sendnotifications'] = 'Meddela deltagare om ändringar';
|
||||
|
@ -164,11 +164,11 @@ $labels['nextslot'] = 'Nästa lucka';
|
|||
$labels['suggestedslot'] = 'Föreslagen lucka';
|
||||
$labels['noslotfound'] = 'Det gick inte att hitta en ledig tidslucka';
|
||||
$labels['invitationsubject'] = 'Du har blivit inbjuden till "$title"';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees\n\nHärmed bifogas en iCalendar-fil med alla detaljer om händelsen som du kan importera till din kalenderapplikation.";
|
||||
$labels['invitationattendlinks'] = "Om din e-postklient inte stöder iTip-förfrågningar kan du använda följande länk för att antingen tacka ja eller eller nej till denna inbjudan:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" har uppdaterats';
|
||||
$labels['eventupdatesubjectempty'] = 'En händelse som berör dig har uppdaterats';
|
||||
$labels['eventupdatemailbody'] = "*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees\n\nHärmed bifogas en iCalendar-fil med uppdaterad information som du kan importera till din kalenderapplikation.";
|
||||
$labels['eventcancelsubject'] = '"$title" har ställts in';
|
||||
$labels['eventcancelmailbody'] = "*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees\n\nHändelsen har ställts in av \$organizer.\n\nHärmed bifogas en iCalendar-fil med uppdaterad information om händelsen.";
|
||||
$labels['itipobjectnotfound'] = 'Den händelse som avses i detta meddelande hittades inte i din kalender.';
|
||||
$labels['itipmailbodyaccepted'] = "\$sender har accepterat inbjudan till följande händelse:\n\n*\$title*\n\nNär: \$date\n\nInbjudna: \$attendees";
|
||||
|
@ -246,10 +246,13 @@ $labels['birthdayscalendarsources'] = 'Från dessa adressböcker';
|
|||
$labels['birthdayeventtitle'] = '$name\s födelsedag';
|
||||
$labels['birthdayage'] = '$age år';
|
||||
$labels['objectchangelog'] = 'Ändringshistorik';
|
||||
$labels['objectdiff'] = 'Ändringar från $rev1 till $rev2';
|
||||
$labels['objectnotfound'] = 'Det gick inte att läsa in data för händelsen';
|
||||
$labels['objectchangelognotavailable'] = 'Ändringshistorik är inte tillgänglig för denna händelse';
|
||||
$labels['objectdiffnotavailable'] = 'Ingen jämförelse möjlig för valda revisioner';
|
||||
$labels['revisionrestoreconfirm'] = 'Vill du verkligen återställa revision $rev för denna händelse? Det kommer att ersätta den aktuella händelsen med den gamla versionen.';
|
||||
$labels['objectrestoresuccess'] = 'Version $rev har återställts ';
|
||||
$labels['objectrestoreerror'] = 'Det gick inte att återställa den gamla versionen';
|
||||
$labels['arialabelminical'] = 'Kalender datumurval';
|
||||
$labels['arialabelcalendarview'] = 'Kalender vy';
|
||||
$labels['arialabelsearchform'] = 'Händelse sökformulär';
|
||||
|
|
|
@ -25,12 +25,12 @@ $labels['afterflagdeleted'] = 'ติดธงว่าลบแล้ว';
|
|||
$labels['aftermoveto'] = 'ย้ายไปยัง...';
|
||||
$labels['itipoptions'] = 'เชิญเข้าร่วมนัดหมาย';
|
||||
$labels['afteraction'] = 'ภายหลังการประมวลผลข้อความ คำเชิญ หรือ ปรับปรุงสถานภาพ';
|
||||
$labels['weeknonone'] = 'ไม่มีทาง';
|
||||
$labels['calendar'] = 'ปฎิทิน';
|
||||
$labels['calendars'] = 'ปฎิทิน';
|
||||
$labels['category'] = 'หมวดหมู่';
|
||||
$labels['categories'] = 'หมวดหมู่';
|
||||
$labels['createcalendar'] = 'สร้างปฎิทินฉบับใหม่';
|
||||
$labels['editcalendar'] = 'แก้ไขคุณสมบัติของปฎิทิน';
|
||||
$labels['name'] = 'ชื่อ';
|
||||
$labels['color'] = 'สี';
|
||||
$labels['day'] = 'วัน';
|
||||
|
@ -69,6 +69,7 @@ $labels['mystatus'] = 'สถานะของฉัน';
|
|||
$labels['status'] = 'สถานะ';
|
||||
$labels['status-confirmed'] = 'ยืนยัน';
|
||||
$labels['status-cancelled'] = 'ยกเลิก';
|
||||
$labels['status-tentative'] = 'แนวโน้ม';
|
||||
$labels['priority'] = 'ความสำคัญ';
|
||||
$labels['sensitivity'] = 'ความเป็นส่วนตัว';
|
||||
$labels['public'] = 'สาธารณะ';
|
||||
|
@ -86,6 +87,7 @@ $labels['printdescriptions'] = 'พิมพ์คำอธิบาย';
|
|||
$labels['parentcalendar'] = 'เพิ่มเข้าภายใต้';
|
||||
$labels['searchearlierdates'] = '« ค้นหากำหนดการณ์ที่เกิดชึ้นก่อนหน้า';
|
||||
$labels['searchlaterdates'] = 'ค้นหากำหนดการณ์ที่เกิดขึ้นหลังจาก »';
|
||||
$labels['laterevents'] = 'ภายหลัง';
|
||||
$labels['andnmore'] = 'มีอีก $nr';
|
||||
$labels['togglerole'] = 'กดเพื่อเปลี่ยนสลับบทบาท';
|
||||
$labels['createfrommail'] = 'บันทึกเป็นเหตุการณ์';
|
||||
|
@ -139,8 +141,6 @@ $labels['availbusy'] = 'ติดธุระ';
|
|||
$labels['availunknown'] = 'ไม่ทราบ';
|
||||
$labels['availtentative'] = 'แนวโน้ม';
|
||||
$labels['availoutofoffice'] = 'ไม่อยู่ออฟฟิศ';
|
||||
$labels['delegatedto'] = 'มอบหมายให้';
|
||||
$labels['delegatedfrom'] = 'รับมอบจาก';
|
||||
$labels['scheduletime'] = 'ค้นหาส่วนที่ว่าง';
|
||||
$labels['sendinvitations'] = 'ส่งคำเชิญ';
|
||||
$labels['sendnotifications'] = 'แจ้งเตือนผู้เข้าร่วมสำหรับการแก้ไข';
|
||||
|
|
|
@ -32,7 +32,6 @@ $labels['calendars'] = 'Календарі';
|
|||
$labels['category'] = 'Категорія';
|
||||
$labels['categories'] = 'Категорії';
|
||||
$labels['createcalendar'] = 'Створити новий календар';
|
||||
$labels['editcalendar'] = 'Змінити властивості календаря';
|
||||
$labels['name'] = 'Назва';
|
||||
$labels['color'] = 'Колір';
|
||||
$labels['day'] = 'День';
|
||||
|
@ -75,6 +74,7 @@ $labels['mystatus'] = 'Мій статус';
|
|||
$labels['status'] = 'Статус';
|
||||
$labels['status-confirmed'] = 'Підтверджений';
|
||||
$labels['status-cancelled'] = 'Відмінений';
|
||||
$labels['status-tentative'] = 'Невизначений';
|
||||
$labels['priority'] = 'Пріоритет';
|
||||
$labels['sensitivity'] = 'Конфіденційність';
|
||||
$labels['public'] = 'публічна';
|
||||
|
@ -147,8 +147,6 @@ $labels['availbusy'] = 'Зайнятий';
|
|||
$labels['availunknown'] = 'Невідомо';
|
||||
$labels['availtentative'] = 'Невизначений';
|
||||
$labels['availoutofoffice'] = 'Поза офісом';
|
||||
$labels['delegatedto'] = 'Доручено:';
|
||||
$labels['delegatedfrom'] = 'Доручено від:';
|
||||
$labels['scheduletime'] = 'Знайти доступних';
|
||||
$labels['sendinvitations'] = 'Запросити';
|
||||
$labels['sendnotifications'] = 'Повідомити учасників про зміни';
|
||||
|
@ -159,7 +157,6 @@ $labels['nextslot'] = 'Наступний час';
|
|||
$labels['suggestedslot'] = 'Пропонований час';
|
||||
$labels['noslotfound'] = 'Неможливо знайти вільний час';
|
||||
$labels['invitationsubject'] = 'Ви запрошені на ';
|
||||
$labels['invitationmailbody'] = "*\$title*\n\nКоли: \$date\n\nЗапрошені: \$attendees\n\nУ вкладенні Ви знайдете файл iCalendar з усіма деталями події, який Ви можете імпортувати у Вашу програму-щоденник.";
|
||||
$labels['invitationattendlinks'] = "У разі, якщо Ваш поштовий клієнт не підтримує запити iTip, Ви можете використати дане нижче посилання, щоб прийняти або відхилити це запрошення:\n\$url";
|
||||
$labels['eventupdatesubject'] = '"$title" була оновлена';
|
||||
$labels['eventupdatesubjectempty'] = 'Подія, яка стосується Вас, була оновленна ';
|
||||
|
|
|
@ -59,6 +59,7 @@ $labels['mystatus'] = '我的状态';
|
|||
$labels['status'] = '状态';
|
||||
$labels['status-confirmed'] = '已确认';
|
||||
$labels['status-cancelled'] = '已取消';
|
||||
$labels['status-tentative'] = '临时';
|
||||
$labels['priority'] = '优先级';
|
||||
$labels['sensitivity'] = '隐私';
|
||||
$labels['public'] = '公开';
|
||||
|
@ -112,8 +113,11 @@ $labels['scheduletime'] = '查找是否有空';
|
|||
$labels['sendinvitations'] = '发送邀请';
|
||||
$labels['sendnotifications'] = '通知参加者修改事项';
|
||||
$labels['resource'] = '资源';
|
||||
$labels['resourceowner'] = '所有者';
|
||||
$labels['tabsummary'] = '汇总';
|
||||
$labels['tabresources'] = '资源';
|
||||
$labels['tabsharing'] = '分享';
|
||||
$labels['savingdata'] = '保存数据...';
|
||||
$labels['futurevents'] = '未来';
|
||||
$labels['allevents'] = '全部';
|
||||
?>
|
||||
|
|
198
print.js
|
@ -6,7 +6,7 @@
|
|||
* @licstart The following is the entire license notice for the
|
||||
* JavaScript code in this file.
|
||||
*
|
||||
* Copyright (C) 2011, Kolab Systems AG <contact@kolabsys.com>
|
||||
* Copyright (C) 2011-2018, Kolab Systems AG <contact@kolabsys.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
|
@ -37,12 +37,13 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
|
|||
|
||||
var rc_loading;
|
||||
var showdesc = true;
|
||||
var desc_elements = [];
|
||||
var settings = $.extend(rcmail.env.calendar_settings, rcmail.env.libcal_settings);
|
||||
|
||||
// create list of event sources AKA calendars
|
||||
var src, event_sources = [];
|
||||
var add_url = (rcmail.env.search ? '&q='+escape(rcmail.env.search) : '');
|
||||
for (var id in rcmail.env.calendars) {
|
||||
var id, src, event_sources = [];
|
||||
var add_url = '&mode=print' + (rcmail.env.search ? '&q='+escape(rcmail.env.search) : '');
|
||||
for (id in rcmail.env.calendars) {
|
||||
if (!rcmail.env.calendars[id].active)
|
||||
continue;
|
||||
|
||||
|
@ -52,6 +53,11 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
|
|||
id: id
|
||||
}, rcmail.env.calendars[id]);
|
||||
|
||||
source.color = '#' + source.color.replace(/^#/, '');
|
||||
|
||||
if (source.color.match(/^#f+$/i))
|
||||
source.color = '#ccc';
|
||||
|
||||
event_sources.push(source);
|
||||
}
|
||||
|
||||
|
@ -64,72 +70,89 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
|
|||
header: {
|
||||
left: '',
|
||||
center: 'title',
|
||||
right: 'agendaDay,agendaWeek,month,table'
|
||||
right: 'agendaDay,agendaWeek,month,list'
|
||||
},
|
||||
theme: false,
|
||||
aspectRatio: 0.85,
|
||||
ignoreTimezone: true, // will treat the given date strings as in local (browser's) timezone
|
||||
date: viewdate.getDate(),
|
||||
month: viewdate.getMonth(),
|
||||
year: viewdate.getFullYear(),
|
||||
selectable: false,
|
||||
editable: false,
|
||||
timezone: false, // will treat the given date strings as in local (browser's) timezone
|
||||
monthNames: settings.months,
|
||||
monthNamesShort: settings.months_short,
|
||||
dayNames: settings.days,
|
||||
dayNamesShort: settings.days_short,
|
||||
weekNumbers: settings.show_weekno > 0,
|
||||
weekNumberTitle: rcmail.gettext('weekshort', 'calendar') + ' ',
|
||||
firstDay: settings.first_day,
|
||||
firstHour: settings.first_hour,
|
||||
slotDuration: {minutes: 60/settings.timeslots},
|
||||
businessHours: {
|
||||
start: settings.work_start + ':00',
|
||||
end: settings.work_end + ':00'
|
||||
},
|
||||
views: {
|
||||
list: {
|
||||
titleFormat: settings.dates_long,
|
||||
listDayFormat: settings.date_long,
|
||||
visibleRange: function(currentDate) {
|
||||
return {
|
||||
start: currentDate.clone(),
|
||||
end: currentDate.clone().add(settings.agenda_range, 'days')
|
||||
}
|
||||
}
|
||||
},
|
||||
month: {
|
||||
columnFormat: 'ddd', // Mon
|
||||
titleFormat: 'MMMM YYYY',
|
||||
eventLimit: 10
|
||||
},
|
||||
week: {
|
||||
columnFormat: 'ddd ' + settings.date_short, // Mon 9/7
|
||||
titleFormat: settings.dates_long
|
||||
},
|
||||
day: {
|
||||
columnFormat: 'dddd ' + settings.date_short, // Monday 9/7
|
||||
titleFormat: 'dddd ' + settings.date_long
|
||||
}
|
||||
},
|
||||
timeFormat: settings.time_format,
|
||||
slotLabelFormat: settings.time_format,
|
||||
allDayText: rcmail.gettext('all-day', 'calendar'),
|
||||
defaultDate: viewdate,
|
||||
defaultView: rcmail.env.view,
|
||||
eventSources: event_sources,
|
||||
monthNames : settings['months'],
|
||||
monthNamesShort : settings['months_short'],
|
||||
dayNames : settings['days'],
|
||||
dayNamesShort : settings['days_short'],
|
||||
firstDay : settings['first_day'],
|
||||
firstHour : settings['first_hour'],
|
||||
slotMinutes : 60/settings['timeslots'],
|
||||
timeFormat: {
|
||||
'': settings['time_format'],
|
||||
agenda: settings['time_format'] + '{ - ' + settings['time_format'] + '}',
|
||||
list: settings['time_format'] + '{ - ' + settings['time_format'] + '}',
|
||||
table: settings['time_format'] + '{ - ' + settings['time_format'] + '}'
|
||||
},
|
||||
axisFormat : settings['time_format'],
|
||||
columnFormat: {
|
||||
month: 'ddd', // Mon
|
||||
week: 'ddd ' + settings['date_short'], // Mon 9/7
|
||||
day: 'dddd ' + settings['date_short'], // Monday 9/7
|
||||
list: settings['date_agenda'],
|
||||
table: settings['date_agenda']
|
||||
},
|
||||
titleFormat: {
|
||||
month: 'MMMM yyyy',
|
||||
week: settings['dates_long'],
|
||||
day: 'dddd ' + settings['date_long'],
|
||||
list: settings['dates_long'],
|
||||
table: settings['dates_long']
|
||||
},
|
||||
listSections: rcmail.env.listSections !== undefined ? rcmail.env.listSections : settings['agenda_sections'],
|
||||
listRange: rcmail.env.listRange || settings['agenda_range'],
|
||||
tableCols: ['handle', 'date', 'time', 'title', 'location'],
|
||||
allDayText: rcmail.gettext('all-day', 'calendar'),
|
||||
buttonText: {
|
||||
today: settings['today'],
|
||||
day: rcmail.gettext('day', 'calendar'),
|
||||
week: rcmail.gettext('week', 'calendar'),
|
||||
month: rcmail.gettext('month', 'calendar'),
|
||||
table: rcmail.gettext('agenda', 'calendar')
|
||||
list: rcmail.gettext('agenda', 'calendar')
|
||||
},
|
||||
listTexts: {
|
||||
until: rcmail.gettext('until', 'calendar'),
|
||||
past: rcmail.gettext('pastevents', 'calendar'),
|
||||
today: rcmail.gettext('today', 'calendar'),
|
||||
tomorrow: rcmail.gettext('tomorrow', 'calendar'),
|
||||
thisWeek: rcmail.gettext('thisweek', 'calendar'),
|
||||
nextWeek: rcmail.gettext('nextweek', 'calendar'),
|
||||
thisMonth: rcmail.gettext('thismonth', 'calendar'),
|
||||
nextMonth: rcmail.gettext('nextmonth', 'calendar'),
|
||||
future: rcmail.gettext('futureevents', 'calendar'),
|
||||
week: rcmail.gettext('weekofyear', 'calendar')
|
||||
buttonIcons: {
|
||||
prev: 'left-single-arrow',
|
||||
next: 'right-single-arrow'
|
||||
},
|
||||
eventLimitText: function(num) {
|
||||
return rcmail.gettext('andnmore', 'calendar').replace('$nr', num);
|
||||
},
|
||||
loading: function(isLoading) {
|
||||
rc_loading = rcmail.set_busy(isLoading, 'loading', rc_loading);
|
||||
},
|
||||
// event rendering
|
||||
eventRender: function(event, element, view) {
|
||||
if (view.name != 'month' && view.name != 'table') {
|
||||
var cont = element.find('.fc-event-title');
|
||||
if (view.name == 'list') {
|
||||
var loc = $('<td>').attr('class', 'fc-event-location');
|
||||
if (event.location)
|
||||
loc.text(event.location);
|
||||
element.find('.fc-list-item-title').after(loc);
|
||||
|
||||
// we can't add HTML elements after the curent element,
|
||||
// so we store it for later.
|
||||
if (event.description && showdesc)
|
||||
desc_elements.push({element: element[0], description: event.description});
|
||||
}
|
||||
else if (view.name != 'month') {
|
||||
var cont = element.find('div.fc-title');
|
||||
if (event.location) {
|
||||
cont.after('<div class="fc-event-location">@ ' + Q(event.location) + '</div>');
|
||||
cont = cont.next();
|
||||
|
@ -137,40 +160,55 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
|
|||
if (event.description && showdesc) {
|
||||
cont.after('<div class="fc-event-description">' + Q(event.description) + '</div>');
|
||||
}
|
||||
/* TODO: create icons black on white
|
||||
if (event.recurrence)
|
||||
element.find('.fc-event-time').append('<i class="fc-icon-recurring"></i>');
|
||||
if (event.alarms)
|
||||
element.find('.fc-event-time').append('<i class="fc-icon-alarms"></i>');
|
||||
*/
|
||||
}
|
||||
if (view.name == 'table' && event.description && showdesc) {
|
||||
var cols = element.children().css('border', 0).length;
|
||||
element.after('<tr class="fc-event-row-secondary fc-event"><td colspan="'+cols+'" class="fc-event-description">' + Q(event.description) + '</td></tr>');
|
||||
}
|
||||
},
|
||||
viewDisplay: function(view) {
|
||||
// remove hard-coded hight and make contents visible
|
||||
window.setTimeout(function(){
|
||||
if (view.name == 'table') {
|
||||
$('div.fc-list-content').css('overflow', 'visible').height('auto');
|
||||
eventAfterAllRender: function(view) {
|
||||
if (view.name == 'list') {
|
||||
// Fix colspan of headers after we added Location column
|
||||
fc.find('tr.fc-list-heading > td').attr('colspan', 4);
|
||||
|
||||
$.each(desc_elements, function() {
|
||||
$(this.element).after('<tr class="fc-event-row-secondary fc-list-item"><td colspan="2"></td><td colspan="2" class="fc-event-description">' + Q(this.description) + '</td></tr>');
|
||||
});
|
||||
}
|
||||
else {
|
||||
$('div.fc-agenda-divider')
|
||||
.next().css('overflow', 'visible').height('auto')
|
||||
.children('div').css('overflow', 'visible').height('auto');
|
||||
}
|
||||
// adjust fixed height if vertical day slots
|
||||
var h = $('table.fc-agenda-slots:visible').height() + $('table.fc-agenda-allday:visible').height() + 4;
|
||||
if (h) $('table.fc-agenda-days td.fc-widget-content').children('div').height(h);
|
||||
}, 20);
|
||||
},
|
||||
viewRender: function(view) {
|
||||
desc_elements = [];
|
||||
}
|
||||
});
|
||||
|
||||
// activate settings form
|
||||
$('#propdescription').change(function() {
|
||||
showdesc = this.checked;
|
||||
fc.fullCalendar('render');
|
||||
desc_elements = [];
|
||||
fc.fullCalendar('rerenderEvents');
|
||||
});
|
||||
|
||||
var selector = $('#calendar').data('view-selector');
|
||||
if (selector) {
|
||||
selector = $('#' + selector);
|
||||
|
||||
$('.fc-right button').each(function() {
|
||||
var cl = 'btn btn-secondary', btn = $(this);
|
||||
|
||||
if (btn.is('.fc-state-active')) {
|
||||
cl += ' active';
|
||||
}
|
||||
|
||||
$('<button>').attr({'class': cl, type: 'button'})
|
||||
.text(btn.text())
|
||||
.appendTo(selector)
|
||||
.on('click', function() {
|
||||
selector.children('.active').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
btn.click();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Update layout after initialization
|
||||
// In devel mode we have to wait until all styles are applied by less
|
||||
if (rcmail.env.devel_mode && window.less) {
|
||||
less.pageLoadFinished.then(function() { $(window).resize(); });
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
Icons by Fugue Icons <http://p.yusukekamiyamane.com/>
|
||||
|
||||
Copyright (C) 2010 Yusuke Kamiyamane. All rights reserved.
|
||||
The icons are licensed under a Creative Commons Attribution
|
||||
3.0 license. <http://creativecommons.org/licenses/by/3.0/>
|
|
@ -1 +0,0 @@
|
|||
../larry/fullcalendar.css
|
|
@ -1,80 +0,0 @@
|
|||
/* CSS hacks for IE 6/7 */
|
||||
|
||||
#main {
|
||||
width: expression(Math.max(300, parseInt(document.documentElement.clientWidth)-10)+'px');
|
||||
height: expression(Math.max(300, parseInt(document.documentElement.clientHeight)-100)+'px');
|
||||
}
|
||||
|
||||
#calendarsidebar,
|
||||
#calendarsidebartoggle {
|
||||
height: expression((parseInt(this.parentNode.offsetHeight)-37)+'px');
|
||||
}
|
||||
|
||||
#calendar {
|
||||
width: expression((parseInt(this.parentNode.offsetWidth)-parseInt(document.getElementById('calendarsidebartoggle').offsetWidth)-parseInt(document.getElementById('calendarsidebartoggle').offsetLeft)-4)+'px');
|
||||
height: expression(parseInt(this.parentNode.offsetHeight)+'px');
|
||||
}
|
||||
|
||||
#calendars {
|
||||
height: expression((parseInt(this.parentNode.offsetHeight)-220)+'px');
|
||||
}
|
||||
|
||||
#agendaoptions {
|
||||
width: expression((parseInt(this.parentNode.offsetWidth)-12)+'px');
|
||||
}
|
||||
|
||||
#calendartoolbar a.buttonPas {
|
||||
filter: alpha(opacity=35);
|
||||
}
|
||||
|
||||
html #calendartoolbar a.button,
|
||||
html #calendartoolbar a.buttonPas {
|
||||
background-image: url(images/toolbar.gif);
|
||||
}
|
||||
|
||||
#datepicker a.ui-priority-secondary {
|
||||
filter: alpha(opacity=40);
|
||||
}
|
||||
|
||||
#calendarslist li span.handle {
|
||||
background-image: url(images/calendars.gif);
|
||||
}
|
||||
|
||||
#datepicker .ui-widget-header {
|
||||
width: 102%;
|
||||
}
|
||||
|
||||
.fc-day-content {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.fc-header-title h2 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.fc-event-temp .fc-event-bg {
|
||||
display: none; /* nested opacity filters while dragging don't work */
|
||||
}
|
||||
|
||||
#schedule-event-time {
|
||||
filter: alpha(opacity=40);
|
||||
}
|
||||
|
||||
#eventfreebusy .schedule-buttons,
|
||||
#edit-attendees-form #edit-attendee-schedule {
|
||||
right: 0.6em;
|
||||
}
|
||||
|
||||
#schedule-freebusy-times td.all-busy,
|
||||
#schedule-freebusy-times td.all-tentative,
|
||||
#schedule-freebusy-times td.all-out-of-office {
|
||||
background-image: url('images/freebusy-colors.gif');
|
||||
}
|
||||
|
||||
#schedule-freebusy-times tr.times td.allday {
|
||||
width: expression(Math.max(60, parseInt(this.offsetWidth))+'px');
|
||||
}
|
||||
|
||||
.ui-dialog .ui-dialog-titlebar {
|
||||
width: expression((parseInt(this.parentNode.offsetWidth)-26)+'px');
|
||||
}
|
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 896 B |
Before Width: | Height: | Size: 546 B |
Before Width: | Height: | Size: 888 B |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 107 B |
Before Width: | Height: | Size: 746 B |
Before Width: | Height: | Size: 408 B |
Before Width: | Height: | Size: 631 B |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 322 B |
Before Width: | Height: | Size: 847 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 869 B |
Before Width: | Height: | Size: 807 B |
Before Width: | Height: | Size: 110 B |
Before Width: | Height: | Size: 6 KiB |
Before Width: | Height: | Size: 15 KiB |
|
@ -1,209 +0,0 @@
|
|||
/*** Printing styles for Calendar plugin ***/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
color: #000;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
body, td, th, div, p, h3, select, input, textarea {
|
||||
font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
#calendar {
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: auto;
|
||||
margin: 5em auto 0 auto;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#calendar .fc-header-right {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
#printconfig {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 10000;
|
||||
padding: 0.5em;
|
||||
background: #ebebeb;
|
||||
border-bottom: 1px solid #999;
|
||||
box-shadow: 0 3px 4px #ccc;
|
||||
-moz-box-shadow: 0 3px 4px #ccc;
|
||||
-webkit-box-shadow: 0 3px 4px #ccc;
|
||||
}
|
||||
|
||||
#printconfig .prop {
|
||||
padding-right: 2em;
|
||||
}
|
||||
|
||||
#message {
|
||||
position: absolute;
|
||||
top: 5.5em;
|
||||
left: 1em;
|
||||
}
|
||||
|
||||
#message div.loading {
|
||||
color: #666;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
#calendarlist {
|
||||
list-style-type: square;
|
||||
margin: 2em 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
#calendarlist li {
|
||||
float: left;
|
||||
padding-left: 0;
|
||||
padding-right: 3em;
|
||||
margin-left: 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#calendarlist input,
|
||||
#calendarlist .handle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.calwidth {
|
||||
width: 700px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.rightalign {
|
||||
float: right;
|
||||
padding-top: 0.3em;
|
||||
}
|
||||
|
||||
@media print {
|
||||
.noprint,
|
||||
.fc-header-right span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#calendar {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* fullcalendar style overrides */
|
||||
|
||||
.fc-view {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.fc-event-skin,
|
||||
.fc-event-inner .fc-event-skin {
|
||||
color: black;
|
||||
background-color: #fff !important;
|
||||
}
|
||||
|
||||
.fc-event-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.fc-event-hori .fc-event-title {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.fc-event-hori .fc-event-time {
|
||||
white-space: nowrap;
|
||||
font-weight: normal !important;
|
||||
font-size: 10px;
|
||||
padding-right: 0.6em;
|
||||
}
|
||||
|
||||
.fc-grid .fc-event-time {
|
||||
font-weight: normal !important;
|
||||
padding-right: 0.3em;
|
||||
}
|
||||
|
||||
.fc-event-cateories {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.fc-event-location {
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
.fc-agenda-slots td div {
|
||||
height: 1.4em;
|
||||
}
|
||||
|
||||
.fc-widget-header,
|
||||
.fc-mon, .fc-tue, .fc-wed, .fc-thu, .fc-fri {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.fc-widget-header, .fc-widget-content {
|
||||
border-color: #ccc;
|
||||
}
|
||||
|
||||
.fc-icon-alarms,
|
||||
.fc-icon-recurring {
|
||||
display: inline-block;
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
background: url('images/eventicons.gif') 0 0 no-repeat;
|
||||
margin-left: 3px;
|
||||
line-height: 10px;
|
||||
}
|
||||
|
||||
.fc-icon-alarms {
|
||||
background-position: 0 -13px;
|
||||
}
|
||||
|
||||
.fc-view-list, .fc-view-table {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.fc-view-list div.fc-list-header,
|
||||
.fc-view-table td.fc-list-header {
|
||||
padding: 0.3em;
|
||||
background: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
color: #333;
|
||||
border-color: #333;
|
||||
border-style: solid;
|
||||
border-width: 1px 0;
|
||||
filter: none;
|
||||
}
|
||||
|
||||
.fc-list-section .fc-event {
|
||||
cursor: auto;
|
||||
}
|
||||
|
||||
.fc-view-table tr.fc-event td,
|
||||
.fc-view-table tr.fc-event td.fc-event-handle {
|
||||
border-color: #999;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.fc-view-table tr.fc-last td {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.fc-view-table tr.fc-event .fc-event-description {
|
||||
padding-left: 2em;
|
||||
padding-top: 0em;
|
||||
}
|
||||
|
||||
.fc-event-vert .fc-event-description {
|
||||
font-size: 90%;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
.fc-view-table col.fc-event-location {
|
||||
width: 20%;
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
/* CSS hacks for IE 6/7 */
|
||||
|
||||
#calendar {
|
||||
top: 5em;
|
||||
}
|
||||
|
||||
.calwidth {
|
||||
width: 172mm;
|
||||
}
|
||||
|
||||
.fc-header-title h2 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#calendarlist li {
|
||||
float: none;
|
||||
padding: 0;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
@media print {
|
||||
#calendar {
|
||||
top: 0;
|
||||
}
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
<roundcube:include file="/includes/links.html" />
|
||||
</head>
|
||||
<body class="extwin">
|
||||
|
||||
<roundcube:include file="/includes/header.html" />
|
||||
|
||||
<div id="partheader">
|
||||
<roundcube:object name="plugin.attachmentcontrols" cellpadding="2" cellspacing="0" downloadlink="true" />
|
||||
|
||||
<div style="position:absolute; top:2px; right:0; width:12em; text-align:right">
|
||||
[<a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="attachmentcontainer">
|
||||
<roundcube:object name="plugin.attachmentframe" id="attachmentframe" width="100%" height="100%" />
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,261 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
<roundcube:include file="/includes/links.html" />
|
||||
<script type="text/javascript" src="/functions.js"></script>
|
||||
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="plugins/calendar/skins/classic/iehacks.css" /><![endif]-->
|
||||
</head>
|
||||
<roundcube:if condition="env:extwin" /><body class="calendarmain extwin"><roundcube:else /><body class="calendarmain"><roundcube:endif />
|
||||
|
||||
<roundcube:include file="/includes/taskbar.html" />
|
||||
<roundcube:include file="/includes/header.html" />
|
||||
|
||||
<div id="main">
|
||||
<div id="calendarsidebar">
|
||||
<div id="calendartoolbar">
|
||||
<roundcube:button command="addevent" type="link" class="buttonPas addevent" classAct="button addevent" classSel="button addeventSel" title="calendar.new_event" content=" " />
|
||||
<roundcube:button command="print" type="link" class="buttonPas print" classAct="button print" classSel="button printSel" title="calendar.print" content=" " />
|
||||
<roundcube:button command="events-import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="calendar.importevents" content=" " />
|
||||
<roundcube:button command="export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="calendar.export" content=" " />
|
||||
<roundcube:container name="toolbar" id="calendartoolbar" />
|
||||
</div>
|
||||
|
||||
<div id="datepicker"></div>
|
||||
<div id="calendars" style="visibility:hidden">
|
||||
<div class="boxtitle"><roundcube:label name="calendar.calendars" /></div>
|
||||
<div class="listsearchbox">
|
||||
<div class="searchbox">
|
||||
<input type="text" name="q" id="calendarlistsearch" placeholder="<roundcube:label name='calendar.findcalendars' />" />
|
||||
<a class="iconbutton searchicon"></a>
|
||||
<roundcube:button command="reset-listsearch" id="calendarlistsearch-reset" class="reset searchreset" title="resetsearch" content="x" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="boxlistcontent">
|
||||
<roundcube:object name="plugin.calendar_list" id="calendarslist" class="treelist" />
|
||||
</div>
|
||||
<div class="boxfooter">
|
||||
<roundcube:button command="calendar-create" type="link" title="calendar.createcalendar" class="buttonPas addgroup" classAct="button addgroup" content=" " />
|
||||
<roundcube:button name="calendaroptionslink" id="calendaroptionslink" type="link" title="moreactions" class="button groupactions" onclick="rcmail_ui.show_popup('calendaroptions');return false" content=" " />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="calendarsidebartoggle"></div>
|
||||
<div id="calendar">
|
||||
<roundcube:object name="plugin.angenda_options" class="boxfooter" id="agendaoptions" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="calendaroptionsmenu" class="popupmenu">
|
||||
<ul>
|
||||
<li><roundcube:button command="calendar-edit" label="calendar.edit" classAct="active" /></li>
|
||||
<li><roundcube:button command="calendar-delete" label="delete" classAct="active" /></li>
|
||||
<roundcube:if condition="env:calendar_driver == 'kolab'" />
|
||||
<li><roundcube:button command="calendar-remove" label="calendar.removelist" classAct="active" /></li>
|
||||
<roundcube:endif />
|
||||
<li><roundcube:button command="calendar-showurl" label="calendar.showurl" classAct="active" /></li>
|
||||
<roundcube:if condition="env:calendar_driver == 'kolab'" />
|
||||
<li class="separator_above"><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
|
||||
<roundcube:endif />
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="eventshow" class="uidialog">
|
||||
<h1 id="event-title">Event Title</h1>
|
||||
<div id="event-status-badge"><span></span></div>
|
||||
<div class="event-section" id="event-location">Location</div>
|
||||
<div class="event-section" id="event-date">From-To</div>
|
||||
<div class="event-section" id="event-description">
|
||||
<h5 class="label"><roundcube:label name="calendar.description" /></h5>
|
||||
<div class="event-text"></div>
|
||||
</div>
|
||||
<div class="event-section" id="event-url">
|
||||
<h5 class="label"><roundcube:label name="calendar.url" /></h5>
|
||||
<div class="event-text"></div>
|
||||
</div>
|
||||
<div class="event-section" id="event-repeat">
|
||||
<h5 class="label"><roundcube:label name="calendar.repeat" /></h5>
|
||||
<div class="event-text"></div>
|
||||
</div>
|
||||
<div class="event-section" id="event-alarm">
|
||||
<h5 class="label"><roundcube:label name="calendar.alarms" /></h5>
|
||||
<div class="event-text"></div>
|
||||
</div>
|
||||
<div class="event-section event-attendees" id="event-attendees">
|
||||
<h5 class="label"><roundcube:label name="calendar.tabattendees" /></h5>
|
||||
<div class="event-text"></div>
|
||||
</div>
|
||||
<div class="event-line" id="event-partstat">
|
||||
<label><roundcube:label name="calendar.mystatus" /></label>
|
||||
<a href="#change" class="changersvp" title="<roundcube:label name='calendar.changepartstat' />">
|
||||
<span class="event-text"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="event-line" id="event-calendar">
|
||||
<label><roundcube:label name="calendar.calendar" /></label>
|
||||
<span class="event-text">Default</span>
|
||||
</div>
|
||||
<div class="event-line" id="event-category">
|
||||
<label><roundcube:label name="calendar.category" /></label>
|
||||
<span class="event-text"></span>
|
||||
</div>
|
||||
<div class="event-line" id="event-free-busy">
|
||||
<label><roundcube:label name="calendar.freebusy" /></label>
|
||||
<span class="event-text"></span>
|
||||
</div>
|
||||
<div class="event-line" id="event-priority">
|
||||
<label><roundcube:label name="calendar.priority" /></label>
|
||||
<span class="event-text"></span>
|
||||
</div>
|
||||
<div class="event-line" id="event-sensitivity">
|
||||
<label><roundcube:label name="calendar.sensitivity" /></label>
|
||||
<span class="event-text"></span>
|
||||
</div>
|
||||
<div class="event-section" id="event-attachments">
|
||||
<label><roundcube:label name="attachments" /></label>
|
||||
<div class="event-text attachments-list"></div>
|
||||
</div>
|
||||
|
||||
<roundcube:object name="plugin.event_rsvp_buttons" id="event-rsvp" style="display:none" />
|
||||
</div>
|
||||
|
||||
<div id="eventoptionsmenu" class="popupmenu">
|
||||
<ul>
|
||||
<li><roundcube:button command="event-download" label="download" classAct="active" /></li>
|
||||
<li><roundcube:button command="event-sendbymail" label="send" classAct="active" /></li>
|
||||
<li><roundcube:button command="event-copy" label="copy" classAct="active" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<roundcube:include file="/templates/eventedit.html" />
|
||||
|
||||
<div id="eventresourcesdialog" class="uidialog">
|
||||
<div id="resource-dialog-left">
|
||||
<div id="resource-selection" class="">
|
||||
<div id="resourcequicksearch">
|
||||
<roundcube:object name="plugin.resources_searchform" id="resourcesearchbox" />
|
||||
<roundcube:button command="reset-resource-search" id="resourcesearchreset" image="/images/icons/reset.gif" title="resetsearch" width="13" height="13" />
|
||||
</div>
|
||||
<div class="boxlistcontent">
|
||||
<roundcube:object name="plugin.resources_list" id="resources-list" class="treelist" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="resource-dialog-right">
|
||||
<div id="resource-info">
|
||||
<h2 class="boxtitle"><roundcube:label name="calendar.resourcedetails" /></h2>
|
||||
<roundcube:object name="plugin.resource_info" id="resource-details" />
|
||||
</div>
|
||||
|
||||
<div id="resource-availability">
|
||||
<h2 class="boxtitle"><roundcube:label name="calendar.resourceavailability" /></h2>
|
||||
<roundcube:object name="plugin.resource_calendar" id="resource-freebusy-calendar" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="eventfreebusy" class="uidialog">
|
||||
<roundcube:object name="plugin.attendees_freebusy_table" id="attendees-freebusy-table" cellspacing="0" cellpadding="0" border="0" />
|
||||
|
||||
<div class="schedule-options">
|
||||
|
||||
<div class="schedule-buttons">
|
||||
<button id="shedule-freebusy-prev" title="<roundcube:label name='previouspage' />">◄</button><button id="shedule-freebusy-next" title="<roundcube:label name='nextpage' />">►</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="float:left; width:28em">
|
||||
<div class="form-section">
|
||||
<label for="schedule-startdate"><roundcube:label name="calendar.start" /></label>
|
||||
<input type="text" name="startdate" size="11" id="schedule-startdate" disabled="true" />
|
||||
<input type="text" name="starttime" size="6" id="schedule-starttime" disabled="true" />
|
||||
</div>
|
||||
<div class="form-section">
|
||||
<label for="schedule-enddate"><roundcube:label name="calendar.end" /></label>
|
||||
<input type="text" name="enddate" size="11" id="schedule-enddate" disabled="true" />
|
||||
<input type="text" name="endtime" size="6" id="schedule-endtime" disabled="true" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="float:left">
|
||||
<div class="schedule-find-buttons">
|
||||
<button id="shedule-find-prev">◄ <roundcube:label name="calendar.prevslot" /></button>
|
||||
<button id="shedule-find-next"><roundcube:label name="calendar.nextslot" /> ►</button>
|
||||
</div>
|
||||
<div class="schedule-options">
|
||||
<label><input type="checkbox" id="schedule-freebusy-workinghours" value="1" /><roundcube:label name="calendar.onlyworkinghours" /></label>
|
||||
</div>
|
||||
</div>
|
||||
<br style="clear:both;" />
|
||||
|
||||
<roundcube:include file="/templates/freebusylegend.html" />
|
||||
<div class="attendees-list">
|
||||
<span class="attendee organizer"><roundcube:label name="calendar.roleorganizer" /></span>
|
||||
<span class="attendee req-participant"><roundcube:label name="calendar.rolerequired" /></span>
|
||||
<span class="attendee opt-participant"><roundcube:label name="calendar.roleoptional" /></span>
|
||||
<span class="attendee non-participant"><roundcube:label name="calendar.rolenonparticipant" /></span>
|
||||
<span class="attendee chair"><roundcube:label name="calendar.rolechair" /></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="calendarform" class="uidialog">
|
||||
<roundcube:label name="loading" />
|
||||
</div>
|
||||
|
||||
<div id="eventsimport" class="uidialog">
|
||||
<roundcube:object name="plugin.events_import_form" id="events-import-form" uploadFieldSize="30" />
|
||||
</div>
|
||||
|
||||
<div id="eventsexport" class="uidialog">
|
||||
<roundcube:object name="plugin.events_export_form" id="events-export-form" />
|
||||
</div>
|
||||
|
||||
<div id="calendarurlbox" class="uidialog">
|
||||
<p><roundcube:label name="calendar.showurldescription" /></p>
|
||||
<textarea id="calfeedurl" rows="2" readonly="readonly"></textarea>
|
||||
<div id="calendarcaldavurl" style="display:none">
|
||||
<p><roundcube:label name="calendar.caldavurldescription" html="yes" /></p>
|
||||
<textarea id="caldavurl" rows="2" readonly="readonly"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="quicksearchbar">
|
||||
<roundcube:button name="searchmenulink" id="searchmenulink" image="/images/icons/glass.png" />
|
||||
<roundcube:object name="plugin.searchform" id="quicksearchbox" />
|
||||
<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" />
|
||||
</div>
|
||||
|
||||
<roundcube:object name="plugin.calendar_css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
// use skin functions to handle popup-menus
|
||||
rcube_init_mail_ui();
|
||||
rcmail_ui.popups.calendaroptions = { id:'calendaroptionsmenu', above:1, obj:$('#calendaroptionsmenu') };
|
||||
|
||||
$(document).ready(function(e){
|
||||
// initialize sidebar toggle
|
||||
$('#calendarsidebartoggle').click(function() {
|
||||
var width = $(this).data('sidebarwidth');
|
||||
var offset = $(this).data('offset');
|
||||
var $sidebar = $('#calendarsidebar'), time = 250;
|
||||
|
||||
if ($sidebar.is(':visible')) {
|
||||
$sidebar.animate({ left:'-'+(width+10)+'px' }, time, function(){ $('#calendarsidebar').hide(); });
|
||||
$(this).animate({ left:'8px'}, time, function(){ $('#calendarsidebartoggle').addClass('sidebarclosed') });
|
||||
$('#calendar').animate({ left:'20px'}, time, function(){ $(this).fullCalendar('render'); });
|
||||
}
|
||||
else {
|
||||
$sidebar.show().animate({ left:'10px' }, time);
|
||||
$(this).animate({ left:offset+'px'}, time, function(){ $('#calendarsidebartoggle').removeClass('sidebarclosed'); });
|
||||
$('#calendar').animate({ left:(width+16)+'px'}, time, function(){ $(this).fullCalendar('render'); });
|
||||
}
|
||||
})
|
||||
.data('offset', $('#calendarsidebartoggle').position().left)
|
||||
.data('sidebarwidth', $('#calendarsidebar').width() + $('#calendarsidebar').position().left);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,128 +0,0 @@
|
|||
<div id="eventedit" class="uidialog">
|
||||
<form id="eventtabs" action="#" method="post" enctype="multipart/form-data">
|
||||
<ul>
|
||||
<li><a href="#event-panel-1"><roundcube:label name="calendar.tabsummary" /></a></li>
|
||||
<li id="edit-tab-recurrence"><a href="#event-panel-recurrence"><roundcube:label name="calendar.tabrecurrence" /></a></li>
|
||||
<li id="edit-tab-attendees"><a href="#event-panel-attendees"><roundcube:label name="calendar.tabattendees" /></a></li>
|
||||
<li id="edit-tab-resources"><a href="#event-panel-resources"><roundcube:label name="calendar.tabresources" /></a></li>
|
||||
<li id="edit-tab-attachments"><a href="#event-panel-attachments"><roundcube:label name="calendar.tabattachments" /></a></li>
|
||||
</ul>
|
||||
<!-- basic info -->
|
||||
<div id="event-panel-1">
|
||||
<div class="event-section">
|
||||
<label for="edit-title"><roundcube:label name="calendar.title" /></label>
|
||||
<br />
|
||||
<input type="text" class="text" name="title" id="edit-title" size="40" />
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label for="edit-location"><roundcube:label name="calendar.location" /></label>
|
||||
<br />
|
||||
<input type="text" class="text" name="location" id="edit-location" size="40" />
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label for="edit-description"><roundcube:label name="calendar.description" /></label>
|
||||
<br />
|
||||
<textarea name="description" id="edit-description" class="text" rows="5" cols="40"></textarea>
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label for="edit-url"><roundcube:label name="calendar.url" /></label>
|
||||
<br />
|
||||
<input type="text" class="text" name="vurl" id="edit-url" size="40" />
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label style="float:right;padding-right:0.5em"><input type="checkbox" name="allday" id="edit-allday" value="1" /><roundcube:label name="calendar.all-day" /></label>
|
||||
<label for="edit-startdate"><roundcube:label name="calendar.start" /></label>
|
||||
<input type="text" name="startdate" size="11" id="edit-startdate" />
|
||||
<input type="text" name="starttime" size="6" id="edit-starttime" />
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label for="edit-enddate"><roundcube:label name="calendar.end" /></label>
|
||||
<input type="text" name="enddate" size="11" id="edit-enddate" />
|
||||
<input type="text" name="endtime" size="6" id="edit-endtime" />
|
||||
</div>
|
||||
<div class="event-section" id="edit-alarms">
|
||||
<div class="edit-alarm-item first">
|
||||
<label for="edit-alarm"><roundcube:label name="calendar.alarms" /></label>
|
||||
<roundcube:object name="plugin.alarm_select" />
|
||||
<span class="edit-alarm-buttons">
|
||||
<a href="#add" class="iconlink add add-alarm">+</a>
|
||||
<a href="#delete" class="iconlink delete delete-alarm">-</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="event-section" id="calendar-select">
|
||||
<label for="edit-calendar"><roundcube:label name="calendar.calendar" /></label>
|
||||
<roundcube:object name="plugin.calendar_select" id="edit-calendar" />
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label for="edit-categories"><roundcube:label name="calendar.category" /></label>
|
||||
<roundcube:object name="plugin.category_select" id="edit-categories" />
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label for="edit-event-status"><roundcube:label name="calendar.status" /></label>
|
||||
<roundcube:object name="plugin.status_select" id="edit-event-status" />
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label for="edit-free-busy"><roundcube:label name="calendar.freebusy" /></label>
|
||||
<roundcube:object name="plugin.freebusy_select" id="edit-free-busy" />
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label for="edit-priority"><roundcube:label name="calendar.priority" /></label>
|
||||
<roundcube:object name="plugin.priority_select" id="edit-priority" />
|
||||
</div>
|
||||
<div class="event-section">
|
||||
<label for="edit-sensitivity"><roundcube:label name="calendar.sensitivity" /></label>
|
||||
<roundcube:object name="plugin.sensitivity_select" id="edit-sensitivity" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- recurrence settings -->
|
||||
<div id="event-panel-recurrence">
|
||||
<div class="event-section border-after">
|
||||
<roundcube:object name="plugin.recurrence_form" part="frequency" />
|
||||
</div>
|
||||
<div class="recurrence-form border-after" id="recurrence-form-daily">
|
||||
<roundcube:object name="plugin.recurrence_form" part="daily" class="event-section" />
|
||||
</div>
|
||||
<div class="recurrence-form border-after" id="recurrence-form-weekly">
|
||||
<roundcube:object name="plugin.recurrence_form" part="weekly" class="event-section" />
|
||||
</div>
|
||||
<div class="recurrence-form border-after" id="recurrence-form-monthly">
|
||||
<roundcube:object name="plugin.recurrence_form" part="monthly" class="event-section" />
|
||||
</div>
|
||||
<div class="recurrence-form border-after" id="recurrence-form-yearly">
|
||||
<roundcube:object name="plugin.recurrence_form" part="yearly" class="event-section" />
|
||||
</div>
|
||||
<div class="recurrence-form" id="recurrence-form-until">
|
||||
<roundcube:object name="plugin.recurrence_form" part="until" class="event-section" />
|
||||
</div>
|
||||
<div class="recurrence-form" id="recurrence-form-rdate">
|
||||
<roundcube:object name="plugin.recurrence_form" part="rdate" class="event-section" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- attendees list -->
|
||||
<div id="event-panel-attendees">
|
||||
<roundcube:object name="plugin.attendees_list" id="edit-attendees-table" class="edit-attendees-table" cellspacing="0" cellpadding="0" border="0" />
|
||||
<roundcube:object name="plugin.attendees_form" id="edit-attendees-form" />
|
||||
<roundcube:include file="/templates/freebusylegend.html" />
|
||||
</div>
|
||||
<!-- resources list -->
|
||||
<div id="event-panel-resources">
|
||||
<roundcube:object name="plugin.attendees_list" id="edit-resources-table" class="edit-attendees-table" cellspacing="0" cellpadding="0" border="0" coltitle="resource" />
|
||||
<roundcube:object name="plugin.resources_form" id="edit-resources-form" />
|
||||
<roundcube:include file="/templates/freebusylegend.html" />
|
||||
</div>
|
||||
<!-- attachments list (with upload form) -->
|
||||
<div id="event-panel-attachments">
|
||||
<div id="edit-attachments" class="attachments-list">
|
||||
<roundcube:object name="plugin.attachments_list" id="attachmentlist" deleteIcon="/images/icons/delete.png" cancelIcon="/images/icons/delete.png" loadingIcon="/images/display/loading_blue.gif" />
|
||||
</div>
|
||||
<div id="edit-attachments-form">
|
||||
<roundcube:object name="plugin.attachments_form" id="calendar-attachment-form" attachmentFieldSize="30" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<roundcube:object name="plugin.edit_attendees_notify" id="edit-attendees-notify" class="event-dialog-message" style="display:none" />
|
||||
<roundcube:object name="plugin.edit_recurring_warning" class="event-dialog-message edit-recurring-warning" style="display:none" />
|
||||
<div id="edit-localchanges-warning" class="event-dialog-message" style="display:none"><roundcube:label name="calendar.localchangeswarning" /></div>
|
||||
</div>
|
|
@ -1,7 +0,0 @@
|
|||
<div id="edit-attendees-legend" class="availability">
|
||||
<span class="legend"><img class="availabilityicon free" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availfree" /></span>
|
||||
<span class="legend"><img class="availabilityicon busy" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availbusy" /></span>
|
||||
<span class="legend"><img class="availabilityicon tentative" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availtentative" /></span>
|
||||
<!--<span class="legend"><img class="availabilityicon out-of-office" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availoutofoffice" /></span>-->
|
||||
<span class="legend"><img class="availabilityicon unknown" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availunknown" /></span>
|
||||
</div>
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
<roundcube:include file="/includes/links.html" />
|
||||
</head>
|
||||
<body class="calendaritipattend">
|
||||
|
||||
<roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" style="margin:0 11px" />
|
||||
|
||||
<roundcube:object name="message" id="message" />
|
||||
|
||||
<div class="centerbox">
|
||||
<roundcube:object name="plugin.event_inviteform" />
|
||||
<roundcube:object name="plugin.event_invitebox" class="calendar-invitebox" />
|
||||
<roundcube:object name="plugin.event_rsvp_buttons" type="submit" iname="rsvp" id="event-rsvp" delegate="false" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,13 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
<roundcube:include file="/includes/links.html" />
|
||||
<script type="text/javascript" src="/functions.js"></script>
|
||||
</head>
|
||||
<body class="iframe" style="background:#fff; margin:0">
|
||||
|
||||
<roundcube:object name="folderacl" />
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,7 +0,0 @@
|
|||
<div id="calendar-kolabform">
|
||||
<roundcube:object name="calendarform" />
|
||||
</div>
|
||||
<script type="text/javascript">rcube_init_tabs('calendar-kolabform');</script>
|
||||
<style type="text/css">
|
||||
#calendarpropform { min-width:680px }
|
||||
</style>
|
|
@ -1,28 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
</head>
|
||||
<body class="calendarprint">
|
||||
|
||||
<div id="printconfig" class="noprint">
|
||||
<div class="calwidth">
|
||||
<a href="#close" onclick="window.close()" class="rightalign"><roundcube:label name="close" /></a>
|
||||
<span class="prop"><input type="button" id="printme" value="<roundcube:label name='print' />" onclick="window.print()"></span>
|
||||
<span class="prop"><label><input type="checkbox" id="propdescription" checked="checked" /> <roundcube:label name="calendar.printdescriptions" /></label></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<roundcube:object name="message" id="message" class="noprint" />
|
||||
|
||||
<div id="calendar" class="calwidth"></div>
|
||||
|
||||
<div class="calwidth">
|
||||
<roundcube:object name="plugin.calendar_list" activeonly="true" id="calendarlist" />
|
||||
</div>
|
||||
|
||||
<roundcube:object name="plugin.calendar_css" printmode="true" />
|
||||
|
||||
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="plugins/calendar/skins/classic/print.iehacks.css" /><![endif]-->
|
||||
</body>
|
||||
</html>
|
384
skins/elastic/templates/calendar.html
Normal file
|
@ -0,0 +1,384 @@
|
|||
<roundcube:include file="includes/layout.html" />
|
||||
<roundcube:include file="includes/menu.html" />
|
||||
|
||||
<h1 class="voice"><roundcube:label name="calendar.calendar" /></h1>
|
||||
|
||||
<!-- calendars list -->
|
||||
<div id="layout-sidebar" class="listbox" role="navigation" aria-labelledby="arial-label-calendars">
|
||||
<div class="header">
|
||||
<a class="button icon back-content-button" href="#back" data-hidden="big"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||
<span id="aria-label-calendars" class="header-title"><roundcube:label name="calendar.calendars" /></span>
|
||||
<roundcube:button name="calendaractionsmenu" id="calendaroptionsmenulink" type="link"
|
||||
title="calendar.calendaractions" class="button icon sidebar-menu" data-popup="calendaractions-menu"
|
||||
innerClass="inner" label="actions" />
|
||||
</div>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="calendarlistsearch" wrapper="searchbar menu"
|
||||
ariatag="h2" label="calsearchform" label-domain="calendar" buttontitle="findcalendars" />
|
||||
<div id="calendars-content" class="scroller">
|
||||
<roundcube:object name="plugin.calendar_list" id="calendarslist" class="treelist listing iconized" />
|
||||
</div>
|
||||
<h2 id="aria-label-minical" class="voice"><roundcube:label name="calendar.arialabelminical" /></h2>
|
||||
<div id="datepicker" class="calendar-datepicker" role="presentation"></div>
|
||||
</div>
|
||||
|
||||
<!-- calendar -->
|
||||
<div id="layout-content" class="selected no-navbar" role="main">
|
||||
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||
<div class="header" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||
<a class="button icon task-menu-button" href="#menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||
<a class="button icon back-sidebar-button folders" href="#sidebar" data-hidden="big"><span class="inner"><roundcube:label name="calendar.calendars" /></span></a>
|
||||
<span class="header-title"></span>
|
||||
<!-- toolbar -->
|
||||
<div id="calendartoolbar" class="toolbar menu">
|
||||
<roundcube:button command="addevent" type="link"
|
||||
class="button create disabled" classAct="button create"
|
||||
label="create" title="calendar.new_event" innerClass="inner" />
|
||||
<roundcube:button command="print" type="link" data-hidden="small"
|
||||
class="button print disabled" classAct="button print"
|
||||
label="calendar.print" title="calendar.printtitle" innerClass="inner" />
|
||||
<span class="spacer"></span>
|
||||
<roundcube:button command="events-import" type="link"
|
||||
class="button import disabled" classAct="button import"
|
||||
label="import" title="calendar.importevents" innerClass="inner" />
|
||||
<roundcube:button command="export" type="link"
|
||||
class="button export disabled" classAct="button export"
|
||||
label="calendar.export" title="calendar.exporttitle" innerClass="inner" />
|
||||
<roundcube:container name="toolbar" id="calendartoolbar" />
|
||||
</div>
|
||||
</div>
|
||||
<roundcube:object name="plugin.searchform" id="searchform" wrapper="searchbar menu"
|
||||
label="searchform" buttontitle="calendar.findevents" label-domain="calendar" ariatag="h2" />
|
||||
<h2 id="aria-label-calendarview" class="voice"><roundcube:label name="calendar.arialabelcalendarview" /></h2>
|
||||
<div id="calendar" class="content" role="main" aria-labelledby="aria-label-calendarview" data-elastic-mode="true">
|
||||
<roundcube:object name="plugin.agenda_options" id="agendaoptions" />
|
||||
<div id="searchcontrols" class="search-controls"></div>
|
||||
</div>
|
||||
<div class="footer toolbar menu content-frame-navigation" role="toolbar" data-hidden="big">
|
||||
<a href="#" class="button prev" onclick="$('.fc-prev-button').click()"><span class="inner"><roundcube:label name="previous" /></span></a>
|
||||
<a href="#" class="button today" onclick="$('.fc-today-button').click()"><span class="inner"><roundcube:label name="today" /></span></a>
|
||||
<a href="#" class="button date" onclick="window.calendar_datepicker()"><span class="inner"><roundcube:label name="date" /></span></a>
|
||||
<a href="#" class="button next" onclick="$('.fc-next-button').click()"><span class="inner"><roundcube:label name="next" /></span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="timezone-display" class="hidden"><roundcube:var name="env:timezone" /></div>
|
||||
|
||||
<div id="eventshow" class="popupmenu formcontent propform text-only">
|
||||
<h1 id="event-title" class="event-title form-group">Event Title</h1>
|
||||
<div id="event-status-badge"><span></span></div>
|
||||
<div class="event-location form-group" id="event-location">Location</div>
|
||||
<div class="event-date form-group" id="event-date">From-To</div>
|
||||
<div class="event-description form-group" id="event-description">
|
||||
<div class="event-text"></div>
|
||||
</div>
|
||||
<div class="event-attendees form-group" id="event-attendees">
|
||||
<div class="event-text"></div>
|
||||
</div>
|
||||
<div id="event-url" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.url" /></label>
|
||||
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||
</div>
|
||||
<div id="event-repeat" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.repeat" /></label>
|
||||
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||
</div>
|
||||
<div id="event-alarm" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.alarms" /></label>
|
||||
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||
</div>
|
||||
<div id="event-partstat" class="form-group row event-partstat">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.mystatus" /></label>
|
||||
<span class="col-sm-8 form-control-plaintext">
|
||||
<span class="event-text rsvp-status"></span>
|
||||
<a class="changersvp button edit" href="#" title="<roundcube:label name='calendar.changepartstat' />"><span class="inner"><roundcube:label name='calendar.changepartstat' /></span></a>
|
||||
</span>
|
||||
</div>
|
||||
<div id="event-calendar" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.calendar" /></label>
|
||||
<span class="col-sm-8 form-control-plaintext event-text">Default</span>
|
||||
</div>
|
||||
<div id="event-category" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.category" /></label>
|
||||
<span class="col-sm-8 form-control-plaintext event-text"></span>
|
||||
</div>
|
||||
<div id="event-status" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.status" /></label>
|
||||
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||
</div>
|
||||
<div id="event-free-busy" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.freebusy" /></label>
|
||||
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||
</div>
|
||||
<div id="event-priority" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.priority" /></label>
|
||||
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||
</div>
|
||||
<div id="event-rsvp-comment" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.rsvpcomment" /></label>
|
||||
<span class="event-text col-sm-8 form-control-plaintext"></span>
|
||||
</div>
|
||||
<div id="event-links" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.links" /></label>
|
||||
<span class="event-text col-sm-8"></span>
|
||||
</div>
|
||||
<div id="event-attachments" class="form-group row">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="attachments" /></label>
|
||||
<span class="event-text col-sm-8"></span>
|
||||
</div>
|
||||
<div id="event-created" class="form-group row faded">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.created" /></label>
|
||||
<span class="event-text event-created col-sm-8 form-control-plaintext"></span>
|
||||
</div>
|
||||
<div id="event-changed" class="form-group row faded">
|
||||
<label class="col-sm-4 col-form-label"><roundcube:label name="calendar.changed" /></label>
|
||||
<span class="event-text event-changed col-sm-8 form-control-plaintext"></span>
|
||||
</div>
|
||||
<roundcube:object name="plugin.event_rsvp_buttons" id="event-rsvp" class="calendar-invitebox invitebox boxinformation" style="display:none" />
|
||||
</div>
|
||||
|
||||
<roundcube:include file="/templates/eventedit.html" />
|
||||
|
||||
<div id="calendaractions-menu" class="popupmenu">
|
||||
<h3 id="aria-label-calendaroptions" class="voice"><roundcube:label name="calendar.calendaractions" /></h3>
|
||||
<ul class="menu listing" role="menu" aria-labelledby="aria-label-calendaroptions">
|
||||
<roundcube:button type="link-menuitem" command="calendar-create" label="calendar.addcalendar" class="create disabled" classAct="create active" />
|
||||
<roundcube:button type="link-menuitem" command="calendar-edit" label="calendar.editcalendar" class="edit disabled" classAct="edit active" />
|
||||
<roundcube:button type="link-menuitem" command="calendar-delete" label="calendar.deletecalendar" class="delete disabled" classAct="delete active" />
|
||||
<roundcube:if condition="env:calendar_driver == 'kolab'" />
|
||||
<roundcube:button type="link-menuitem" command="calendar-remove" label="calendar.removelist" class="remove disabled" classAct="remove active" />
|
||||
<roundcube:endif />
|
||||
<roundcube:button type="link-menuitem" command="calendar-showurl" label="calendar.showurl" class="showurl disabled" classAct="showurl active" />
|
||||
<roundcube:if condition="!empty(env:calendar_settings['freebusy_url'])" />
|
||||
<roundcube:button type="link-menuitem" command="calendar-showfburl" label="calendar.showfburl" class="showurl disabled" classAct="showurl active" />
|
||||
<roundcube:endif />
|
||||
<roundcube:if condition="env:calendar_driver == 'kolab'" />
|
||||
<roundcube:button type="link-menuitem" command="folders" task="settings" label="managefolders" class="folders disabled" classAct="folders active" />
|
||||
<roundcube:endif />
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="eventoptionsmenu" class="popupmenu">
|
||||
<h3 id="aria-label-eventoptions" class="voice"><roundcube:label name="calendar.eventoptions" /></h3>
|
||||
<ul class="menu listing" role="menu" aria-labelledby="aria-label-eventoptions">
|
||||
<roundcube:button type="link-menuitem" command="event-download" label="download" class="download disabled" classAct="download active" />
|
||||
<roundcube:button type="link-menuitem" command="event-sendbymail" label="send" class="send disabled" classAct="send active" />
|
||||
<roundcube:button type="link-menuitem" command="event-copy" label="copy" class="copy disabled" classAct="copy active" />
|
||||
<roundcube:if condition="env:calendar_driver == 'kolab' && config:kolab_bonnie_api" />
|
||||
<roundcube:button type="link-menuitem" command="event-history" label="calendar.eventhistory" class="history disabled" classAct="history active" />
|
||||
<roundcube:endif />
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="eventresourcesdialog" class="popupmenu">
|
||||
<h3 class="voice" id="aria-label-resourceselection"><roundcube:label name="calendar.arialabelresourceselection" /></h3>
|
||||
<div class="resource-selection selection-list" role="navigation" aria-labelledby="aria-label-resourceselection">
|
||||
<div class="header">
|
||||
<span class="header-title"><roundcube:label name="calendar.tabresources" /></span>
|
||||
</div>
|
||||
<roundcube:object name="plugin.resources_searchform" id="resourcesearchbox"
|
||||
wrapper="searchbar menu" ariatag="h4" buttontitle="calendar.findresources"
|
||||
label="resourcesearchform" label-domain="calendar" />
|
||||
<div class="scroller">
|
||||
<roundcube:object name="plugin.resources_list" id="resources-list" class="listing treelist" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="resource-content selection-content">
|
||||
<div class="header" data-hidden="normal,big">
|
||||
<a class="button icon back" href="#back" onclick="$('#eventresourcesdialog .resource-content').hide(); $('#eventresourcesdialog .resource-selection').show()">
|
||||
<span class="inner"><roundcube:label name="back" /></span>
|
||||
</a>
|
||||
<span class="header-title"><roundcube:label name="calendar.resourceprops" /></span>
|
||||
</div>
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="#resource-availability" data-toggle="tab" role="tab">
|
||||
<roundcube:label name="calendar.resourceavailability" />
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#resource-info" data-toggle="tab" role="tab">
|
||||
<roundcube:label name="calendar.resourcedetails" />
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div id="resource-availability" class="tab-pane active" role="tabpanel" aria-labelledby="aria-label-resourceavailability">
|
||||
<h3 class="voice" id="aria-label-resourceavailability"><roundcube:label name="calendar.resourceavailability" /></h3>
|
||||
<roundcube:object name="plugin.resource_calendar" id="resource-freebusy-calendar" class="raw-tables" />
|
||||
<div class="slot-nav">
|
||||
<roundcube:button name="resource-cal-prev" id="resource-calendar-prev" type="link"
|
||||
class="icon prevpage" title="calendar.prevslot" label="calendar.prevweek" />
|
||||
<roundcube:button name="resource-cal-next" id="resource-calendar-next" type="link"
|
||||
class="icon nextpage" title="calendar.nextslot" label="calendar.nextweek" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="resource-info" class="tab-pane" role="tabpanel" aria-labelledby="aria-label-resourcedetails">
|
||||
<h3 class="voice" id="aria-label-resourcedetails"><roundcube:label name="calendar.resourcedetails" /></h3>
|
||||
<roundcube:object name="plugin.resource_info" id="resource-details" class="propform text-only"
|
||||
aria-live="polite" aria-relevant="text" aria-atomic="true" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="eventfreebusy" class="popupmenu calendar-scheduler formcontent">
|
||||
<roundcube:object name="plugin.attendees_freebusy_table" id="attendees-freebusy-table"
|
||||
class="schedule-table" data-h-margin="-1" data-v-margin="1" />
|
||||
<div class="nav">
|
||||
<div class="schedule-buttons">
|
||||
<button type="button" id="schedule-find-prev" class="btn btn-secondary prev-slot"><roundcube:label name="calendar.prevslot" /></button>
|
||||
<button type="button" id="schedule-find-next" class="btn btn-secondary next-slot"><roundcube:label name="calendar.nextslot" /></button>
|
||||
</div>
|
||||
<div class="schedule-options">
|
||||
<label><input type="checkbox" id="schedule-freebusy-workinghours" value="1" class="pretty-checkbox" /><roundcube:label name="calendar.onlyworkinghours" /></label>
|
||||
</div>
|
||||
<div class="schedule-nav">
|
||||
<button type="button" id="schedule-freebusy-prev" title="<roundcube:label name='previouspage' />">◄</button>
|
||||
<button type="button" id="schedule-freebusy-next" title="<roundcube:label name='nextpage' />">►</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="schedule-range">
|
||||
<div class="form-group row">
|
||||
<label for="schedule-startdate" class="col-form-label col-sm-2"><roundcube:label name="calendar.start" /></label>
|
||||
<span class="col-sm-10 datetime">
|
||||
<input type="text" name="startdate" size="11" id="schedule-startdate" class="form-control" disabled="true" />
|
||||
<input type="text" name="starttime" size="6" id="schedule-starttime" class="form-control" disabled="true" />
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="schedule-enddate" class="col-form-label col-sm-2"><roundcube:label name="calendar.end" /></label>
|
||||
<span class="col-sm-10 datetime">
|
||||
<input type="text" name="enddate" size="11" id="schedule-enddate" class="form-control" disabled="true" />
|
||||
<input type="text" name="endtime" size="6" id="schedule-endtime" class="form-control" disabled="true" />
|
||||
</span>
|
||||
</div>
|
||||
<div class="schedule-legend form-group row">
|
||||
<label class="col-form-label col-sm-2"><roundcube:label name="calendar.legend" /></label>
|
||||
<span class="col-sm-10 form-control-plaintext">
|
||||
<roundcube:include file="/templates/freebusylegend.html" />
|
||||
<span class="attendee organizer"><roundcube:label name="calendar.roleorganizer" /></span>
|
||||
<span class="attendee req-participant"><roundcube:label name="calendar.rolerequired" /></span>
|
||||
<span class="attendee opt-participant"><roundcube:label name="calendar.roleoptional" /></span>
|
||||
<span class="attendee non-participant"><roundcube:label name="calendar.rolenonparticipant" /></span>
|
||||
<span class="attendee chair"><roundcube:label name="calendar.rolechair" /></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="eventsimport" class="popupmenu formcontent">
|
||||
<roundcube:object name="plugin.events_import_form" id="events-import-form" />
|
||||
</div>
|
||||
|
||||
<div id="eventsexport" class="popupmenu formcontent">
|
||||
<roundcube:object name="plugin.events_export_form" id="events-export-form" />
|
||||
</div>
|
||||
|
||||
<div id="calendarurlbox" class="popupmenu">
|
||||
<p><roundcube:label name="calendar.showurldescription" /></p>
|
||||
<textarea id="calfeedurl" rows="2" readonly="readonly"></textarea>
|
||||
<div id="calendarcaldavurl" style="display:none; margin-top:1rem">
|
||||
<p><roundcube:label name="calendar.caldavurldescription" html="yes" /></p>
|
||||
<textarea id="caldavurl" rows="2" readonly="readonly"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="fburlbox" class="popupmenu">
|
||||
<p><roundcube:label name="calendar.fburldescription" /></p>
|
||||
<textarea id="fburl" rows="2" readonly="readonly"></textarea>
|
||||
</div>
|
||||
|
||||
<roundcube:if condition="config:kolab_bonnie_api" />
|
||||
|
||||
<div id="eventhistory" class="popupmenu" aria-hidden="true">
|
||||
<roundcube:object name="plugin.object_changelog_table" id="event-changelog-table" class="changelog-table" />
|
||||
<div class="compare-button"><input type="button" class="button" value="<roundcube:label name='libkolab.compare' />" /></div>
|
||||
</div>
|
||||
|
||||
<div id="eventdiff" class="popupmenu formcontent text-only">
|
||||
<h1 class="event-title">Event Title</h1>
|
||||
<h1 class="event-title-new event-text-new"></h1>
|
||||
<div class="form-group row event-date"></div>
|
||||
<div class="form-group row event-location">
|
||||
<h5 class="label"><roundcube:label name="calendar.location" /></h5>
|
||||
<div class="event-text-old"></div>
|
||||
<div class="event-text-new"></div>
|
||||
</div>
|
||||
<div class="form-group row event-description">
|
||||
<h5 class="label"><roundcube:label name="calendar.description" /></h5>
|
||||
<div class="event-text-diff" style="white-space:pre-wrap"></div>
|
||||
<div class="event-text-old"></div>
|
||||
<div class="event-text-new"></div>
|
||||
</div>
|
||||
<div class="form-group row event-url">
|
||||
<h5 class="label"><roundcube:label name="calendar.url" /></h5>
|
||||
<div class="event-text-old"></div>
|
||||
<div class="event-text-new"></div>
|
||||
</div>
|
||||
<div class="form-group row event-recurrence">
|
||||
<h5 class="label"><roundcube:label name="calendar.repeat" /></h5>
|
||||
<div class="event-text-old"></div>
|
||||
<div class="event-text-new"></div>
|
||||
</div>
|
||||
<div class="form-group row event-alarms">
|
||||
<h5 class="label"><roundcube:label name="calendar.alarms" /><span class="index"></span></h5>
|
||||
<div class="event-text-old"></div>
|
||||
<div class="event-text-new"></div>
|
||||
</div>
|
||||
<div class="event-line event-start">
|
||||
<label><roundcube:label name="calendar.start" /></label>
|
||||
<span class="event-text-old"></span> ⇢
|
||||
<span class="event-text-new"></span>
|
||||
</div>
|
||||
<div class="event-line event-end">
|
||||
<label><roundcube:label name="calendar.end" /></label>
|
||||
<span class="event-text-old"></span> ⇢
|
||||
<span class="event-text-new"></span>
|
||||
</div>
|
||||
<div class="event-line event-attendees">
|
||||
<label><roundcube:label name="calendar.tabattendees" /><span class="index"></span></label>
|
||||
<span class="event-text-old"></span> ⇢
|
||||
<span class="event-text-new"></span>
|
||||
</div>
|
||||
<div class="event-line event-calendar">
|
||||
<label><roundcube:label name="calendar.calendar" /></label>
|
||||
<span class="event-text-old"></span> ⇢
|
||||
<span class="event-text-new"></span>
|
||||
</div>
|
||||
<div class="event-line event-categories">
|
||||
<label><roundcube:label name="calendar.category" /></label>
|
||||
<span class="event-text-old"></span> ⇢
|
||||
<span class="event-text-new"></span>
|
||||
</div>
|
||||
<div class="event-line event-status">
|
||||
<label><roundcube:label name="calendar.status" /></label>
|
||||
<span class="event-text-old"></span> ⇢
|
||||
<span class="event-text-new"></span>
|
||||
</div>
|
||||
<div class="event-line event-free_busy">
|
||||
<label><roundcube:label name="calendar.freebusy" /></label>
|
||||
<span class="event-text-old"></span> ⇢
|
||||
<span class="event-text-new"></span>
|
||||
</div>
|
||||
<div class="event-line event-priority">
|
||||
<label><roundcube:label name="calendar.priority" /></label>
|
||||
<span class="event-text-old"></span> ⇢
|
||||
<span class="event-text-new"></span>
|
||||
</div>
|
||||
<div class="event-line event-sensitivity">
|
||||
<label><roundcube:label name="calendar.sensitivity" /></label>
|
||||
<span class="event-text-old"></span> ⇢
|
||||
<span class="event-text-new"></span>
|
||||
</div>
|
||||
<div class="form-group row event-attachments">
|
||||
<label><roundcube:label name="attachments" /><span class="index"></span></label>
|
||||
<div class="event-text-old"></div>
|
||||
<div class="event-text-new"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<roundcube:endif />
|
||||
|
||||
<roundcube:object name="plugin.calendar_css" folder-class="div.$class a.calname:before" folder-fallback-color="#161b1d" />
|
||||
|
||||
<roundcube:include file="includes/footer.html" />
|
7
skins/elastic/templates/dialog.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
<roundcube:include file="includes/layout.html" />
|
||||
|
||||
<h1 class="voice"><roundcube:label name="calendar.arialabeleventform" /></h1>
|
||||
|
||||
<roundcube:include file="/templates/eventedit.html" />
|
||||
|
||||
<roundcube:include file="includes/footer.html" />
|
158
skins/elastic/templates/eventedit.html
Normal file
|
@ -0,0 +1,158 @@
|
|||
<div id="eventedit" class="<roundcube:exp expression="env:framed ? '' : 'popupmenu '">formcontent" aria-hidden="true" data-notabs="true">
|
||||
<form class="tabbed" action="#" method="post" enctype="multipart/form-data">
|
||||
<!-- basic info -->
|
||||
<fieldset id="event-panel-summary">
|
||||
<legend><roundcube:label name="calendar.tabsummary" /></legend>
|
||||
<div class="form-group">
|
||||
<label for="edit-title"><roundcube:label name="calendar.title" /></label>
|
||||
<input type="text" class="form-control" name="title" id="edit-title" size="40" required="true" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-location"><roundcube:label name="calendar.location" /></label>
|
||||
<input type="text" class="form-control" name="location" id="edit-location" size="40" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="edit-description"><roundcube:label name="calendar.description" /></label>
|
||||
<textarea name="description" id="edit-description" class="form-control" rows="5" cols="40"></textarea>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="edit-startdate" class="col-sm-2 col-form-label"><roundcube:label name="calendar.start" /></label>
|
||||
<div class="col-sm-10 datetime">
|
||||
<input type="text" name="startdate" size="11" id="edit-startdate" class="form-control" required="true" />
|
||||
<input type="text" name="starttime" size="6" id="edit-starttime" class="form-control" aria-label="<roundcube:label name='calendar.starttime' />" />
|
||||
<label><input type="checkbox" name="allday" id="edit-allday" value="1" class="pretty-checkbox" /><roundcube:label name="calendar.all-day" /></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="edit-enddate" class="col-sm-2 col-form-label"><roundcube:label name="calendar.end" /></label>
|
||||
<div class="col-sm-10 datetime">
|
||||
<input type="text" name="enddate" size="11" id="edit-enddate" class="form-control" required="true" />
|
||||
<input type="text" name="endtime" size="6" id="edit-endtime" class="form-control" aria-label="<roundcube:label name='calendar.endtime' />" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="edit-alarms">
|
||||
<label for="edit-alarm-item" class="col-sm-2 col-form-label"><roundcube:label name="calendar.alarms" /></label>
|
||||
<div class="col-sm-10 alarms-input">
|
||||
<div class="edit-alarm-item input-group first">
|
||||
<roundcube:object name="plugin.alarm_select" id="edit-alarm-item" />
|
||||
<span class="edit-alarm-buttons input-group-append">
|
||||
<a href="#add" class="icon button btn add add-alarm input-group-text"><span class="inner"><roundcube:label name="libcalendaring.addalarm" /></span></a>
|
||||
<a href="#delete" class="icon button btn delete delete-alarm input-group-text"><span class="inner"><roundcube:label name="libcalendaring.removealarm" /></span></a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="calendar-select">
|
||||
<label for="edit-calendar" class="col-sm-2 col-form-label"><roundcube:label name="calendar.calendar" /></label>
|
||||
<div class="col-sm-10">
|
||||
<roundcube:object name="plugin.calendar_select" id="edit-calendar" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="edit-categories" class="col-sm-2 col-form-label"><roundcube:label name="calendar.category" /></label>
|
||||
<div class="col-sm-10">
|
||||
<roundcube:object name="plugin.category_select" id="edit-categories" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="edit-event-status" class="col-sm-2 col-form-label"><roundcube:label name="calendar.status" /></label>
|
||||
<div class="col-sm-10">
|
||||
<roundcube:object name="plugin.status_select" id="edit-event-status" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="edit-free-busy" class="col-sm-2 col-form-label"><roundcube:label name="calendar.freebusy" /></label>
|
||||
<div class="col-sm-10">
|
||||
<roundcube:object name="plugin.freebusy_select" id="edit-free-busy" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="edit-priority" class="col-sm-2 col-form-label"><roundcube:label name="calendar.priority" /></label>
|
||||
<div class="col-sm-10">
|
||||
<roundcube:object name="plugin.priority_select" id="edit-priority" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="edit-sensitivity" class="col-sm-2 col-form-label"><roundcube:label name="calendar.sensitivity" /></label>
|
||||
<div class="col-sm-10">
|
||||
<roundcube:object name="plugin.sensitivity_select" id="edit-sensitivity" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="edit-url" class="col-sm-2 col-form-label"><roundcube:label name="calendar.url" /></label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="vurl" id="edit-url" size="40" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" id="edit-event-links">
|
||||
<label class="col-sm-2 col-form-label"><roundcube:label name="calendar.links" /></label>
|
||||
<div class="col-sm-10">
|
||||
<div class="event-text"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<!-- recurrence settings -->
|
||||
<fieldset id="event-panel-recurrence">
|
||||
<legend><roundcube:label name="calendar.tabrecurrence" /></legend>
|
||||
<div class="form-group row border-after">
|
||||
<roundcube:object name="plugin.recurrence_form" part="frequency" />
|
||||
</div>
|
||||
<div class="recurrence-form border-after" id="recurrence-form-daily">
|
||||
<roundcube:object name="plugin.recurrence_form" part="daily" class="form-group row" />
|
||||
</div>
|
||||
<div class="recurrence-form border-after" id="recurrence-form-weekly">
|
||||
<roundcube:object name="plugin.recurrence_form" part="weekly" class="form-group row" />
|
||||
</div>
|
||||
<div class="recurrence-form border-after" id="recurrence-form-monthly">
|
||||
<roundcube:object name="plugin.recurrence_form" part="monthly" class="form-group row" />
|
||||
</div>
|
||||
<div class="recurrence-form border-after" id="recurrence-form-yearly">
|
||||
<roundcube:object name="plugin.recurrence_form" part="yearly" class="form-group row" />
|
||||
</div>
|
||||
<div class="recurrence-form" id="recurrence-form-until">
|
||||
<roundcube:object name="plugin.recurrence_form" part="until" class="form-group row" />
|
||||
</div>
|
||||
<div class="recurrence-form" id="recurrence-form-rdate">
|
||||
<roundcube:object name="plugin.recurrence_form" part="rdate" class="form-group row" />
|
||||
</div>
|
||||
</fieldset>
|
||||
<!-- attendees list -->
|
||||
<fieldset id="event-panel-attendees" data-navlink-class="nav-icon attendees">
|
||||
<legend><roundcube:label name="calendar.tabattendees" /></legend>
|
||||
<h3 id="aria-label-attendeestable" class="voice"><roundcube:label name="calendar.arialabeleventattendees" /></h3>
|
||||
<roundcube:object name="plugin.attendees_list" id="edit-attendees-table" class="edit-attendees-table no-img table table-sm"
|
||||
coltitle="attendee" aria-labelledby="aria-label-attendeestable" />
|
||||
<roundcube:object name="plugin.attendees_form" id="edit-attendees-form" />
|
||||
<roundcube:include file="/templates/freebusylegend.html" />
|
||||
</fieldset>
|
||||
<!-- resources list -->
|
||||
<fieldset id="event-panel-resources" data-navlink-class="nav-icon resources">
|
||||
<legend><roundcube:label name="calendar.tabresources" /></legend>
|
||||
<h3 id="aria-label-resourcestable" class="voice"><roundcube:label name="calendar.arialabeleventresources" /></h3>
|
||||
<roundcube:object name="plugin.attendees_list" id="edit-resources-table" class="edit-attendees-table no-img table table-sm"
|
||||
coltitle="resource" aria-labelledby="aria-label-resourcestable" />
|
||||
<roundcube:object name="plugin.resources_form" id="edit-resources-form" />
|
||||
<roundcube:include file="/templates/freebusylegend.html" />
|
||||
</fieldset>
|
||||
<!-- attachments list (with upload form) -->
|
||||
<fieldset id="event-panel-attachments" data-navlink-class="nav-icon attachments">
|
||||
<legend><roundcube:label name="calendar.tabattachments" /></legend>
|
||||
<div id="edit-attachments-droparea" class="file-upload">
|
||||
<h3 id="aria-label-attachmentuploadform" class="voice"><roundcube:label name="arialabelattachmentuploadform" /></h3>
|
||||
<div id="edit-attachments-form" class="upload-form" role="region" aria-labelledby="aria-label-attachmentuploadform">
|
||||
<roundcube:object name="plugin.attachments_form" mode="hint" />
|
||||
<button type="button" class="btn btn-secondary attach" onclick="rcmail.upload_input('event-attachment-form'); return false"><roundcube:label name="addattachment" /></button>
|
||||
</div>
|
||||
<div id="edit-attachments">
|
||||
<roundcube:object name="plugin.attachments_list" id="attachmentlist" class="attachmentslist" />
|
||||
</div>
|
||||
</div>
|
||||
<roundcube:object name="plugin.filedroparea" id="edit-attachments-droparea" />
|
||||
</fieldset>
|
||||
</form>
|
||||
<roundcube:object name="plugin.edit_recurrence_sync" id="edit-recurrence-syncstart" class="dialog-message" style="display:none" />
|
||||
<roundcube:object name="plugin.edit_attendees_notify" id="edit-attendees-notify" class="dialog-message" style="display:none" />
|
||||
<roundcube:object name="plugin.edit_recurring_warning" class="dialog-message edit-recurring-warning" style="display:none" />
|
||||
<roundcube:object name="plugin.attachments_form" id="event-attachment-form" mode="smart" />
|
||||
<div id="edit-localchanges-warning" class="dialog-message" style="display:none"><roundcube:label name="calendar.localchangeswarning" /></div>
|
||||
</div>
|
9
skins/elastic/templates/freebusylegend.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
<div id="edit-attendees-legend" class="availability">
|
||||
<span class="legend free"><roundcube:label name="calendar.availfree" /></span>
|
||||
<span class="legend busy"><roundcube:label name="calendar.availbusy" /></span>
|
||||
<span class="legend tentative"><roundcube:label name="calendar.availtentative" /></span>
|
||||
<!--
|
||||
<span class="legend out-of-office"><roundcube:label name="calendar.availoutofoffice" /></span>
|
||||
-->
|
||||
<span class="legend unknown"><roundcube:label name="calendar.availunknown" /></span>
|
||||
</div>
|
11
skins/elastic/templates/itipattend.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
<roundcube:include file="includes/layout.html" />
|
||||
|
||||
<roundcube:object name="plugin.event_inviteform" class="standalone-invitebox" />
|
||||
<roundcube:object name="logo" src="/images/logo.svg" data-src-small="0" id="logo" alt="Logo" />
|
||||
<div class="calendar-invitebox invitebox boxinformation">
|
||||
<roundcube:object name="plugin.event_invitebox" />
|
||||
<roundcube:object name="plugin.event_rsvp_buttons" type="submit" iname="rsvp" id="event-rsvp" delegate="false" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<roundcube:include file="includes/footer.html" />
|
19
skins/elastic/templates/print.html
Normal file
|
@ -0,0 +1,19 @@
|
|||
<roundcube:include file="includes/layout.html" />
|
||||
|
||||
<div class="print-config">
|
||||
<button type="button" class="btn btn-primary print" onclick="window.print()"><roundcube:label name='print' /></button>
|
||||
<span class="prop">
|
||||
<input type="checkbox" id="propdescription" checked="checked" class="pretty-checkbox" />
|
||||
<label for="propdescription"><roundcube:label name="calendar.printdescriptions" /></label>
|
||||
</span>
|
||||
<div id="calendar-view-selector" class="btn-group btn-group-toggle" role="group"></div>
|
||||
</div>
|
||||
|
||||
<div class="print-content">
|
||||
<div id="calendar" data-view-selector="calendar-view-selector"></div>
|
||||
</div>
|
||||
|
||||
<roundcube:object name="plugin.calendar_list" activeonly="true" id="calendarlist" />
|
||||
<roundcube:object name="plugin.calendar_css" printmode="true" folder-class="div.$class a.calname" folder-fallback-color="#000" />
|
||||
|
||||
<roundcube:include file="includes/footer.html" />
|
|
@ -196,7 +196,7 @@ pre {
|
|||
height: 22px;
|
||||
}
|
||||
|
||||
#calendars .treelist li span.calname {
|
||||
#calendars .treelist li a.calname {
|
||||
display: block;
|
||||
padding: 0px 18px 2px 2px;
|
||||
position: absolute;
|
||||
|
@ -221,18 +221,18 @@ pre {
|
|||
background-image: none;
|
||||
}
|
||||
|
||||
#calendars .treelist li div.virtual > span.calname {
|
||||
#calendars .treelist li div.virtual > a.calname {
|
||||
color: #aaa;
|
||||
top: 4px;
|
||||
left: 20px;
|
||||
}
|
||||
|
||||
#calendars .treelist li.x-birthdays span.calname,
|
||||
#calendars .treelist li.x-invitations span.calname {
|
||||
#calendars .treelist li.x-birthdays a.calname,
|
||||
#calendars .treelist li.x-invitations a.calname {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
#calendars .treelist.flat li span.calname {
|
||||
#calendars .treelist.flat li a.calname {
|
||||
left: 24px;
|
||||
right: 42px;
|
||||
}
|
||||
|
@ -376,27 +376,27 @@ pre {
|
|||
background-color: #c7e3ef;
|
||||
}
|
||||
|
||||
#calendars .treelist li.selected > span.calname {
|
||||
#calendars .treelist li.selected > a.calname {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#calendars .treelist div.readonly span.calname {
|
||||
#calendars .treelist div.readonly a.calname {
|
||||
background-position: right -20px;
|
||||
}
|
||||
|
||||
#calendars .treelist li.user > div > span.calname {
|
||||
#calendars .treelist li.user > div > a.calname {
|
||||
background-position: right -38px;
|
||||
}
|
||||
/*
|
||||
#calendars .treelist div.user.readonly span.calname {
|
||||
#calendars .treelist div.user.readonly a.calname {
|
||||
background-position: right -56px;
|
||||
}
|
||||
|
||||
#calendars .treelist div.shared span.calname {
|
||||
#calendars .treelist div.shared a.calname {
|
||||
background-position: right -74px;
|
||||
}
|
||||
|
||||
#calendars .treelist div.shared.readonly span.calname {
|
||||
#calendars .treelist div.shared.readonly a.calname {
|
||||
background-position: right -92px;
|
||||
}
|
||||
*/
|
||||
|
@ -608,7 +608,7 @@ a.miniColors-trigger {
|
|||
line-height: 20px;
|
||||
}
|
||||
|
||||
#edit-attachments ul li a.file {
|
||||
#edit-attachments ul li a.filename {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
@ -742,52 +742,6 @@ a.miniColors-trigger {
|
|||
margin: 0 -0.2em;
|
||||
}
|
||||
|
||||
#event-status-badge {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#event-status-badge span {
|
||||
display: none;
|
||||
text-transform: uppercase;
|
||||
width: 150px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
position: absolute;
|
||||
left: -20px;
|
||||
top: 35px;
|
||||
padding-left: 10px;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
color: #fff;
|
||||
box-shadow: 1px 1px 2px #ccc, -1px -1px 2px #ccc;
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
-o-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.eventdialog.status-cancelled #event-status-badge span {
|
||||
background: url(images/badge.png) 26px -24px no-repeat #cc0000;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.eventdialog.sensitivity-private #event-status-badge span {
|
||||
background: url(images/badge.png) 40px -52px no-repeat #0066ff;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.eventdialog.sensitivity-confidential #event-status-badge span {
|
||||
background: url(images/badge.png) 20px 2px no-repeat #cc0000;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.calendarmain .status-cancelled #event-title,
|
||||
.calendarmain .sensitivity-private #event-title,
|
||||
.calendarmain .sensitivity-confidential #event-title {
|
||||
|
@ -933,6 +887,18 @@ a.miniColors-trigger {
|
|||
visibility: visible;
|
||||
}
|
||||
|
||||
body.eventdialog {
|
||||
margin: 0;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
body.eventdialog #eventedit {
|
||||
display: block;
|
||||
top: 0;
|
||||
padding: 1em;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
#eventedit {
|
||||
position: relative;
|
||||
top: -1.5em;
|
||||
|
@ -965,6 +931,10 @@ div.form-section,
|
|||
border-bottom: 2px solid #fafafa;
|
||||
}
|
||||
|
||||
div.event-section > .col-form-label {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.calendarmain .eventdialog label,
|
||||
#eventedit label,
|
||||
.form-section label {
|
||||
|
@ -1025,7 +995,7 @@ td.topalign {
|
|||
padding: 0 0.5em 0.5em 0.5em;
|
||||
}
|
||||
|
||||
.event-dialog-message,
|
||||
.dialog-message,
|
||||
.event-update-confirm .message {
|
||||
margin-top: 0.5em;
|
||||
padding: 0.8em;
|
||||
|
@ -1033,7 +1003,7 @@ td.topalign {
|
|||
background-color: #fef893;
|
||||
}
|
||||
|
||||
.event-dialog-message .message,
|
||||
.dialog-message .message,
|
||||
.event-update-confirm .message {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
@ -1046,13 +1016,13 @@ td.topalign {
|
|||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.event-dialog-message span.ui-icon,
|
||||
.dialog-message span.ui-icon,
|
||||
.event-update-confirm span.ui-icon {
|
||||
float: left;
|
||||
margin: 0 7px 20px 0;
|
||||
}
|
||||
|
||||
.event-dialog-message label,
|
||||
.dialog-message label,
|
||||
.event-update-confirm label {
|
||||
min-width: 3em;
|
||||
padding-right: 1em;
|
||||
|
@ -1421,6 +1391,7 @@ td.topalign {
|
|||
|
||||
#schedule-freebusy-times tr.times td {
|
||||
cursor: pointer;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#schedule-freebusy-times #fbrowall td {
|
||||
|
@ -1547,20 +1518,6 @@ a.dropdown-link:after {
|
|||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
#calendar-kolabform {
|
||||
position: relative;
|
||||
margin: 0 -8px;
|
||||
min-width: 660px;
|
||||
min-height: 400px;
|
||||
}
|
||||
|
||||
#calendar-kolabform table td.title {
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
color: #666;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
#resource-selection {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
|
@ -1624,12 +1581,9 @@ a.dropdown-link:after {
|
|||
bottom: -1px;
|
||||
}
|
||||
|
||||
#resource-freebusy-calendar .fc-content {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
#resource-freebusy-calendar .fc-content .fc-event-bg {
|
||||
background: 0;
|
||||
#resource-freebusy-calendar .fc-toolbar {
|
||||
height: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#resource-freebusy-calendar .fc-event.status-busy,
|
||||
|
@ -1658,7 +1612,6 @@ a.dropdown-link:after {
|
|||
#resourcesearchbox {
|
||||
width: 100%;
|
||||
height: 26px;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
@ -1676,33 +1629,22 @@ a.dropdown-link:after {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/* fullcalendar style overrides */
|
||||
|
||||
.rcube-fc-content {
|
||||
overflow: hidden;
|
||||
border: 0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.calendarmain .fc-content {
|
||||
position: absolute !important;
|
||||
top: 40px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
.calendarmain .fc-body,
|
||||
.fc-scroller {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.calendarmain.quickview-active .fc-content {
|
||||
.calendarmain.quickview-active .fc-view .fc-scroller {
|
||||
background-image: url('images/focusview.png');
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
#fish-eye-view .fc-content {
|
||||
top: 2px;
|
||||
bottom: 2px;
|
||||
.fc-unthemed .fc-list-heading td {
|
||||
background: rgba(0, 0, 0, .05);
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#quickview-calendar {
|
||||
|
@ -1719,9 +1661,9 @@ a.dropdown-link:after {
|
|||
.calendarmain #calendar .fc-button,
|
||||
.calendarmain #calendar .fc-button.fc-state-default,
|
||||
.calendarmain #calendar .fc-button.fc-state-hover {
|
||||
margin: -2px 0 0 0;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
margin-top: -2px;
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
color: #333;
|
||||
border: 1px solid #ababab;
|
||||
background: #f1f1f1;
|
||||
|
@ -1747,15 +1689,12 @@ a.dropdown-link:after {
|
|||
margin-right: 0;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
.calendarmain #calendar .fc-left .fc-button {
|
||||
font-size: 10px;
|
||||
color: #555;
|
||||
min-width: 50px;
|
||||
max-width: 75px;
|
||||
height: 13px;
|
||||
height: 40px;
|
||||
line-height: 1em;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
@ -1766,89 +1705,91 @@ a.dropdown-link:after {
|
|||
border: 0;
|
||||
background: url(images/toolbar.png) center 100px no-repeat;
|
||||
box-shadow: none;
|
||||
-o-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
outline: none;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button:focus {
|
||||
.calendarmain #calendar .fc-left .fc-button:focus {
|
||||
color: #fff;
|
||||
text-shadow: 0px 1px 1px #666;
|
||||
background-color: rgba(30,150,192, 0.5);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button.fc-state-active {
|
||||
.calendarmain #calendar .fc-left .fc-button::-moz-focus-inner {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-left .fc-button.fc-state-active {
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
text-shadow: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button-agendaDay {
|
||||
.calendarmain #calendar .fc-left .fc-agendaDay-button {
|
||||
background-position: center -120px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button-agendaDay.fc-state-active {
|
||||
.calendarmain #calendar .fc-left .fc-agendaDay-button.fc-state-active {
|
||||
background-position: center -160px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button-agendaWeek {
|
||||
.calendarmain #calendar .fc-left .fc-agendaWeek-button {
|
||||
background-position: center -200px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button-agendaWeek.fc-state-active {
|
||||
.calendarmain #calendar .fc-left .fc-agendaWeek-button.fc-state-active {
|
||||
background-position: center -240px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button-month {
|
||||
.calendarmain #calendar .fc-left .fc-month-button {
|
||||
background-position: center -280px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button-month.fc-state-active {
|
||||
.calendarmain #calendar .fc-left .fc-month-button.fc-state-active {
|
||||
background-position: center -320px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button-table {
|
||||
.calendarmain #calendar .fc-left .fc-list-button {
|
||||
background-position: center -360px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-left .fc-button-table.fc-state-active {
|
||||
.calendarmain #calendar .fc-left .fc-list-button.fc-state-active {
|
||||
background-position: center -400px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-right {
|
||||
padding-right: 252px;
|
||||
.calendarmain #calendar .fc-header-toolbar .fc-right {
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-toolbar .fc-center {
|
||||
line-height: 2.5em;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-toolbar .fc-center h2 {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-header-title {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.calendarmain #calendar .fc-toolbar.fc-header-toolbar {
|
||||
margin-bottom: 7px;
|
||||
margin-right: 250px;
|
||||
}
|
||||
|
||||
.fc-event {
|
||||
font-size: 1em !important;
|
||||
}
|
||||
|
||||
.fc-event-hori.fc-type-freebusy,
|
||||
.fc-event-vert.fc-type-freebusy {
|
||||
.fc-event.fc-type-freebusy,
|
||||
.fc-event.fc-type-freebusy {
|
||||
opacity: 0.60;
|
||||
/*
|
||||
color: #fff !important;
|
||||
background: rgba(80,80,80,0.85) !important;
|
||||
background: -moz-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.9) 100%) !important;
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(80,80,80,0.85)), color-stop(100%,rgba(48,48,48,0.9))) !important;
|
||||
background: -webkit-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important;
|
||||
background: -o-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important;
|
||||
background: -ms-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important;
|
||||
background: linear-gradient(to bottom, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important;
|
||||
border-color: #444 !important;
|
||||
cursor: default !important;
|
||||
*/
|
||||
-moz-box-shadow: inset 0px 1px 0 0px #888;
|
||||
-webkit-box-shadow: inset 0px 1px 0 0px #888;
|
||||
-o-box-shadow: inset 0px 1px 0 0px #888;
|
||||
box-shadow: inset 0px 1px 0 0px #888;
|
||||
}
|
||||
|
||||
|
@ -1856,94 +1797,94 @@ a.dropdown-link:after {
|
|||
color: #999;
|
||||
}
|
||||
|
||||
.fc-event-hori.fc-type-freebusy .fc-event-skin,
|
||||
.fc-event-hori.fc-type-freebusy .fc-event-inner,
|
||||
.fc-event-vert.fc-type-freebusy .fc-event-skin,
|
||||
.fc-event-vert.fc-type-freebusy .fc-event-inner {
|
||||
/*
|
||||
background-color: transparent !important;
|
||||
border-color: #444 !important;
|
||||
color: #fff !important;
|
||||
text-shadow: 0 1px 1px #000;
|
||||
*/
|
||||
}
|
||||
|
||||
.fc-event-hori.fc-type-freebusy .fc-event-title,
|
||||
.fc-event-vert.fc-type-freebusy .fc-event-title {
|
||||
.fc-event.fc-type-freebusy .fc-title,
|
||||
.fc-event.fc-type-freebusy .fc-title {
|
||||
position: absolute;
|
||||
top: -5000px;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-invitation-needs-action,
|
||||
.fc-event-hori.fc-invitation-needs-action {
|
||||
.fc-event.fc-invitation-needs-action,
|
||||
.fc-event.fc-invitation-needs-action {
|
||||
border: 1px dashed #5757c7 !important;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-invitation-tentative,
|
||||
.fc-event-hori.fc-invitation-tentative {
|
||||
.fc-event.fc-invitation-tentative,
|
||||
.fc-event.fc-invitation-tentative {
|
||||
border: 1px dashed #eb8900 !important;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-invitation-declined,
|
||||
.fc-event-hori.fc-invitation-declined {
|
||||
.fc-event.fc-invitation-declined,
|
||||
.fc-event.fc-invitation-declined {
|
||||
border: 1px dashed #c00 !important;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-event-ns-other.fc-invitation-declined,
|
||||
.fc-event-hori.fc-event-ns-other.fc-invitation-declined {
|
||||
.fc-event.fc-event-ns-other.fc-invitation-declined,
|
||||
.fc-event.fc-event-ns-other.fc-invitation-declined {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.fc-event-ns-other.fc-invitation-declined .fc-event-title {
|
||||
.fc-event-ns-other.fc-invitation-declined .fc-title {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-invitation-tentative .fc-event-head,
|
||||
.fc-event-vert.fc-invitation-declined .fc-event-head,
|
||||
.fc-event-vert.fc-invitation-needs-action .fc-event-head {
|
||||
/* background-color: transparent !important; */
|
||||
.fc-event .fc-bg {
|
||||
opacity: .15;
|
||||
margin-top: 14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-invitation-tentative .fc-event-bg {
|
||||
.fc-event.fc-invitation-tentative .fc-bg {
|
||||
background: url(data:image/gif;base64,R0lGODlhCAAIAPABAOuJAP///yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff;
|
||||
opacity: .25;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-invitation-needs-action .fc-event-bg {
|
||||
.fc-event.fc-invitation-needs-action .fc-bg {
|
||||
background: url(data:image/gif;base64,R0lGODlhCAAIAPABAFdXx////yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff;
|
||||
opacity: .25;
|
||||
}
|
||||
|
||||
.fc-event-vert.fc-invitation-declined .fc-event-bg {
|
||||
.fc-event.fc-invitation-declined .fc-bg {
|
||||
background: url(data:image/gif;base64,R0lGODlhCAAIAPABAMwAAP///yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff;
|
||||
opacity: .25;
|
||||
}
|
||||
|
||||
.fc-view-table tr.fc-invitation-tentative td,
|
||||
.fc-view-table tr.fc-invitation-declined td,
|
||||
.fc-view-table tr.fc-invitation-needs-action td {
|
||||
.fc-list-view {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.fc-title,
|
||||
.fc-list-item-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.fc-list-table tr.fc-invitation-tentative td,
|
||||
.fc-list-table tr.fc-invitation-declined td,
|
||||
.fc-list-table tr.fc-invitation-needs-action td {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.fc-view-table tr.fc-invitation-tentative td.fc-event-title,
|
||||
.fc-view-table tr.fc-invitation-declined td.fc-event-title,
|
||||
.fc-view-table tr.fc-invitation-needs-action td.fc-event-title {
|
||||
.fc-list-table tr.fc-invitation-tentative .fc-event-dot,
|
||||
.fc-list-table tr.fc-invitation-declined .fc-event-dot,
|
||||
.fc-list-table tr.fc-invitation-needs-action .fc-event-dot {
|
||||
background-color: #aaa;
|
||||
}
|
||||
|
||||
.fc-list-table tr.fc-invitation-tentative td.fc-list-item-title,
|
||||
.fc-list-table tr.fc-invitation-declined td.fc-list-item-title,
|
||||
.fc-list-table tr.fc-invitation-needs-action td.fc-list-item-title {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
#quickview-calendar .fc-view-table tr.fc-invitation-tentative td,
|
||||
#quickview-calendar .fc-view-table tr.fc-invitation-declined td,
|
||||
#quickview-calendar .fc-view-table tr.fc-invitation-needs-action td {
|
||||
#quickview-calendar .fc-list-table tr.fc-invitation-tentative td,
|
||||
#quickview-calendar .fc-list-table tr.fc-invitation-declined td,
|
||||
#quickview-calendar .fc-list-table tr.fc-invitation-needs-action td {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.calendarmain .fc-event:focus {
|
||||
outline: 1px solid rgba(71,135,177, 0.4);
|
||||
-webkit-box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6);
|
||||
-moz-box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6);
|
||||
-o-box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6);
|
||||
box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6);
|
||||
}
|
||||
.fc-event-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.fc-needs-action,
|
||||
.fc-declined,
|
||||
|
@ -1951,40 +1892,40 @@ a.dropdown-link:after {
|
|||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.cal-event-status-cancelled .fc-event-title {
|
||||
.cal-event-status-cancelled .fc-title {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.fc-event-hori .fc-event-title {
|
||||
.fc-event-hori .fc-title {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.fc-event-hori .fc-event-time {
|
||||
.fc-event-hori .fc-time {
|
||||
white-space: nowrap;
|
||||
font-weight: normal !important;
|
||||
font-size: 10px;
|
||||
padding-right: 0.6em;
|
||||
}
|
||||
|
||||
.fc-grid .fc-event-time {
|
||||
.fc-grid .fc-time {
|
||||
font-weight: normal !important;
|
||||
padding-right: 0.3em;
|
||||
}
|
||||
|
||||
.calendarmain .fc-event-vert .fc-event-inner {
|
||||
.calendarmain .fc-event .fc-inner {
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.fc-event-cateories {
|
||||
.fc-event-categories {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.fc-event-location {
|
||||
.fc-event-location {
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
.fc-more-link {
|
||||
.fc-more {
|
||||
color: #999;
|
||||
padding-top: 1px;
|
||||
cursor: pointer;
|
||||
|
@ -1998,13 +1939,13 @@ div.fc-event-location {
|
|||
background-color: rgba(198,198,198, 0.08);
|
||||
}
|
||||
|
||||
.calendarmain .fc-state-highlight {
|
||||
.calendarmain .fc-unthemed td.fc-day.fc-today {
|
||||
background-color: rgba(233,198,14, 0.12);
|
||||
}
|
||||
|
||||
.fc-widget-header,
|
||||
.fc-widget-content {
|
||||
border-color: #bbd3da !important;
|
||||
border-color: #c3c3c3 !important;
|
||||
}
|
||||
|
||||
.fc-widget-header .fc-agenda-divider-inner {
|
||||
|
@ -2017,6 +1958,11 @@ div.fc-event-location {
|
|||
text-shadow: 0px 1px 1px #fff;
|
||||
}
|
||||
|
||||
.fc-popover .fc-header .fc-title,
|
||||
.fc-list-heading .fc-widget-header {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.fc-view thead th.fc-widget-header {
|
||||
padding: 8px 0;
|
||||
color: #69939e;
|
||||
|
@ -2049,25 +1995,34 @@ div.fc-event-location {
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
.calendarmain .fc-view-table td.fc-list-header {
|
||||
.fc-list-table td.fc-list-header {
|
||||
color: #004458;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.calendarmain .fc-view-table tr.fc-event td {
|
||||
border-color: #bbd3da;
|
||||
.fc-list-table tr.fc-list-item {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.fc-list-table tr.fc-list-item:hover td {
|
||||
background: transparent;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fc-list-table tr.fc-list-item td {
|
||||
border-color: #c3c3c3;
|
||||
padding: 6px 8px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.calendarmain .fc-view-table tr.fc-event td.fc-event-handle {
|
||||
.fc-list-table tr.fc-list-item td.fc-event-handle {
|
||||
padding: 6px 0 2px 7px;
|
||||
width: 12px;
|
||||
}
|
||||
|
||||
.calendarmain .fc-view-table .fc-event-handle .fc-event-skin {
|
||||
.fc-list-table .fc-event-handle .fc-event-skin {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
|
@ -2077,7 +2032,7 @@ div.fc-event-location {
|
|||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.calendarmain .fc-view-table .fc-event-handle .fc-event-inner {
|
||||
.fc-list-table .fc-event-handle .fc-event-inner {
|
||||
display: inline-block;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
|
@ -2088,34 +2043,44 @@ div.fc-event-location {
|
|||
border: 1px solid rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.calendarmain .fc-view-table col.fc-event-location {
|
||||
.calendarmain .fc-list-table col.fc-event-location {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.fc-view-table table.fc-list-smart {
|
||||
/* table-layout: auto; */
|
||||
.fc-event-dot {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fc-listappend {
|
||||
text-align: center;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.fc-listappend .message {
|
||||
padding: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
.fc-list-empty {
|
||||
font-size: 150%;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.fc-listappend .formlinks a {
|
||||
font-size: 12px;
|
||||
padding: 0 0.3em;
|
||||
background: unset !important;
|
||||
}
|
||||
|
||||
.fc-event-temp {
|
||||
opacity: 0.4;
|
||||
filter: alpha(opacity=40); /* IE8 */
|
||||
}
|
||||
|
||||
.fc-axis {
|
||||
width: 35px !important;
|
||||
padding: 0 3px !important;
|
||||
}
|
||||
|
||||
.fc .fc-week-number {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fc-month-view .fc-week-number {
|
||||
width: 20px !important;
|
||||
padding: 2px 0;
|
||||
}
|
||||
|
||||
.fc-time-grid .fc-now-indicator {
|
||||
border: 1px solid #3ec400;
|
||||
}
|
||||
|
||||
.fc-list-empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Settings section */
|
||||
|
@ -2280,6 +2245,11 @@ div.calendar-invitebox .calendar-agenda-preview .event-row.no-event {
|
|||
font-style: italic;
|
||||
}
|
||||
|
||||
div.calendar-invitebox .calendar-agenda-preview .event-row.fc-invitation-needs-action {
|
||||
font-style: italic;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
div.calendar-invitebox .calendar-agenda-preview .event-date {
|
||||
display: inline-block;
|
||||
min-width: 8em;
|
||||
|
|
Before Width: | Height: | Size: 746 B |
|
@ -79,6 +79,11 @@ body, td, th, div, p, h3, select, input, textarea {
|
|||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
#calendarlist li div a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#calendarlist input,
|
||||
#calendarlist .handle {
|
||||
display: none;
|
||||
|
@ -101,7 +106,7 @@ body, td, th, div, p, h3, select, input, textarea {
|
|||
|
||||
@media print {
|
||||
.noprint,
|
||||
.fc-header-right span {
|
||||
.fc-right {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
@ -116,33 +121,20 @@ body, td, th, div, p, h3, select, input, textarea {
|
|||
overflow: visible;
|
||||
}
|
||||
|
||||
.fc-event-skin,
|
||||
.fc-event-inner .fc-event-skin {
|
||||
.fc-unthemed td.fc-day.fc-today {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
a.fc-event,
|
||||
a.fc-event:hover {
|
||||
color: black;
|
||||
background-color: #fff !important;
|
||||
}
|
||||
|
||||
.fc-event-title {
|
||||
.fc-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.fc-event-hori .fc-event-title {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.fc-event-hori .fc-event-time {
|
||||
white-space: nowrap;
|
||||
font-weight: normal !important;
|
||||
font-size: 10px;
|
||||
padding-right: 0.6em;
|
||||
}
|
||||
|
||||
.fc-grid .fc-event-time {
|
||||
font-weight: normal !important;
|
||||
padding-right: 0.3em;
|
||||
}
|
||||
|
||||
.fc-event-cateories {
|
||||
font-style: italic;
|
||||
}
|
||||
|
@ -155,6 +147,13 @@ body, td, th, div, p, h3, select, input, textarea {
|
|||
height: 1.4em;
|
||||
}
|
||||
|
||||
.fc-axis,
|
||||
.fc-week-number,
|
||||
.fc-day-number,
|
||||
.fc-view thead th.fc-widget-header {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.fc-widget-header,
|
||||
.fc-mon, .fc-tue, .fc-wed, .fc-thu, .fc-fri {
|
||||
background-color: #fff;
|
||||
|
@ -164,66 +163,34 @@ body, td, th, div, p, h3, select, input, textarea {
|
|||
border-color: #ccc;
|
||||
}
|
||||
|
||||
.fc-icon-alarms,
|
||||
.fc-icon-recurring {
|
||||
display: inline-block;
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
background: url('images/eventicons.gif') 0 0 no-repeat;
|
||||
margin-left: 3px;
|
||||
line-height: 10px;
|
||||
.fc-list-table tr.fc-list-item td,
|
||||
.fc-list-view {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.fc-icon-alarms {
|
||||
background-position: 0 -13px;
|
||||
.fc-list-table tr:first-child td {
|
||||
border-top-width: 1px;
|
||||
}
|
||||
|
||||
.fc-view-list, .fc-view-table {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.fc-view-list div.fc-list-header,
|
||||
.fc-view-table td.fc-list-header {
|
||||
padding: 0.3em;
|
||||
background: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
color: #333;
|
||||
border-color: #333;
|
||||
border-style: solid;
|
||||
border-width: 1px 0;
|
||||
filter: none;
|
||||
}
|
||||
|
||||
.fc-list-section .fc-event {
|
||||
cursor: auto;
|
||||
}
|
||||
|
||||
.fc-view-table tr.fc-event td,
|
||||
.fc-view-table tr.fc-event td.fc-event-handle {
|
||||
border-color: #999;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.fc-view-table tr.fc-last td {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.fc-view-table tr.fc-event .fc-event-description {
|
||||
padding-left: 2em;
|
||||
padding-top: 0em;
|
||||
}
|
||||
|
||||
.fc-event-vert .fc-event-description {
|
||||
.fc-event-description {
|
||||
font-size: 90%;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.fc-view-month .fc-event-hori .fc-event-inner {
|
||||
background: #fff !important;
|
||||
}
|
||||
|
||||
.fc-view-table col.fc-event-location {
|
||||
col.fc-event-location {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.fc-event-row-secondary td {
|
||||
border: 0;
|
||||
padding-top: 0 !important;
|
||||
}
|
||||
|
||||
.fc-scroller {
|
||||
overflow: visible !important;
|
||||
height: auto !important;
|
||||
}
|
||||
.fc-head .fc-row,
|
||||
.fc-day-grid .fc-row {
|
||||
margin-right: 0 !important;
|
||||
border-right-width: 0 !important;
|
||||
}
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
/* CSS hacks for IE 7 */
|
||||
|
||||
#calendar {
|
||||
top: 5em;
|
||||
}
|
||||
|
||||
.calwidth {
|
||||
width: 172mm;
|
||||
}
|
||||
|
||||
.fc-header-title h2 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#calendarlist li {
|
||||
float: none;
|
||||
padding: 0;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
@media print {
|
||||
#calendar {
|
||||
top: 0;
|
||||
}
|
||||
}
|
|
@ -1,64 +0,0 @@
|
|||
<roundcube:object name="doctype" value="html5" />
|
||||
<html>
|
||||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
<roundcube:include file="/includes/links.html" />
|
||||
</head>
|
||||
<body class="extwin calendar attachmentwin">
|
||||
|
||||
<div id="header">
|
||||
<div id="topline" role="banner" aria-labelledby="aria-label-topnav">
|
||||
<div class="topleft">
|
||||
<roundcube:container name="topline-left" id="topline-left" />
|
||||
</div>
|
||||
<roundcube:container name="topline-center" id="topline-center" />
|
||||
<div class="topright">
|
||||
<roundcube:container name="topline-right" id="topline-right" />
|
||||
<roundcube:button name="close" type="link" label="close" class="closelink" onclick="self.close()" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="mainscreen">
|
||||
|
||||
<h1 class="voice"><roundcube:label name="attachment" />: <roundcube:var name="env:filename" /></h1>
|
||||
|
||||
<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
|
||||
<div id="attachmenttoolbar" class="toolbar fullwidth" role="toolbar" aria-labelledby="aria-label-toolbar">
|
||||
<roundcube:button command="download-attachment" type="link" class="button download disabled" classAct="button download" classSel="button download pressed" label="download" title="download" />
|
||||
<roundcube:button command="print-attachment" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="print" title="print" />
|
||||
<roundcube:container name="toolbar" id="messagetoolbar" />
|
||||
</div>
|
||||
|
||||
<div id="mainscreencontent">
|
||||
|
||||
<div id="partheader" class="uibox listbox" role="contentinfo" aria-labelledby="aria-label-contentinfo">
|
||||
<h2 class="boxtitle" id="aria-label-contentinfo"><roundcube:label name="properties" /></h2>
|
||||
<div class="scroller">
|
||||
<roundcube:object name="plugin.attachmentcontrols" class="listing" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="attachmentcontainer" class="uibox" role="main" aria-labelledby="aria-label-messagepart">
|
||||
<h2 id="aria-label-messagepart" class="voice"><roundcube:label name="arialabelattachmentpreview" /></h2>
|
||||
<div class="iframebox">
|
||||
<roundcube:object name="plugin.attachmentframe" id="attachmentframe" frameborder="0" title="arialabelattachmentpreview" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(function() {
|
||||
if (window.rcube_splitter) {
|
||||
new rcube_splitter({ id:'mailpartsplitterv', p1:'#partheader', p2:'#attachmentcontainer',
|
||||
orientation:'v', relative:true, start:226, min:150, size:12}).init();
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -57,7 +57,7 @@
|
|||
|
||||
<h2 id="aria-label-calendarview" class="voice"><roundcube:label name="calendar.arialabelcalendarview" /></h2>
|
||||
<div id="calendar" role="main" aria-labelledby="aria-label-calendarview">
|
||||
<roundcube:object name="plugin.angenda_options" class="boxfooter" id="agendaoptions" />
|
||||
<roundcube:object name="plugin.agenda_options" class="boxfooter" id="agendaoptions" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -158,7 +158,7 @@
|
|||
<div class="event-text"></div>
|
||||
</div>
|
||||
|
||||
<roundcube:object name="plugin.event_rsvp_buttons" id="event-rsvp" class="event-dialog-message" style="display:none" />
|
||||
<roundcube:object name="plugin.event_rsvp_buttons" id="event-rsvp" class="dialog-message" style="display:none" />
|
||||
</div>
|
||||
|
||||
<div id="eventoptionsmenu" class="popupmenu" aria-hidden="true">
|
||||
|
@ -301,7 +301,7 @@
|
|||
<div class="schedule-options">
|
||||
|
||||
<div class="schedule-buttons">
|
||||
<button id="shedule-freebusy-prev" title="<roundcube:label name='previouspage' />">◄</button><button id="shedule-freebusy-next" title="<roundcube:label name='nextpage' />">►</button>
|
||||
<button type="button" id="schedule-freebusy-prev" title="<roundcube:label name='previouspage' />">◄</button><button type="button" id="schedule-freebusy-next" title="<roundcube:label name='nextpage' />">►</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -319,8 +319,8 @@
|
|||
</div>
|
||||
<div style="float:left">
|
||||
<div class="schedule-find-buttons">
|
||||
<button id="shedule-find-prev">◄ <roundcube:label name="calendar.prevslot" /></button>
|
||||
<button id="shedule-find-next"><roundcube:label name="calendar.nextslot" /> ►</button>
|
||||
<button type="button" id="schedule-find-prev">◄ <roundcube:label name="calendar.prevslot" /></button>
|
||||
<button type="button" id="schedule-find-next"><roundcube:label name="calendar.nextslot" /> ►</button>
|
||||
</div>
|
||||
<div class="schedule-options">
|
||||
<label><input type="checkbox" id="schedule-freebusy-workinghours" value="1" /><roundcube:label name="calendar.onlyworkinghours" /></label>
|
||||
|
|
|
@ -3,85 +3,10 @@
|
|||
<head>
|
||||
<title><roundcube:object name="pagetitle" /></title>
|
||||
<roundcube:include file="/includes/links.html" />
|
||||
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/this/iehacks.css" /><![endif]-->
|
||||
</head>
|
||||
<body class="calendarmain dialog">
|
||||
<body class="iframe eventdialog noscroll">
|
||||
|
||||
<div id="mainscreen">
|
||||
<div id="calendarsidebar">
|
||||
<h2 id="aria-label-minical" class="voice"><roundcube:label name="calendar.arialabelminical" /></h2>
|
||||
<div id="datepicker" class="uibox" role="presentation"></div>
|
||||
|
||||
<div id="calendars" class="uibox listbox" style="visibility:hidden" role="navigation" aria-labelledby="aria-label-calendarlist">
|
||||
<h2 class="boxtitle" id="aria-label-calendarlist"><roundcube:label name="calendar.calendars" />
|
||||
<a href="#calendars" class="iconbutton search" title="<roundcube:label name='calendar.findcalendars' />" tabindex="0"><roundcube:label name='calendar.findcalendars' /></a>
|
||||
</h2>
|
||||
<div class="listsearchbox">
|
||||
<div class="searchbox" role="search" aria-labelledby="aria-label-calsearchform" aria-controls="calendarslist">
|
||||
<h3 id="aria-label-calsearchform" class="voice"><roundcube:label name="calendar.arialabelcalsearchform" /></h3>
|
||||
<label for="calendarlistsearch" class="voice"><roundcube:label name="calendar.searchterms" /></label>
|
||||
<input type="text" name="q" id="calendarlistsearch" placeholder="<roundcube:label name='calendar.findcalendars' />" />
|
||||
<a class="iconbutton searchicon"></a>
|
||||
<roundcube:button command="reset-listsearch" id="calendarlistsearch-reset" class="iconbutton reset" title="resetsearch" label="resetsearch" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="scroller">
|
||||
<roundcube:object name="plugin.calendar_list" id="calendarslist" class="treelist listing" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 id="aria-label-calendarview" class="voice"><roundcube:label name="calendar.arialabelcalendarview" /></h2>
|
||||
<div id="calendar" role="main" aria-labelledby="aria-label-calendarview">
|
||||
<roundcube:object name="plugin.angenda_options" class="boxfooter" id="agendaoptions" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="timezonedisplay"><roundcube:var name="env:timezone" /></div>
|
||||
|
||||
<roundcube:include file="/templates/eventshow.html" />
|
||||
<roundcube:include file="/templates/eventedit.html" />
|
||||
|
||||
<roundcube:object name="plugin.calendar_css" />
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
// UI startup
|
||||
var UI = new rcube_mail_ui();
|
||||
|
||||
$(document).ready(function(e) {
|
||||
UI.init();
|
||||
|
||||
// animation to unfold list search box
|
||||
$('#calendars .boxtitle a.search').click(function(e){
|
||||
var title = $('#calendars .boxtitle'),
|
||||
box = $('#calendars .listsearchbox'),
|
||||
dir = box.is(':visible') ? -1 : 1;
|
||||
|
||||
box.slideToggle({
|
||||
duration: 160,
|
||||
progress: function(animation, progress) {
|
||||
if (dir < 0) progress = 1 - progress;
|
||||
$('#calendars .scroller').css('top', (title.outerHeight() + 34 * progress) + 'px');
|
||||
},
|
||||
complete: function() {
|
||||
box.toggleClass('expanded');
|
||||
if (box.is(':visible')) {
|
||||
box.find('input[type=text]').focus();
|
||||
}
|
||||
else {
|
||||
$('#calendarlistsearch-reset').click();
|
||||
}
|
||||
// TODO: save state in localStorage
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div id="eventedit" class="uidialog uidialog-tabbed" aria-hidden="true">
|
||||
<div id="eventedit" class="<roundcube:exp expression="env:framed ? '' : 'uidialog '">uidialog-tabbed" aria-hidden="true">
|
||||
<form id="eventtabs" action="#" method="post" enctype="multipart/form-data">
|
||||
<ul>
|
||||
<li><a href="#event-panel-summary"><roundcube:label name="calendar.tabsummary" /></a></li><li id="edit-tab-recurrence"><a href="#event-panel-recurrence"><roundcube:label name="calendar.tabrecurrence" /></a></li><li id="edit-tab-attendees"><a href="#event-panel-attendees"><roundcube:label name="calendar.tabattendees" /></a></li><li id="edit-tab-resources"><a href="#event-panel-resources"><roundcube:label name="calendar.tabresources" /></a></li><li id="edit-tab-attachments"><a href="#event-panel-attachments"><roundcube:label name="calendar.tabattachments" /></a></li>
|
||||
|
@ -119,16 +119,18 @@
|
|||
<div id="edit-attachments">
|
||||
<roundcube:object name="plugin.attachments_list" id="attachmentlist" class="attachmentslist" />
|
||||
</div>
|
||||
<div id="edit-attachments-form" role="region" aria-labelledby="aria-label-attachmentuploadform">
|
||||
<div id="edit-attachments-form" role="region" aria-labelledby="aria-label-attachmentuploadform" style="text-align:center">
|
||||
<h3 id="aria-label-attachmentuploadform" class="voice"><roundcube:label name="arialabelattachmentuploadform" /></h3>
|
||||
<roundcube:object name="plugin.attachments_form" id="calendar-attachment-form" attachmentFieldSize="30" />
|
||||
<roundcube:object name="plugin.attachments_form" id="calendar-attachment-form" mode="hint" />
|
||||
<a class="button" tabindex="1" href="#" onclick="rcmail.upload_input('edit-attachment-form')"><roundcube:label name="addattachment" /></a>
|
||||
</div>
|
||||
<roundcube:object name="plugin.filedroparea" id="event-panel-attachments" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<roundcube:object name="plugin.edit_recurrence_sync" id="edit-recurrence-syncstart" class="event-dialog-message" style="display:none" />
|
||||
<roundcube:object name="plugin.edit_attendees_notify" id="edit-attendees-notify" class="event-dialog-message" style="display:none" />
|
||||
<roundcube:object name="plugin.edit_recurring_warning" class="event-dialog-message edit-recurring-warning" style="display:none" />
|
||||
<div id="edit-localchanges-warning" class="event-dialog-message" style="display:none"><roundcube:label name="calendar.localchangeswarning" /></div>
|
||||
<roundcube:object name="plugin.edit_recurrence_sync" id="edit-recurrence-syncstart" class="dialog-message" style="display:none" />
|
||||
<roundcube:object name="plugin.edit_attendees_notify" id="edit-attendees-notify" class="dialog-message" style="display:none" />
|
||||
<roundcube:object name="plugin.edit_recurring_warning" class="dialog-message edit-recurring-warning" style="display:none" />
|
||||
<roundcube:object name="plugin.attachments_form" id="edit-attachment-form" mode="smart" />
|
||||
<div id="edit-localchanges-warning" class="dialog-message" style="display:none"><roundcube:label name="calendar.localchangeswarning" /></div>
|
||||
</div>
|