Page MenuHomePhabricator

No OneTemporary

diff --git a/lang/de-informal/lang.php b/lang/de-informal/lang.php
--- a/lang/de-informal/lang.php
+++ b/lang/de-informal/lang.php
@@ -1,64 +1,65 @@
<?php
/**
* German language file
*
* @author Andreas Böhler <dev@aboehler.at>
*/
$lang['created_by_davcal'] = 'Erstellt von DAVCal für DokuWiki';
$lang['unknown_error'] = 'Unbekannter Fehler';
$lang['event_added'] = 'Eintrag hinzugefügt';
$lang['event_edited'] = 'Eintrag bearbeitet';
$lang['event_deleted'] = 'Eintrag entfernt';
$lang['no_permission'] = 'Du hast nicht die erforderlichen Rechte, um den Eintrag zu bearbeiten';
$lang['settings'] = 'Einstellungen/Sync';
$lang['settings_saved'] = 'Einstellungen erfolgreich gespeichert';
$lang['error_saving'] = 'Fehler beim Speichern der Einstellungen.';
$lang['local_time'] = 'Lokale Zeit (Browser-basierend)';
$lang['from'] = 'Von';
$lang['to'] = 'Bis';
$lang['at'] = 'Am';
$lang['description'] = 'Beschreibung';
$lang['title'] = 'Titel';
$lang['error_timezone_not_in_list'] = 'Die angegebene Zeitzone wird von PHP nicht unterstützt';
$lang['error_option_error'] = 'In den Optionen wurden ein Fehler festgestellt!';
$lang['this_calendar_uses_timezone'] = 'Dieser Kalender wird in der Zeitzone %s angezeigt.';
+$lagn['location'] = 'Ort';
$lang['js']['create_new_event'] = 'Neuen Eintrag anlegen';
$lang['js']['cancel'] = 'Abbrechen';
$lang['js']['create'] = 'Anlegen';
$lang['js']['save'] = 'Speichern';
$lang['js']['settings'] = 'Einstellungen';
$lang['js']['edit'] = 'Bearbeiten';
$lang['js']['delete'] = 'Löschen';
$lang['js']['edit_event'] = 'Eintrag bearbeiten';
$lang['js']['allday'] = 'Ganzer Tag';
$lang['js']['title'] = 'Titel';
$lang['js']['location'] = 'Ort';
$lang['js']['from'] = 'Von';
$lang['js']['to'] = 'Bis';
$lang['js']['yes'] = 'Ja';
$lang['js']['confirmation'] = 'Bestätigung';
$lang['js']['ok'] = 'OK';
$lang['js']['info'] = 'Info';
$lang['js']['really_delete_this_event'] = 'Diesen Eintrag wirklich löschen?';
$lang['js']['timezone'] = 'Zeitzone';
$lang['js']['weeknumbers'] = 'Wochennummern';
$lang['js']['use_lang_tz'] = 'Zeitzone der Spracheinstellung verwenden';
$lang['js']['only_workweek'] = 'Zeige nur die Arbeitswoche';
$lang['js']['sync_url'] = 'CalDAV URL';
$lang['js']['error_retrieving_data'] = 'Beim Abfragen der Daten vom Kalenderserver ist ein Fehler aufgetreten.';
$lang['js']['start_date_invalid'] = 'Beginnzeit/-datum ist ungültig';
$lang['js']['end_date_invalid'] = 'Endzeit/-datum ist ungültig';
$lang['js']['end_date_before_start_date'] = 'Endzeit/-datum liegt vor Startzeit/-datum';
$lang['js']['end_date_is_same_as_start_date'] = 'Endzeit/-datum ist gleich wie Startzeit/-datum';
$lang['js']['description'] = 'Beschreibung';
$lang['js']['private_url'] = 'Private URL';
$lang['js']['recurring_cant_edit'] = 'Das Bearbeiten wiederkehrender Einträge wird derzeit nicht unterstützt';
$lang['js']['no_permission'] = 'Du hast nicht die erforderlichen Rechte, diesen Kalender zu bearbeiten';
$lang['js']['calendar'] = 'Kalender';
$lang['js']['start_monday'] = 'Die Woche beginnt am Montag';
$lang['js']['nothing_to_show'] = 'Nichts anzuzeigen';
$lang['js']['add_attachment'] = 'Link hinzufügen';
$lang['js']['attachments'] = 'Angehängte Links';
$lang['js']['language_specific'] = 'Sprachabhängig';
$lang['js']['sync_ical'] = 'iCal Sync URL';
$lang['js']['timeformat'] = 'Zeitformat';
diff --git a/lang/de/lang.php b/lang/de/lang.php
--- a/lang/de/lang.php
+++ b/lang/de/lang.php
@@ -1,64 +1,65 @@
<?php
/**
* German language file for DAVCal
*
* @author Andreas Böhler <dev@aboehler.at>
*/
$lang['created_by_davcal'] = 'Erstellt von DAVCal für DokuWiki';
$lang['unknown_error'] = 'Unbekannter Fehler';
$lang['event_added'] = 'Eintrag hinzugefügt';
$lang['event_edited'] = 'Eintrag bearbeitet';
$lang['event_deleted'] = 'Eintrag entfernt';
$lang['no_permission'] = 'Sie haben nicht die erforderlichen Rechte, um den Eintrag zu bearbeiten';
$lang['settings'] = 'Einstellungen/Sync';
$lang['settings_saved'] = 'Einstellungen erfolgreich gespeichert';
$lang['error_saving'] = 'Fehler beim Speichern der Einstellungen.';
$lang['local_time'] = 'Lokale Zeit (Browser-basierend)';
$lang['from'] = 'Von';
$lang['to'] = 'Bis';
$lang['at'] = 'Am';
$lang['description'] = 'Beschreibung';
$lang['title'] = 'Titel';
$lang['error_timezone_not_in_list'] = 'Die angegebene Zeitzone wird von PHP nicht unterstützt';
$lang['error_option_error'] = 'In den Optionen wurden ein Fehler festgestellt!';
$lang['this_calendar_uses_timezone'] = 'Dieser Kalender wird in der Zeitzone %s angezeigt.';
+$lagn['location'] = 'Ort';
$lang['js']['create_new_event'] = 'Neuen Eintrag anlegen';
$lang['js']['cancel'] = 'Abbrechen';
$lang['js']['create'] = 'Anlegen';
$lang['js']['save'] = 'Speichern';
$lang['js']['settings'] = 'Einstellungen';
$lang['js']['edit'] = 'Bearbeiten';
$lang['js']['delete'] = 'Löschen';
$lang['js']['edit_event'] = 'Eintrag bearbeiten';
$lang['js']['allday'] = 'Ganzer Tag';
$lang['js']['title'] = 'Titel';
$lang['js']['location'] = 'Ort';
$lang['js']['from'] = 'Von';
$lang['js']['to'] = 'Bis';
$lang['js']['yes'] = 'Ja';
$lang['js']['confirmation'] = 'Bestätigung';
$lang['js']['ok'] = 'OK';
$lang['js']['info'] = 'Info';
$lang['js']['really_delete_this_event'] = 'Diesen Eintrag wirklich löschen?';
$lang['js']['timezone'] = 'Zeitzone';
$lang['js']['weeknumbers'] = 'Wochennummern';
$lang['js']['use_lang_tz'] = 'Zeitzone der Spracheinstellung verwenden';
$lang['js']['only_workweek'] = 'Zeige nur die Arbeitswoche';
$lang['js']['sync_url'] = 'CalDAV URL';
$lang['js']['error_retrieving_data'] = 'Beim Abfragen der Daten vom Kalenderserver ist ein Fehler aufgetreten.';
$lang['js']['start_date_invalid'] = 'Beginnzeit/-datum ist ungültig';
$lang['js']['end_date_invalid'] = 'Endzeit/-datum ist ungültig';
$lang['js']['end_date_before_start_date'] = 'Endzeit/-datum liegt vor Startzeit/-datum';
$lang['js']['end_date_is_same_as_start_date'] = 'Endzeit/-datum ist gleich wie Startzeit/-datum';
$lang['js']['description'] = 'Beschreibung';
$lang['js']['private_url'] = 'Private URL';
$lang['js']['recurring_cant_edit'] = 'Das Bearbeiten wiederkehrender Einträge wird derzeit nicht unterstützt';
$lang['js']['no_permission'] = 'Sie haben nicht die erforderlichen Rechte, diesen Kalender zu bearbeiten';
$lang['js']['calendar'] = 'Kalender';
$lang['js']['start_monday'] = 'Die Woche beginnt am Montag';
$lang['js']['nothing_to_show'] = 'Nichts anzuzeigen';
$lang['js']['add_attachment'] = 'Link hinzufügen';
$lang['js']['attachments'] = 'Angehängte Links';
$lang['js']['language_specific'] = 'Sprachabhängig';
$lang['js']['sync_ical'] = 'iCal Sync URL';
$lang['js']['timeformat'] = 'Zeitformat';
diff --git a/lang/en/lang.php b/lang/en/lang.php
--- a/lang/en/lang.php
+++ b/lang/en/lang.php
@@ -1,64 +1,65 @@
<?php
/**
* English language file for DAVCal
*
* @author Andreas Böhler <dev@aboehler.at>
*/
$lang['created_by_davcal'] = 'Created by DAVCal for DokuWiki';
$lang['unknown_error'] = 'Unknown Error';
$lang['event_added'] = 'Event added';
$lang['event_edited'] = 'Event edited';
$lang['event_deleted'] = 'Event deleted';
$lang['no_permission'] = 'You don\'t have permission to modify this calendar';
$lang['settings'] = 'Settings/Sync';
$lang['settings_saved'] = 'Settings saved successfully';
$lang['error_saving'] = 'Error saving settings.';
$lang['local_time'] = 'Local time (Browser based)';
$lang['from'] = 'From';
$lang['to'] = 'To';
$lang['at'] = 'At';
$lang['description'] = 'Description';
$lang['title'] = 'Title';
$lang['error_timezone_not_in_list'] = 'The desired timezone is not supported by PHP!';
$lang['error_option_error'] = 'You have an error in the option list';
$lang['this_calendar_uses_timezone'] = 'This calendar is shown in the timezone %s.';
+$lang['location'] = 'Location';
$lang['js']['create_new_event'] = 'Create new Event';
$lang['js']['cancel'] = 'Cancel';
$lang['js']['create'] = 'Create';
$lang['js']['save'] = 'Save';
$lang['js']['settings'] = 'Settings';
$lang['js']['edit'] = 'Edit';
$lang['js']['delete'] = 'Delete';
$lang['js']['edit_event'] = 'Edit Event';
$lang['js']['allday'] = 'All Day Event';
$lang['js']['title'] = 'Title';
$lang['js']['location'] = 'Location';
$lang['js']['from'] = 'From';
$lang['js']['to'] = 'To';
$lang['js']['yes'] = 'Yes';
$lang['js']['confirmation'] = 'Confirmation';
$lang['js']['ok'] = 'OK';
$lang['js']['info'] = 'Info';
$lang['js']['really_delete_this_event'] = 'Really delete this event?';
$lang['js']['timezone'] = 'Timezone';
$lang['js']['weeknumbers'] = 'Week Numbers';
$lang['js']['use_lang_tz'] = 'Use Timezone from language setting';
$lang['js']['only_workweek'] = 'Show only Work Week';
$lang['js']['sync_url'] = 'CalDAV URL';
$lang['js']['error_retrieving_data'] = 'There was an error retrieving data from the calendar server.';
$lang['js']['start_date_invalid'] = 'Start date/time is invalid.';
$lang['js']['end_date_invalid'] = 'End date/time is invalid.';
$lang['js']['end_date_before_start_date'] = 'End date/time is before start date/time.';
$lang['js']['end_date_is_same_as_start_date'] = 'End date/time is equal to start date/time.';
$lang['js']['description'] = 'Description';
$lang['js']['private_url'] = 'Private URL';
$lang['js']['recurring_cant_edit'] = 'Editing recurring events is currently not supported';
$lang['js']['no_permission'] = 'You don\'t have permission to modify this calendar';
$lang['js']['calendar'] = 'Calendar';
$lang['js']['start_monday'] = 'Week starts on Monday';
$lang['js']['nothing_to_show'] = 'Nothing to show';
$lang['js']['add_attachment'] = 'Add link';
$lang['js']['attachments'] = 'Attached links';
$lang['js']['language_specific'] = 'Language specific';
$lang['js']['sync_ical'] = 'iCal Sync URL';
$lang['js']['timeformat'] = 'Time Format';
diff --git a/plugin.info.txt b/plugin.info.txt
--- a/plugin.info.txt
+++ b/plugin.info.txt
@@ -1,7 +1,7 @@
base davcal
author Andreas Boehler
email dev@aboehler.at
-date 2019-01-21
+date 2019-01-22
name Calendar PlugIn with CalDAV sharing support
desc Create one calendar per page and share/subscribe via CalDAV
url http://www.dokuwiki.org/plugin:davcal
diff --git a/syntax/table.php b/syntax/table.php
--- a/syntax/table.php
+++ b/syntax/table.php
@@ -1,279 +1,295 @@
<?php
/**
* DokuWiki Plugin DAVCal (Table Syntax Component)
*
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
* @author Andreas Böhler <dev@aboehler.at>
*/
// must be run within Dokuwiki
if(!defined('DOKU_INC')) die();
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'syntax.php');
class syntax_plugin_davcal_table extends DokuWiki_Syntax_Plugin {
protected $hlp = null;
// Load the helper plugin
public function syntax_plugin_davcal_table() {
$this->hlp =& plugin_load('helper', 'davcal');
}
/**
* What kind of syntax are we?
*/
function getType(){
return 'substition';
}
/**
* What about paragraphs?
*/
function getPType(){
return 'normal';
}
/**
* Where to sort in?
*/
function getSort(){
return 165;
}
/**
* Connect pattern to lexer
*/
function connectTo($mode) {
$this->Lexer->addSpecialPattern('\{\{davcaltable>[^}]*\}\}',$mode,'plugin_davcal_table');
}
/**
* Handle the match
*/
function handle($match, $state, $pos, Doku_Handler $handler){
global $ID;
$options = trim(substr($match,14,-2));
$options = explode(',', $options);
$data = array('id' => array(),
'startdate' => 'today',
'numdays' => 30,
'startisend' => false,
'dateformat' => 'Y-m-d H:i',
'alldayformat' => 'Y-m-d',
'onlystart' => false,
+ 'location' => true,
'sort' => 'desc',
'timezone' => 'local'
);
$lastid = $ID;
foreach($options as $option)
{
list($key, $val) = explode('=', $option);
$key = strtolower(trim($key));
$val = trim($val);
switch($key)
{
case 'id':
$lastid = $val;
if(!in_array($val, $data['id']))
$data['id'][$val] = '#3a87ad';
break;
case 'onlystart':
if(($val === 'on') || ($val === 'true'))
$data['onlystart'] = true;
break;
case 'startisend':
if(($val === 'on') || ($val === 'true'))
$data['startisend'] = true;
break;
case 'timezone':
$tzlist = \DateTimeZone::listIdentifiers(DateTimeZone::ALL);
if(in_array($val, $tzlist) || $val === 'no')
$data['timezone'] = $val;
else
msg($this->getLang('error_timezone_not_in_list'), -1);
break;
+ case 'nolocation':
+ $data['location'] = false;
+ break;
default:
$data[$key] = $val;
}
}
// Handle the default case when the user didn't enter a different ID
if(empty($data['id']))
{
$data['id'] = array($ID => '#3a87ad');
}
return $data;
}
private static function sort_events_asc($a, $b)
{
$from1 = new \DateTime($a['start']);
$from2 = new \DateTime($b['start']);
return $from2 < $from1;
}
private static function sort_events_desc($a, $b)
{
$from1 = new \DateTime($a['start']);
$from2 = new \DateTime($b['start']);
return $from1 < $from2;
}
/**
* Create output
*/
function render($format, Doku_Renderer $R, $data) {
if($format == 'metadata')
{
$R->meta['plugin_davcal']['table'] = true;
return true;
}
if(($format != 'xhtml') && ($format != 'odt')) return false;
global $ID;
$events = array();
$from = $data['startdate'];
$toStr = null;
// Handle the various options to 'startDate'
if($from === 'today')
{
$from = new \DateTime();
}
elseif(strpos($from, 'today-') === 0)
{
$days = intval(str_replace('today-', '', $from));
$from = new \DateTime();
$from->sub(new \DateInterval('P'.$days.'D'));
}
elseif(strpos($from, 'today+') === 0)
{
$days = intval(str_replace('today+', '', $from));
$from = new \DateTime();
$from->add(new \DateInterval('P'.$days.'D'));
}
else
{
$from = new \DateTime($from);
}
// Handle the option 'startisend'
if($data['startisend'] === true)
{
if($data['numdays'] > 0)
{
$to = clone $from;
$to->sub(new \DateInterval('P'.$data['numdays'].'D'));
$fromStr = $to->format('Y-m-d');
}
else
{
$fromStr = null;
}
$toStr = $from->format('Y-m-d');
}
else
{
if($data['numdays'] > 0)
{
$to = clone $from;
$to->add(new \DateInterval('P'.$data['numdays'].'D'));
$toStr = $to->format('Y-m-d');
}
else
{
$toStr = null;
}
$fromStr = $from->format('Y-m-d');
}
// Support for timezone
$timezone = $data['timezone'];
// Filter events by user permissions
$userEvents = $this->hlp->filterCalendarPagesByUserPermission($data['id']);
// Fetch the events
foreach($userEvents as $calPage => $color)
{
$events = array_merge($events, $this->hlp->getEventsWithinDateRange($calPage,
$user, $fromStr, $toStr, $timezone));
}
// Sort the events
if($data['sort'] === 'desc')
usort($events, array("syntax_plugin_davcal_table", "sort_events_desc"));
else
usort($events, array("syntax_plugin_davcal_table", "sort_events_asc"));
// Create tabular output
$R->table_open();
$R->tablethead_open();
$R->tableheader_open();
$R->doc .= $data['onlystart'] ? hsc($this->getLang('at')) : hsc($this->getLang('from'));
$R->tableheader_close();
if(!$data['onlystart'])
{
$R->tableheader_open();
$R->doc .= hsc($this->getLang('to'));
$R->tableheader_close();
}
$R->tableheader_open();
$R->doc .= hsc($this->getLang('title'));
$R->tableheader_close();
+ if($data['location'])
+ {
+ $R->tableheader_open();
+ $R->doc .= hsc($this->getLang('location'));
+ $R->tableheader_close();
+ }
$R->tableheader_open();
$R->doc .= hsc($this->getLang('description'));
$R->tableheader_close();
$R->tablethead_close();
foreach($events as $event)
{
$R->tablerow_open();
$R->tablecell_open();
$from = new \DateTime($event['start']);
if($timezone !== 'local')
{
$from->setTimezone(new \DateTimeZone($timezone));
$to->setTimezone(new \DateTimeZone($timezone));
}
if($event['allDay'] === true)
$R->doc .= $from->format($data['alldayformat']);
else
$R->doc .= $from->format($data['dateformat']);
$R->tablecell_close();
if(!$data['onlystart'])
{
$to = new \DateTime($event['end']);
// Fixup all day events, which have one day in excess
if($event['allDay'] === true)
{
$to->sub(new \DateInterval('P1D'));
}
$R->tablecell_open();
if($event['allDay'] === true)
$R->doc .= $to->format($data['alldayformat']);
else
$R->doc .= $to->format($data['dateformat']);
$R->tablecell_close();
}
$R->tablecell_open();
$R->doc .= hsc($event['title']);
$R->tablecell_close();
+ if($data['location'])
+ {
+ $R->tablecell_open();
+ $R->doc .= hsc($event['location']);
+ $R->tablecell_close();
+ }
$R->tablecell_open();
$R->doc .= hsc($event['description']);
$R->tablecell_close();
$R->tablerow_close();
}
$R->table_close();
}
}
// vim:ts=4:sw=4:et:enc=utf-8:

File Metadata

Mime Type
text/x-diff
Expires
Tue, Dec 24, 7:40 AM (23 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
526354
Default Alt Text
(19 KB)

Event Timeline