Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F1821710
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Size
19 KB
Subscribers
None
View Options
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,68 +1,69 @@
<?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.';
$lang['costs'] = 'Kosten';
$lang['more_info'] = 'mehr...';
$lang['edit'] = 'Bearbeiten';
$lang['add_new'] = 'Neu';
+$lang['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,68 +1,69 @@
<?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.';
$lang['costs'] = 'Kosten';
$lang['more_info'] = 'mehr...';
$lang['edit'] = 'Bearbeiten';
$lang['add_new'] = 'Neu';
+$lang['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,68 +1,69 @@
<?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['costs'] = 'Costs';
$lang['more_info'] = 'more...';
$lang['edit'] = 'Edit';
$lang['add_new'] = 'New Event';
+$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,277 +1,293 @@
<?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'
);
foreach($options as $option)
{
list($key, $val) = explode('=', $option);
$key = strtolower(trim($key));
$val = trim($val);
switch($key)
{
case 'id':
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
Details
Attached
Mime Type
text/x-diff
Expires
Tue, Dec 24, 8:53 AM (19 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
535115
Default Alt Text
(19 KB)
Attached To
rDAVCAL DokuWiki DAVCal PlugIn
Event Timeline
Log In to Comment