]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
restored RSS feed and added iCal feed
authorKevin Jardine <kevinjardine@yahoo.com>
Wed, 28 Sep 2011 15:02:51 +0000 (17:02 +0200)
committerKevin Jardine <kevinjardine@yahoo.com>
Wed, 28 Sep 2011 15:02:51 +0000 (17:02 +0200)
images/ics.png [new file with mode: 0644]
languages/en.php
models/model.php
views/ical/event_calendar/show_events.php [new file with mode: 0644]
views/ical/object/event_calendar.php [new file with mode: 0644]
views/ical/page/default.php [new file with mode: 0644]
views/ical/page/layouts/default.php [new file with mode: 0644]
views/rss/event_calendar/show_events.php

diff --git a/images/ics.png b/images/ics.png
new file mode 100644 (file)
index 0000000..311ffa2
Binary files /dev/null and b/images/ics.png differ
index 5aa96adeeec6041b6f2361be0810d6fd46d9cef3..883576b3b8d2c0365f1d5440f46917913bd9d144 100644 (file)
@@ -209,6 +209,8 @@ You can manage calendar requests for this event here:
        'event_calendar:error_event_edit' => "Error: there is no such event or you do not have permission to edit it.",
        'event_calendar:add' => "Add",
                
+       'feed:ical' => "iCal feed for this page",
+               
        /**
         * Event calendar river
         **/
index 4a7da3dd13536f3077099ff855d3da37ce71e4df..dafc10bc96666a73c1daa6a261d87f7aa316fd93 100644 (file)
@@ -1096,6 +1096,8 @@ function event_calendar_send_event_request($event,$user_guid) {
 // pages
 
 function event_calendar_get_page_content_list($page_type,$group_guid,$start_date,$display_mode,$filter,$region='-') {
+       global $autofeed;
+       $autofeed = true;
        if ($page_type == 'group') {
                if (!event_calendar_activated_for_group($group_guid)) {
                        forward();
@@ -1149,8 +1151,26 @@ function event_calendar_get_page_content_list($page_type,$group_guid,$start_date
                        }
                }
        }
+       
+       $url = full_url();
+       if (substr_count($url, '?')) {
+               $url .= "&view=ical";
+       } else {
+               $url .= "?view=ical";
+       }
 
        $params = event_calendar_generate_listing_params($page_type,$group_guid,$start_date,$display_mode,$filter,$region);
+       
+       $url = elgg_format_url($url);
+       $menu_options = array(
+               'name' => 'ical',
+               'text' => '<img src="'.elgg_get_site_url().'mod/event_calendar/images/ics.png" />',
+               'href' => $url,
+               'title' => elgg_echo('feed:ical'),
+               'priority' => 800,
+       );
+       $menu_item = ElggMenuItem::factory($menu_options);
+       elgg_register_menu_item('extras', $menu_item);
 
        $body = elgg_view_layout("content", $params);
 
@@ -1348,8 +1368,8 @@ function event_calendar_generate_listing_params($page_type,$group_guid,$original
        $user_guid = elgg_get_logged_in_user_guid();
 
        $offset = get_input('offset');
+       $limit = get_input('limit',15);
 
-       $limit = 15;
        if ($event_calendar_spots_display == 'yes') {
                if (!$filter) {
                        $filter = 'open';
@@ -1391,6 +1411,7 @@ function event_calendar_generate_listing_params($page_type,$group_guid,$original
        );
 
        $content = elgg_view('event_calendar/show_events', $vars);
+
        $filter_override = elgg_view('event_calendar/filter_menu',$vars);
 
        if ($event_calendar_listing_format == 'paged') {
diff --git a/views/ical/event_calendar/show_events.php b/views/ical/event_calendar/show_events.php
new file mode 100644 (file)
index 0000000..1998159
--- /dev/null
@@ -0,0 +1,7 @@
+<?php
+if ($vars['events']) {
+       foreach ($vars['events'] as $entity) {
+               echo elgg_view_entity($entity);
+       }
+       //echo elgg_view_entity_list($vars['events'], $vars['count'], $vars['offset'], $vars['limit'], false, false);
+}
diff --git a/views/ical/object/event_calendar.php b/views/ical/object/event_calendar.php
new file mode 100644 (file)
index 0000000..a6ed889
--- /dev/null
@@ -0,0 +1,44 @@
+<?php 
+$event = $vars['entity'];
+if ($event->organizer) {
+       $organizer = "\nORGANIZER;CN={$event->organizer}\n";
+} else {
+       $organizer = '';
+}
+
+if ($event->description) {
+       // make sure that we are using Unix line endings
+       $description = str_replace("\r\n","\n",$event->description);
+       $description = str_replace("\r","\n",$description);
+       
+       // now convert to icalendar format
+       $description = str_replace("\n",'\n',$description);
+       $description = wordwrap($description,75,"\r\n ",TRUE);
+} else {
+       $description = '';
+}
+?>
+BEGIN:VEVENT
+UID:<?php echo elgg_get_site_url().'event_calendar/view/'.$event->guid; ?>
+
+URL:<?php echo elgg_get_site_url().'event_calendar/view/'.$event->guid; ?>
+
+DTSTAMP:<?php echo date("Ymd\THis\Z", $event->getTimeUpdated())?>
+
+CREATED:<?php echo date("Ymd\THis\Z", $event->getTimeCreated())?>
+
+LAST-MODIFIED:<?php echo date("Ymd\THis\Z", $event->getTimeUpdated())  ?>
+
+DTSTART:<?php echo date("Ymd\THis\Z", $event->start_date);  ?>
+
+DTEND:<?php echo date("Ymd\THis\Z", $event->real_end_time);  ?>
+
+SUMMARY:<?php echo $event->title;  ?>
+
+DESCRIPTION:<?php echo $description;  ?>
+
+LOCATION:<?php echo $event->venue;  ?><?php echo $organizer;  ?>
+
+CATEGORIES:<?php implode(",",$event->tags);  ?>
+
+END:VEVENT
diff --git a/views/ical/page/default.php b/views/ical/page/default.php
new file mode 100644 (file)
index 0000000..b8347c9
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Elgg ICAL output pageshell
+ *
+ * @package Elgg
+ * @subpackage Core
+ *
+ */
+
+header("Content-Type: text/calendar");
+header("Content-Disposition: attachment; filename=\"calendar.ics\"");
+?>
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Curverider Ltd//NONSGML Elgg <?php echo get_version(true); ?>//EN
+<?php echo $vars['body']; ?>
+END:VCALENDAR
diff --git a/views/ical/page/layouts/default.php b/views/ical/page/layouts/default.php
new file mode 100644 (file)
index 0000000..57598fa
--- /dev/null
@@ -0,0 +1,2 @@
+<?php
+echo $vars['content'];
\ No newline at end of file
index 0b2fe5b7045e621d681a0054bcbf2b7e401bc947..add5b75dbde8171b7c9235e40181e6f59aa3b3f8 100644 (file)
@@ -9,7 +9,6 @@
  * @link http://radagast.biz/
  * 
  */
-
 if ($vars['events']) {
        echo elgg_view_entity_list($vars['events'], $vars['count'], $vars['offset'], $vars['limit'], false, false);
 }