]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
fixes personal calendar toggle bug and adds the ability to add any site member to...
authorKevin Jardine <kevinjardine@yahoo.com>
Wed, 19 Oct 2011 09:23:52 +0000 (11:23 +0200)
committerKevin Jardine <kevinjardine@yahoo.com>
Wed, 19 Oct 2011 09:23:52 +0000 (11:23 +0200)
actions/event_calendar/toggle_personal_calendar.php
languages/en.php
models/model.php
start.php
views/default/event_calendar/calendar_toggle.php

index f2341a91a67b76c0beeef5e2c4a66aba15fc633f..977355d78260b1523a35ec4197e2ef9820e4d919 100644 (file)
@@ -1,8 +1,9 @@
 <?php
 elgg_load_library('elgg:event_calendar');
 $event_guid = get_input('event_guid',0);
-$user_guid = get_input('user_id',elgg_get_logged_in_user_guid());
+$user_guid = get_input('user_guid',elgg_get_logged_in_user_guid());
 $other = get_input('other','');
+error_log("in toggle_personal_calendar: $event_guid, $user_guid, $other");
 if ($other) {
        $remove_response = elgg_echo('event_calendar:added_to_the_calendar');
        $add_response = elgg_echo('event_calendar:removed_from_the_calendar');
index da055c6e5802aab18f2459c9168fc3cf40a4d69a..3239e07bc6471e428630bb6562dfc12086a2751c 100644 (file)
@@ -226,7 +226,11 @@ You can manage calendar requests for this event here:
        'event_calendar:listing_title:all' => "All events",
        'event_calendar:listing_title:open' => "Open events",
        'event_calendar:listing_title:mine' => "My calendar",
-       'event_calendar:listing_title:friends' => "Friends' calendars",         
+       'event_calendar:listing_title:friends' => "Friends' calendars", 
+       'event_calendar:manage_users:title' => "Manage subscribers for \"%s\"",
+       'event_calendar:manage_users:breadcrumb' => "Manage subscribers",
+       'event_calendar:manage_users:description' => "You can add or remove events from personal calendars using the buttons below.",
+       'event_calendar:manage_users:unauthorized' => "Error: you are not authorised to manage personal calendars for this event.",
                
        /**
         * Event calendar river
index 446415e4b155ff95eae6d2df91b1b4af00388b29..378eeacce6d74c1055ee721d0c8ef631d17e5127 100644 (file)
@@ -701,9 +701,9 @@ function event_calendar_has_personal_event($event_guid,$user_guid) {
                // use old method for now
                $annotations =  get_annotations($event_guid, "object", "event_calendar", "personal_event", (int) $user_guid, $user_guid);
                if ($annotations && count($annotations) > 0) {
-                       return true;
+                       return TRUE;
                } else {
-                       return false;
+                       return FALSE;
                }
        }
 }
@@ -1532,6 +1532,59 @@ function event_calendar_get_page_content_display_users($event_guid) {
        return elgg_view_page($title,$body);
 }
 
+// display a list of all the members of the container of $event_guid and allowing
+// adding or removing them
+
+function event_calendar_get_page_content_manage_users($event_guid) {
+       // TODO: make this an optional feature, toggled off
+       elgg_load_js('elgg.event_calendar');
+       $event = get_entity($event_guid);
+       $limit = 10;
+       $offset = get_input('offset', 0);
+
+       if (!elgg_instanceof($event, 'object', 'event_calendar')) {
+               $content = elgg_echo('event_calendar:error_nosuchevent');
+               $title = elgg_echo('event_calendar:generic_error_title');
+       } else {
+               event_calendar_handle_menu($event_guid);
+               $title = elgg_echo('event_calendar:manage_users:title',array($event->title));
+               $event_container = get_entity($event->container_guid);
+               if ($event_container->canEdit()) {
+                       if (elgg_instanceof($event_container, 'group')) {
+                               elgg_push_context('groups');
+                               elgg_set_page_owner_guid($event->container_guid);
+                               elgg_push_breadcrumb(elgg_echo('event_calendar:group_breadcrumb'), 'event_calendar/group/'.$event->container_guid);
+                               $users = $event_container->getMembers($limit,$offset);
+                               $count = $event_container->getMembers($limit,$offset,TRUE);
+                       } else {
+                               elgg_push_breadcrumb(elgg_echo('event_calendar:show_events_title'),'event_calendar/list');
+                               $users = elgg_get_entities(array('type'=>'user','limit'=>$limit,'offset'=>$offset));
+                               $count = elgg_get_entities(array('type'=>'user','count'=>TRUE));
+                       }
+                       elgg_push_breadcrumb($event->title,$event->getURL());
+                       elgg_push_breadcrumb(elgg_echo('event_calendar:manage_users:breadcrumb'));
+                       $options = array(
+                               'full_view' => FALSE,
+                               'list_type_toggle' => FALSE,
+                               'limit'=>$limit,
+                               'event_calendar_event'=>$event,
+                               'pagination' => TRUE,
+                               'count'=>$count,
+                       );
+                       elgg_extend_view('user/default','event_calendar/calendar_toggle');
+                       $content = '<p>'.elgg_echo('event_calendar:manage_users:description').'</p>';
+                       $content .= elgg_view_entity_list($users,$options,$offset,$limit);
+               } else {
+                       $content = elgg_echo('event_calendar:manage_users:unauthorized');
+               }
+       }
+       $params = array('title' => $title, 'content' => $content,'filter' => '');
+
+       $body = elgg_view_layout("content", $params);
+
+       return elgg_view_page($title,$body);
+}
+
 function event_calendar_get_page_content_review_requests($event_guid) {
        $event = get_entity($event_guid);
 
@@ -1581,10 +1634,13 @@ function event_calendar_handle_menu($event_guid) {
        $event_calendar_personal_manage = elgg_get_plugin_setting('personal_manage', 'event_calendar');
        if ($event_calendar_personal_manage == 'no') {
                $url =  "event_calendar/review_requests/$event_guid";
-               $item = new ElggMenuItem('event-calendar-menu', elgg_echo('event_calendar:review_requests_menu_title'), $url);
+               $item = new ElggMenuItem('event-calendar-0review_requests', elgg_echo('event_calendar:review_requests_menu_title'), $url);
                elgg_register_menu_item('page', $item);
                //add_submenu_item(elgg_echo('event_calendar:review_requests_title'), $CONFIG->wwwroot . "pg/event_calendar/review_requests/".$event_id, '0eventcalendaradmin');
        }
+       $url =  "event_calendar/manage_users/$event_guid";
+       $item = new ElggMenuItem('event-calendar-1manage_users', elgg_echo('event_calendar:manage_users:breadcrumb'), $url);
+       elgg_register_menu_item('page', $item);
 }
 function event_calendar_get_secret_key() {
        $key_file_name = elgg_get_plugin_setting('ical_auth_file_name','event_calendar');
index f99c6ceb95a88c55cbba93af5cff51ace7f83eab..8baf86a6ba8f439997090c38bb9a794c6ef57f24 100644 (file)
--- a/start.php
+++ b/start.php
@@ -174,6 +174,9 @@ function event_calendar_page_handler($page) {
                case 'display_users':
                        echo event_calendar_get_page_content_display_users($page[1]);
                        break;
+               case 'manage_users':
+                       echo event_calendar_get_page_content_manage_users($page[1]);
+                       break;
                case 'add':
                        if (isset($page[1])) {
                                group_gatekeeper();
index 7180dec7535b18ec9adcf9a4ce4f39bce3d8e349..30de15cf267dbc90237bdd1981f02ad4af2d5f90 100644 (file)
@@ -2,19 +2,17 @@
 $event = $vars['event_calendar_event'];
 $user = $vars['entity'];
 $container = get_entity($event->container_guid);
+if (event_calendar_has_personal_event($event->guid, $user->guid)) {
+       $label = elgg_echo('event_calendar:remove_from_the_calendar_button');
+} else {
+       $label = elgg_echo('event_calendar:add_to_the_calendar');
+}
 
-if ($container->canEdit()) {
-       $link = '<p class="event-calendar-personal-calendar-toggle"><a href="javascript:void(0);" ';
-       $link .= 'onclick="javascript:event_calendar_personal_toggle('.$event->guid.','.$vars['entity']->guid.'); return false;" ';
-       $link .= ' >';
-       $link .= '<span id="event_calendar_user_data_'.$vars['entity']->guid.'">'.elgg_echo('event_calendar:remove_from_the_calendar').'</span>';
-       $link .= '</a></p>';
-       
+if ($container->canEdit()) {   
        $button = elgg_view('input/button',array(
                'id'=>'event_calendar_user_data_'.$event->guid.'_'.$user->guid,
                'class' => "event-calendar-personal-calendar-toggle",
-               'value' => elgg_echo('event_calendar:remove_from_the_calendar_button'),
+               'value' => $label,
        ));
+       echo '<div class="event-calendar-personal-calendar-toggle-wrapper">'.$button.'<div>';
 }
-
-echo '<div class="event-calendar-personal-calendar-toggle-wrapper">'.$button.'<div>';