diff options
Diffstat (limited to 'mod/notifications')
18 files changed, 1169 insertions, 909 deletions
diff --git a/mod/notifications/actions/groupsave.php b/mod/notifications/actions/groupsave.php index 8a0ebd24b..e79dae5cc 100644 --- a/mod/notifications/actions/groupsave.php +++ b/mod/notifications/actions/groupsave.php @@ -1,44 +1,49 @@ -<?php
-
- /**
- * Elgg notifications group save
- *
- * @package ElggNotifications
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.com/
- */
-
- // Restrict to logged in users
- gatekeeper();
-
- // Load important global vars
- global $SESSION;
- global $NOTIFICATION_HANDLERS;
-
- // Get group memberships and condense them down to an array of guids
- $groups = array();
- if ($groupmemberships = get_entities_from_relationship('member',$_SESSION['user']->guid,false,'group','',0,'',9999)) {
- foreach($groupmemberships as $groupmembership)
- $groups[] = $groupmembership->guid;
- }
-
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- $subscriptions[$method] = get_input($method.'subscriptions');
- $personal[$method] = get_input($method.'personal');
- $collections[$method] = get_input($method.'collections');
- if (!empty($groups))
- foreach($groups as $group)
- if (in_array($group,$subscriptions[$method])) {
- add_entity_relationship($SESSION['user']->guid,'notify'.$method,$group);
- } else {
- remove_entity_relationship($SESSION['user']->guid,'notify'.$method,$group);
- }
- }
-
- system_message(elgg_echo('notifications:subscriptions:success'));
-
- forward($_SERVER['HTTP_REFERER']);
-
-?>
\ No newline at end of file +<?php + +/** + * Elgg notifications group save + * + * @package ElggNotifications + */ + +$current_user = elgg_get_logged_in_user_entity(); + +$guid = (int) get_input('guid', 0); +if (!$guid || !($user = get_entity($guid))) { + forward(); +} +if (($user->guid != $current_user->guid) && !$current_user->isAdmin()) { + forward(); +} + +// Get group memberships and condense them down to an array of guids +$groups = array(); +$options = array( + 'relationship' => 'member', + 'relationship_guid' => $user->guid, + 'type' => 'group', + 'limit' => false, +); +if ($groupmemberships = elgg_get_entities_from_relationship($options)) { + foreach($groupmemberships as $groupmembership) { + $groups[] = $groupmembership->guid; + } +} + +if (!empty($groups)) { + global $NOTIFICATION_HANDLERS; + foreach ($NOTIFICATION_HANDLERS as $method => $foo) { + $subscriptions[$method] = get_input($method.'subscriptions', array()); + foreach ($groups as $group) { + if (in_array($group, $subscriptions[$method])) { + add_entity_relationship($user->guid, 'notify'.$method, $group); + } else { + remove_entity_relationship($user->guid, 'notify'.$method, $group); + } + } + } +} + +system_message(elgg_echo('notifications:subscriptions:success')); + +forward(REFERER); diff --git a/mod/notifications/actions/save.php b/mod/notifications/actions/save.php index 112b1a74c..3fe0001a3 100644 --- a/mod/notifications/actions/save.php +++ b/mod/notifications/actions/save.php @@ -1,42 +1,43 @@ -<?php
-
- /**
- * Elgg notifications
- *
- * @package ElggNotifications
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.com/
- */
-
- // Restrict to logged in users
- gatekeeper();
-
- global $SESSION;
-
- global $NOTIFICATION_HANDLERS;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- $subscriptions[$method] = get_input($method.'subscriptions');
- $personal[$method] = get_input($method.'personal');
- $collections[$method] = get_input($method.'collections');
-
- $metaname = 'collections_notifications_preferences_' . $method;
- $_SESSION['user']->$metaname = $collections[$method];
- set_user_notification_setting($_SESSION['user']->guid, $method, ($personal[$method] == '1') ? true : false);
- remove_entity_relationships($SESSION['user']->guid,'notify' . $method, false, 'user');
- }
-
- // Add new ones
- foreach($subscriptions as $key => $subscription)
- if (is_array($subscription) && !empty($subscription)) {
- foreach($subscription as $subscriptionperson) {
- add_entity_relationship($_SESSION['user']->guid, 'notify' . $key, $subscriptionperson);
- }
- }
-
- system_message(elgg_echo('notifications:subscriptions:success'));
-
- forward($_SERVER['HTTP_REFERER']);
-
-?>
\ No newline at end of file +<?php + +/** + * Elgg notifications + * + * @package ElggNotifications + */ + +$current_user = elgg_get_logged_in_user_entity(); + +$guid = (int) get_input('guid', 0); +if (!$guid || !($user = get_entity($guid))) { + forward(); +} +if (($user->guid != $current_user->guid) && !$current_user->isAdmin()) { + forward(); +} + +global $NOTIFICATION_HANDLERS; +$subscriptions = array(); +foreach($NOTIFICATION_HANDLERS as $method => $foo) { + $subscriptions[$method] = get_input($method.'subscriptions'); + $personal[$method] = get_input($method.'personal'); + $collections[$method] = get_input($method.'collections'); + + $metaname = 'collections_notifications_preferences_' . $method; + $user->$metaname = $collections[$method]; + set_user_notification_setting($user->guid, $method, ($personal[$method] == '1') ? true : false); + remove_entity_relationships($user->guid, 'notify' . $method, false, 'user'); +} + +// Add new ones +foreach($subscriptions as $key => $subscription) { + if (is_array($subscription) && !empty($subscription)) { + foreach($subscription as $subscriptionperson) { + add_entity_relationship($user->guid, 'notify' . $key, $subscriptionperson); + } + } +} + +system_message(elgg_echo('notifications:subscriptions:success')); + +forward(REFERER); diff --git a/mod/notifications/graphics/icon_notifications_site.gif b/mod/notifications/graphics/icon_notifications_site.gif Binary files differnew file mode 100644 index 000000000..d12ca08b1 --- /dev/null +++ b/mod/notifications/graphics/icon_notifications_site.gif diff --git a/mod/notifications/groups.php b/mod/notifications/groups.php index 97adebb82..973f3493c 100644 --- a/mod/notifications/groups.php +++ b/mod/notifications/groups.php @@ -1,42 +1,46 @@ -<?php
-
- /**
- * Elgg notifications plugin group index
- *
- * @package ElggNotifications
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.com/
- */
-
- // Load Elgg framework
- require_once(dirname(dirname(dirname(__FILE__))) . '/engine/start.php');
-
- // Ensure only logged-in users can see this page
- gatekeeper();
-
- // Set the context to settings
- set_context('settings');
-
- // Get the form
- global $SESSION, $CONFIG;
- $people = array();
-
- $groupmemberships = get_entities_from_relationship('member',$_SESSION['user']->guid,false,'group','',0,'',9999);
-
- $body = elgg_view('input/form',array(
- 'body' => elgg_view('notifications/subscriptions/groupsform',array(
- 'groups' => $groupmemberships
- )),
- 'method' => 'post',
- 'action' => $CONFIG->wwwroot . 'action/notificationsettings/groupsave'
- ));
-
- // Insert it into the correct canvas layout
- $body = elgg_view_layout('two_column_left_sidebar','',$body);
-
- // Draw the page
- page_draw(elgg_echo('notifications:subscriptions:changesettings:groups'),$body);
-
-?>
\ No newline at end of file +<?php +/** + * Elgg notifications plugin group index + * + * @package ElggNotifications + * + * @uses $user ElggUser + */ + +if (!isset($user) || !($user instanceof ElggUser)) { + $url = 'notifications/group/' . elgg_get_logged_in_user_entity()->username; + forward($url); +} + +elgg_set_page_owner_guid($user->guid); + +// Set the context to settings +elgg_set_context('settings'); + +$title = elgg_echo('notifications:subscriptions:changesettings:groups'); + +elgg_push_breadcrumb(elgg_echo('settings'), "settings/user/$user->username"); +elgg_push_breadcrumb($title); + +// Get the form +$people = array(); + +$groupmemberships = elgg_get_entities_from_relationship(array( + 'relationship' => 'member', + 'relationship_guid' => $user->guid, + 'type' => 'group', + 'limit' => false, +)); + +$body = elgg_view_form('notificationsettings/groupsave', array(), array( + 'groups' => $groupmemberships, + 'user' => $user, +)); + +$params = array( + 'content' => $body, + 'title' => $title, +); +$body = elgg_view_layout('one_sidebar', $params); + +echo elgg_view_page($title, $body); diff --git a/mod/notifications/index.php b/mod/notifications/index.php index a4d3ef880..a99622efd 100644 --- a/mod/notifications/index.php +++ b/mod/notifications/index.php @@ -1,39 +1,50 @@ -<?php
-
- /**
- * Elgg notifications plugin index
- *
- * @package ElggNotifications
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.com/
- */
-
- // Load Elgg framework
- require_once(dirname(dirname(dirname(__FILE__))) . '/engine/start.php');
-
- // Ensure only logged-in users can see this page
- gatekeeper();
-
- // Set the context to settings
- set_context('settings');
-
- // Get the form
- global $SESSION;
- $people = array();
- if ($people_ents = get_entities_from_relationship('notify',$SESSION['user']->guid,false,'user','',0,'',99999)) {
- foreach($people_ents as $ent)
- $people[] = $ent->guid;
- }
- $body = elgg_view('notifications/subscriptions/form',array(
- 'people' => $people
- ));
-
- // Insert it into the correct canvas layout
- $body = elgg_view_layout('two_column_left_sidebar','',$body);
-
- // Draw the page
- page_draw(elgg_echo('notifications:subscriptions:changesettings'),$body);
-
-?>
\ No newline at end of file +<?php +/** + * Elgg notifications plugin index + * + * @package ElggNotifications + * + * @uses $user ElggUser + */ + +if (!isset($user) || !($user instanceof ElggUser)) { + $url = 'notifications/personal/' . elgg_get_logged_in_user_entity()->username; + forward($url); +} + +elgg_set_page_owner_guid($user->guid); + +// Set the context to settings +elgg_set_context('settings'); + +$title = elgg_echo('notifications:subscriptions:changesettings'); + +elgg_push_breadcrumb(elgg_echo('settings'), "settings/user/$user->username"); +elgg_push_breadcrumb($title); + +// Get the form +$people = array(); +if ($people_ents = elgg_get_entities_from_relationship(array( + 'relationship' => 'notify', + 'relationship_guid' => $user->guid, + 'type' => 'user', + 'limit' => false, + ))) { + + foreach($people_ents as $ent) { + $people[] = $ent->guid; + } +} + +$body = elgg_view('notifications/subscriptions/form', array( + 'people' => $people, + 'user' => $user, +)); + +$params = array( + 'content' => $body, + 'title' => $title, +); +$body = elgg_view_layout('one_sidebar', $params); + +echo elgg_view_page($title, $body); diff --git a/mod/notifications/languages/en.php b/mod/notifications/languages/en.php index 69b69b492..0f2ba2304 100644 --- a/mod/notifications/languages/en.php +++ b/mod/notifications/languages/en.php @@ -1,29 +1,26 @@ -<?php
-
- $english = array(
-
- 'friends:all' => 'All friends',
-
- 'notifications:subscriptions:personal:description' => 'Receive notifications when actions are performed on your content',
- 'notifications:subscriptions:personal:title' => 'Personal notifications',
-
- 'notifications:subscriptions:collections:title' => 'Toggle friends collections',
- 'notifications:subscriptions:collections:description' => 'To toggle settings for members of your friends collections, use the icons below. This will affect the corresponding users in the main notification settings panel at the bottom of the page. ',
- 'notifications:subscriptions:collections:edit' => 'To edit your friends collections, click here.',
-
- 'notifications:subscriptions:changesettings' => 'Notifications',
- 'notifications:subscriptions:changesettings:groups' => 'Group notifications',
- 'notification:method:email' => 'Email',
-
- 'notifications:subscriptions:title' => 'Notifications per user',
- 'notifications:subscriptions:description' => 'To receive notifications from your friends when they create new content, find them below and select the notification method you would like to use.',
-
- 'notifications:subscriptions:groups:description' => 'To receive notifications when new content is added to a group you are a member of, find it below and select the notification method you would like to use.',
-
- 'notifications:subscriptions:success' => 'Your notifications settings have been saved.',
-
- );
-
- add_translation("en",$english);
-
-?>
\ No newline at end of file +<?php + +$english = array( + + 'friends:all' => 'All friends', + + 'notifications:subscriptions:personal:description' => 'Receive notifications when actions are performed on your content', + 'notifications:subscriptions:personal:title' => 'Personal notifications', + + 'notifications:subscriptions:friends:title' => 'Friends', + 'notifications:subscriptions:friends:description' => 'Below are collections of your friends. Selecting a collection turns on notifications for the users in that collection.', + 'notifications:subscriptions:collections:edit' => 'To edit your shared access notifications, click here.', + + 'notifications:subscriptions:changesettings' => 'Notifications', + 'notifications:subscriptions:changesettings:groups' => 'Group notifications', + + 'notifications:subscriptions:title' => 'Notifications per user', + 'notifications:subscriptions:description' => 'To receive notifications from your friends (on an individual basis) when they create new content, find them below and select the notification method you would like to use.', + + 'notifications:subscriptions:groups:description' => 'To receive notifications when new content is added to a group you are a member of, find it below and select the notification method(s) you would like to use.', + + 'notifications:subscriptions:success' => 'Your notifications settings have been saved.', + +); + + add_translation("en", $english); diff --git a/mod/notifications/manifest.xml b/mod/notifications/manifest.xml index 267b686e7..205476881 100644 --- a/mod/notifications/manifest.xml +++ b/mod/notifications/manifest.xml @@ -1,10 +1,16 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<plugin_manifest>
- <field key="author" value="Curverider" />
- <field key="version" value="1.5" />
- <field key="description" value="Elgg notifications plugin" />
- <field key="website" value="http://www.elgg.org/" />
- <field key="copyright" value="(C) Curverider 2008-2009" />
- <field key="licence" value="GNU Public License version 2" />
- <field key="elgg_version" value="2009030702" />
-</plugin_manifest>
+<?xml version="1.0" encoding="UTF-8"?> +<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8"> + <name>Notifications</name> + <author>Core developers</author> + <version>1.7</version> + <category>bundled</category> + <description>Elgg notifications plugin</description> + <website>http://www.elgg.org/</website> + <copyright>See COPYRIGHT.txt</copyright> + <license>GNU General Public License version 2</license> + <requires> + <type>elgg_release</type> + <version>1.8</version> + </requires> + <activate_on_install>true</activate_on_install> +</plugin_manifest> diff --git a/mod/notifications/start.php b/mod/notifications/start.php index cdbe78cc1..b76b0aa1e 100644 --- a/mod/notifications/start.php +++ b/mod/notifications/start.php @@ -1,47 +1,206 @@ -<?php
-
- /**
- * Elgg notifications plugin
- *
- * @package ElggNotifications
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.com/
- */
-
-
- /**
- * Notification settings page setup function
- *
- */
- function notifications_plugin_pagesetup() {
- global $CONFIG;
- if (get_context() == 'settings') {
- add_submenu_item(elgg_echo('notifications:subscriptions:changesettings'), $CONFIG->wwwroot . "mod/notifications/");
- if (is_plugin_enabled('groups'))
- add_submenu_item(elgg_echo('notifications:subscriptions:changesettings:groups'), $CONFIG->wwwroot . "mod/notifications/groups.php");
- }
- }
-
- function notifications_plugin_init() {
- extend_view('css','notifications/css');
- global $CONFIG;
-
- // Unset the default user settings hook
- if (isset($CONFIG->hooks['usersettings:save']['user']))
- foreach($CONFIG->hooks['usersettings:save']['user'] as $key => $function) {
- if ($function == 'notification_user_settings_save')
- unset($CONFIG->hooks['usersettings:save']['user'][$key]);
- }
- }
-
- register_elgg_event_handler('pagesetup','system','notifications_plugin_pagesetup',1000);
- register_elgg_event_handler('init','system','notifications_plugin_init',1000);
-
- // Register action
- global $CONFIG;
- register_action("notificationsettings/save",false,$CONFIG->pluginspath . "notifications/actions/save.php");
- register_action("notificationsettings/groupsave",false,$CONFIG->pluginspath . "notifications/actions/groupsave.php");
-
-?>
\ No newline at end of file +<?php +/** + * Elgg notifications plugin + * + * @package ElggNotifications + */ + +elgg_register_event_handler('init', 'system', 'notifications_plugin_init'); + +function notifications_plugin_init() { + + elgg_extend_view('css/elgg','notifications/css'); + + elgg_register_page_handler('notifications', 'notifications_page_handler'); + + elgg_register_event_handler('pagesetup', 'system', 'notifications_plugin_pagesetup'); + + // Unset the default notification settings + elgg_unregister_plugin_hook_handler('usersettings:save', 'user', 'notification_user_settings_save'); + elgg_unextend_view('forms/account/settings', 'core/settings/account/notifications'); + + // update notifications based on relationships changing + elgg_register_event_handler('delete', 'member', 'notifications_relationship_remove'); + elgg_register_event_handler('delete', 'friend', 'notifications_relationship_remove'); + + // update notifications when new friend or access collection membership + elgg_register_event_handler('create', 'friend', 'notifications_update_friend_notify'); + elgg_register_plugin_hook_handler('access:collections:add_user', 'collection', 'notifications_update_collection_notify'); + + $actions_base = elgg_get_plugins_path() . 'notifications/actions'; + elgg_register_action("notificationsettings/save", "$actions_base/save.php"); + elgg_register_action("notificationsettings/groupsave", "$actions_base/groupsave.php"); +} + +/** + * Route page requests + * + * @param array $page Array of url parameters + * @return bool + */ +function notifications_page_handler($page) { + + gatekeeper(); + $current_user = elgg_get_logged_in_user_entity(); + + // default to personal notifications + if (!isset($page[0])) { + $page[0] = 'personal'; + } + if (!isset($page[1])) { + forward("notifications/{$page[0]}/{$current_user->username}"); + } + + $user = get_user_by_username($page[1]); + if (($user->guid != $current_user->guid) && !$current_user->isAdmin()) { + forward(); + } + + $base = elgg_get_plugins_path() . 'notifications'; + + // note: $user passed in + switch ($page[0]) { + case 'group': + require "$base/groups.php"; + break; + case 'personal': + require "$base/index.php"; + break; + default: + return false; + } + return true; +} + +/** + * Notification settings sidebar menu + * + */ +function notifications_plugin_pagesetup() { + if (elgg_get_context() == "settings" && elgg_get_logged_in_user_guid()) { + + $user = elgg_get_page_owner_entity(); + if (!$user) { + $user = elgg_get_logged_in_user_entity(); + } + + $params = array( + 'name' => '2_a_user_notify', + 'text' => elgg_echo('notifications:subscriptions:changesettings'), + 'href' => "notifications/personal/{$user->username}", + ); + elgg_register_menu_item('page', $params); + + if (elgg_is_active_plugin('groups')) { + $params = array( + 'name' => '2_group_notify', + 'text' => elgg_echo('notifications:subscriptions:changesettings:groups'), + 'href' => "notifications/group/{$user->username}", + ); + elgg_register_menu_item('page', $params); + } + } +} + +/** + * Update notifications when a relationship is deleted + * + * @param string $event + * @param string $object_type + * @param object $relationship + */ +function notifications_relationship_remove($event, $object_type, $relationship) { + global $NOTIFICATION_HANDLERS; + + $user_guid = $relationship->guid_one; + $object_guid = $relationship->guid_two; + + // loop through all notification types + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + remove_entity_relationship($user_guid, "notify{$method}", $object_guid); + } +} + +/** + * Turn on notifications for new friends if all friend notifications is on + * + * @param string $event + * @param string $object_type + * @param object $relationship + */ +function notifications_update_friend_notify($event, $object_type, $relationship) { + global $NOTIFICATION_HANDLERS; + + $user_guid = $relationship->guid_one; + $friend_guid = $relationship->guid_two; + + $user = get_entity($user_guid); + + // loop through all notification types + foreach ($NOTIFICATION_HANDLERS as $method => $foo) { + $metaname = 'collections_notifications_preferences_' . $method; + $collections_preferences = $user->$metaname; + if ($collections_preferences) { + if (!empty($collections_preferences) && !is_array($collections_preferences)) { + $collections_preferences = array($collections_preferences); + } + if (is_array($collections_preferences)) { + // -1 means all friends is on - should be a define + if (in_array(-1, $collections_preferences)) { + add_entity_relationship($user_guid, 'notify' . $method, $friend_guid); + } + } + } + } +} + +/** + * Update notifications for changes in access collection membership. + * + * This function assumes that only friends can belong to access collections. + * + * @param string $event + * @param string $object_type + * @param bool $returnvalue + * @param array $params + */ +function notifications_update_collection_notify($event, $object_type, $returnvalue, $params) { + global $NOTIFICATION_HANDLERS; + + // only update notifications for user owned collections + $collection_id = $params['collection_id']; + $collection = get_access_collection($collection_id); + $user = get_entity($collection->owner_guid); + if (!($user instanceof ElggUser)) { + return $returnvalue; + } + + $member_guid = $params['user_guid']; + + // loop through all notification types + foreach ($NOTIFICATION_HANDLERS as $method => $foo) { + $metaname = 'collections_notifications_preferences_' . $method; + $collections_preferences = $user->$metaname; + if (!$collections_preferences) { + continue; + } + if (!is_array($collections_preferences)) { + $collections_preferences = array($collections_preferences); + } + if (in_array(-1, $collections_preferences)) { + // if "all friends" notify is on, we don't change any notifications + // since must be a friend to be in an access collection + continue; + } + if (in_array($collection_id, $collections_preferences)) { + // notifications are on for this collection so we add/remove + if ($event == 'access:collections:add_user') { + add_entity_relationship($user->guid, "notify$method", $member_guid); + } elseif ($event == 'access:collections:remove_user') { + // removing someone from an access collection is not a guarantee + // that they should be removed from notifications + //remove_entity_relationship($user->guid, "notify$method", $member_guid); + } + } + } +} diff --git a/mod/notifications/views/default/forms/notificationsettings/groupsave.php b/mod/notifications/views/default/forms/notificationsettings/groupsave.php new file mode 100644 index 000000000..f3e5f693a --- /dev/null +++ b/mod/notifications/views/default/forms/notificationsettings/groupsave.php @@ -0,0 +1,111 @@ +<?php +/** + * Elgg notifications groups subscription form + * + * @package ElggNotifications + * + * @uses $vars['user'] ElggUser + */ + +/* @var ElggUser $user */ +$user = $vars['user']; + +global $NOTIFICATION_HANDLERS; +foreach ($NOTIFICATION_HANDLERS as $method => $foo) { + $subsbig[$method] = elgg_get_entities_from_relationship(array( + 'relationship' => 'notify' . $method, + 'relationship_guid' => $user->guid, + 'type' => 'group', + 'limit' => false, + )); + $tmparray = array(); + if ($subsbig[$method]) { + foreach($subsbig[$method] as $tmpent) { + $tmparray[] = $tmpent->guid; + } + } + $subsbig[$method] = $tmparray; +} + +?> + +<div class="elgg-module elgg-module-info"> + <div class="elgg-body"> + <?php + echo elgg_view('notifications/subscriptions/jsfuncs',$vars); + ?> + <div> + <?php + echo elgg_echo('notifications:subscriptions:groups:description'); + ?> + </div> +<?php + +if (isset($vars['groups']) && !empty($vars['groups'])) { + +?> + <table id="notificationstable" cellspacing="0" cellpadding="4" width="100%"> + <tr> + <td> </td> +<?php + + $i = 0; + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + if ($i > 0) { + echo "<td class='spacercolumn'> </td>"; + } +?> + <td class="<?php echo $method; ?>togglefield"><?php echo elgg_echo('notification:method:'.$method); ?></td> +<?php + $i++; + } +?> + <td> </td> + </tr> +<?php + foreach($vars['groups'] as $group) { + + $fields = ''; + $i = 0; + + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + if (in_array($group->guid,$subsbig[$method])) { + $checked[$method] = 'checked="checked"'; + } else { + $checked[$method] = ''; + } + if ($i > 0) { + $fields .= "<td class=\"spacercolumn\"> </td>"; + } + $fields .= <<< END + <td class="{$method}togglefield"> + <a border="0" id="{$method}{$group->guid}" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}{$group->guid}');"> + <input type="checkbox" name="{$method}subscriptions[]" id="{$method}checkbox" onclick="adjust{$method}('{$method}{$group->guid}');" value="{$group->guid}" {$checked[$method]} /></a></td> +END; + $i++; + } + +?> + <tr> + <td class="namefield"> + <div> + <?php echo $group->name; ?> + </div> + </td> + <?php echo $fields; ?> + <td> </td> + </tr> +<?php + } +?> + </table> +<?php +} + echo '<div class="elgg-foot mtm">'; + echo elgg_view('input/hidden', array('name' => 'guid', 'value' => $user->guid)); + echo elgg_view('input/submit', array('value' => elgg_echo('save'))); + echo '</div>'; + +?> + </div> +</div> diff --git a/mod/notifications/views/default/forms/notificationsettings/save.php b/mod/notifications/views/default/forms/notificationsettings/save.php new file mode 100644 index 000000000..9470256ca --- /dev/null +++ b/mod/notifications/views/default/forms/notificationsettings/save.php @@ -0,0 +1,21 @@ +<?php +/** + * Personal notifications form body + * + * @uses $vars['user'] ElggUser + */ + +/* @var ElggUser $user */ +$user = $vars['user']; + +echo elgg_view('notifications/subscriptions/personal', $vars); +echo elgg_view('notifications/subscriptions/collections', $vars); +echo elgg_view('notifications/subscriptions/forminternals', $vars); + +?> +<div class="elgg-foot"> +<?php +echo elgg_view('input/hidden', array('name' => 'guid', 'value' => $user->guid)); +echo elgg_view('input/submit', array('value' => elgg_echo('save'))); +?> +</div> diff --git a/mod/notifications/views/default/notifications/css.php b/mod/notifications/views/default/notifications/css.php index 164586b3c..385c55b0b 100644 --- a/mod/notifications/views/default/notifications/css.php +++ b/mod/notifications/views/default/notifications/css.php @@ -1,78 +1,87 @@ -<?php
-
- /**
- * Elgg notifications CSS
- *
- * @package notifications
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider <info@elgg.com>
- * @copyright Curverider Ltd 2008-2009
- * @link http://elgg.org/
- */
-
-?>
-
-#notificationstable td.namefield {
- width:250px;
- text-align: left;
- vertical-align: middle;
-}
-#notificationstable td.namefield p {
- margin:0;
- vertical-align: middle;
- line-height: 1.1em;
- padding:5px 0 5px 0;
-}
-#notificationstable td.namefield img {
- padding:6px 10px 6px 3px;
- float:left;
-}
-#notificationstable td.namefield p.namefieldlink {
- margin:9px 0 0 0;
-}
-#notificationstable td.emailtogglefield,
-#notificationstable td.smstogglefield {
- width:50px;
- text-align: center;
- vertical-align: middle;
-}
-#notificationstable td.spacercolumn {
- width:30px;
-}
-#notificationstable td {
- border-bottom: 1px solid silver;
-}
-#notificationstable td.emailtogglefield input {
- margin-right:36px;
- margin-top:5px;
-}
-#notificationstable td.emailtogglefield a {
- width:46px;
- height:24px;
- cursor: pointer;
- display: block;
- outline: none;
-}
-#notificationstable td.emailtogglefield a.emailtoggleOff {
- background: url(<?php echo $vars['url']; ?>mod/notifications/graphics/icon_notifications_email.gif) no-repeat right 2px;
-}
-#notificationstable td.emailtogglefield a.emailtoggleOn {
- background: url(<?php echo $vars['url']; ?>mod/notifications/graphics/icon_notifications_email.gif) no-repeat right -36px;
-}
-
-.notification_collections,
-.notification_personal {
- margin-bottom: 25px;
-}
-
-.settings_form .friendsPicker_container h3 {
- color:#999999;
- font-size:3em;
- margin:0 0 20px;
- text-align:left;
- background: none;
- border-bottom: none;
-}
-
-
-
+<?php +/** + * Elgg notifications CSS + * + * @package notifications + */ +?> + +#notificationstable td.namefield { + width:250px; + text-align: left; + vertical-align: middle; +} +#notificationstable td.namefield p { + margin:0; + vertical-align: middle; + line-height: 1.1em; + padding:5px 0 5px 0; +} +#notificationstable td.namefield p.namefieldlink { + margin:5px 0 0 0; +} +#notificationstable td.namefield a img { + float:left; + width:25px; + height:25px; + margin:5px 10px 5px 5px; +} +#notificationstable td.emailtogglefield, +#notificationstable td.smstogglefield { + width:50px; + text-align: center; + vertical-align: middle; +} +#notificationstable td.spacercolumn { + width:30px; +} +#notificationstable td { + border-bottom: 1px solid silver; +} +#notificationstable td.emailtogglefield input { + margin-right:36px; + margin-top:5px; +} +#notificationstable td.emailtogglefield a { + width:46px; + height:24px; + cursor: pointer; + display: block; + outline: none; +} +#notificationstable td.sitetogglefield { + width:50px; + text-align: center; + vertical-align: middle; +} +#notificationstable td.sitetogglefield input { + margin-right:36px; + margin-top:5px; +} +#notificationstable td.sitetogglefield a { + width:46px; + height:24px; + cursor: pointer; + display: block; + outline: none; +} +#notificationstable td.emailtogglefield a.emailtoggleOff { + background: url(<?php echo elgg_get_site_url(); ?>mod/notifications/graphics/icon_notifications_email.gif) no-repeat right 2px; +} +#notificationstable td.emailtogglefield a.emailtoggleOn { + background: url(<?php echo elgg_get_site_url(); ?>mod/notifications/graphics/icon_notifications_email.gif) no-repeat right -36px; +} +#notificationstable td.sitetogglefield a.sitetoggleOff { + background: url(<?php echo elgg_get_site_url(); ?>mod/notifications/graphics/icon_notifications_site.gif) no-repeat right 2px; +} +#notificationstable td.sitetogglefield a.sitetoggleOn { + background: url(<?php echo elgg_get_site_url(); ?>mod/notifications/graphics/icon_notifications_site.gif) no-repeat right -37px; +} +.notification_friends, +.notification_personal, +.notifications_per_user { + margin-bottom: 25px; +} + + + diff --git a/mod/notifications/views/default/notifications/settings/usersettings.php b/mod/notifications/views/default/notifications/settings/usersettings.php deleted file mode 100644 index 0165eb215..000000000 --- a/mod/notifications/views/default/notifications/settings/usersettings.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php
-
-?>
\ No newline at end of file diff --git a/mod/notifications/views/default/notifications/subscriptions/collections.php b/mod/notifications/views/default/notifications/subscriptions/collections.php index cf6ce95de..207b2e3b9 100644 --- a/mod/notifications/views/default/notifications/subscriptions/collections.php +++ b/mod/notifications/views/default/notifications/subscriptions/collections.php @@ -1,141 +1,164 @@ -
-<script type="text/javascript">
-
- function setCollection(members, method, id) {
- for ( var i in members ) {
- var checked = $('#' + method + 'collections' + id).children("INPUT[type='checkbox']").attr('checked');
- if ($("#"+method+members[i]).children("INPUT[type='checkbox']").attr('checked') != checked) {
- $("#"+method+members[i]).children("INPUT[type='checkbox']").attr('checked', checked);
- functioncall = 'adjust' + method + '_alt("'+method+members[i]+'");';
- eval(functioncall);
- }
- }
- }
-
-</script>
-
-<h3>
- <?php echo elgg_echo('notifications:subscriptions:collections:title'); ?>
-</h3>
-<div class="notification_personal">
-<p>
- <?php echo elgg_echo('notifications:subscriptions:collections:description'); ?>
- <a href="<?php echo $vars['url']; ?>pg/collections/<?php echo $vars['user']->username; ?>"><?php echo elgg_echo('notifications:subscriptions:collections:edit') ?></a>
-</p>
-<table id="notificationstable" cellspacing="0" cellpadding="4" border="1" width="100%">
- <tr>
- <td> </td>
-<?php
- $i = 0;
- global $NOTIFICATION_HANDLERS;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- if ($i > 0)
- echo "<td class=\"spacercolumn\"> </td>";
-?>
- <td class="<?php echo $method; ?>togglefield"><?php echo elgg_echo('notification:method:'.$method); ?></td>
-<?php
- $i++;
- }
-?>
- <td> </td>
- </tr>
-<?php
- $members = array();
- if ($friends = get_user_friends($vars['user']->guid,'',9999,0)) {
- foreach($friends as $friend)
- $members[] = $friend->guid;
- }
- $memberno = sizeof($members);
- $members = implode(',',$members);
-
-?>
- <tr>
- <td class="namefield">
- <p>
- <?php echo elgg_echo('friends:all'); ?> (<?php echo $memberno; ?>)
- </p>
- </td>
-<?php
-
- $fields = '';
- $i = 0;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- $metaname = 'collections_notifications_preferences_' . $method;
- if ($collections_preferences = $vars['user']->$metaname) {
- if (!empty($collections_preferences) && !is_array($collections_preferences))
- $collections_preferences = array($collections_preferences);
- if (is_array($collections_preferences))
- if (in_array(-1,$collections_preferences)) {
- $collectionschecked[$method] = 'checked="checked"';
- } else {
- $collectionschecked[$method] = '';
- }
- }
- if ($i > 0) $fields .= "<td class=\"spacercolumn\"> </td>";
- $fields .= <<< END
- <td class="{$method}togglefield">
- <a border="0" id="{$method}collections-1" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}collections-1'); setCollection([{$members}],'{$method}',-1);">
- <input type="checkbox" name="{$method}collections[]" id="{$method}checkbox" onclick="adjust{$method}('{$method}collections-1');" value="-1" {$collectionschecked[$method]} /></a></td>
-END;
- $i++;
- }
- echo $fields;
-
-?>
- <td> </td>
- </tr>
-<?php
-
- if ($collections = get_user_access_collections($vars['user']->guid)) {
- foreach($collections as $collection) {
- $members = get_members_of_access_collection($collection->id, true);
- $memberno = sizeof($members);
- $members = implode(',',$members);
-
-?>
- <tr>
- <td class="namefield">
- <p>
- <?php echo $collection->name; ?> (<?php echo $memberno; ?>)
- </p>
-
- </td>
-
-<?php
-
- $fields = '';
- $i = 0;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- $metaname = 'collections_notifications_preferences_' . $method;
- if ($collections_preferences = $vars['user']->$metaname) {
- if (!empty($collections_preferences) && !is_array($collections_preferences))
- $collections_preferences = array($collections_preferences);
- if (is_array($collections_preferences))
- if (in_array($collection->id,$collections_preferences)) {
- $collectionschecked[$method] = 'checked="checked"';
- } else {
- $collectionschecked[$method] = '';
- }
- }
- if ($i > 0) $fields .= "<td class=\"spacercolumn\"> </td>";
- $fields .= <<< END
- <td class="{$method}togglefield">
- <a border="0" id="{$method}collections{$collection->id}" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}collections{$collection->id}'); setCollection([{$members}],'{$method}',{$collection->id});">
- <input type="checkbox" name="{$method}collections[]" id="{$method}checkbox" onclick="adjust{$method}('{$method}collections{$collection->id}');" value="{$collection->id}" {$collectionschecked[$method]} /></a></td>
-END;
- $i++;
- }
- echo $fields;
-
-?>
-
- <td> </td>
- </tr>
-<?php
-
- }
-}
-
-?>
-</table>
-</div>
+<?php +/** + * @uses $vars['user'] ElggUser + */ + +/* @var ElggUser $user */ +$user = $vars['user']; + +//@todo JS 1.8: no ?> +<script type="text/javascript"> + + function setCollection(members, method, id) { + for ( var i in members ) { + var checked = $('#' + method + 'collections' + id).children("INPUT[type='checkbox']").attr('checked'); + if ($("#"+method+members[i]).children("INPUT[type='checkbox']").attr('checked') != checked) { + $("#"+method+members[i]).children("INPUT[type='checkbox']").attr('checked', checked); + functioncall = 'adjust' + method + '_alt("'+method+members[i]+'");'; + eval(functioncall); + } + } + } + +</script> +<div class="elgg-module elgg-module-info"> + <div class="elgg-head"> + <h3> + <?php echo elgg_echo('notifications:subscriptions:friends:title'); ?> + </h3> + </div> +<p class="margin-none"> + <?php echo elgg_echo('notifications:subscriptions:friends:description'); ?> +</p> +<table id="notificationstable" cellspacing="0" cellpadding="4" width="100%"> + <tr> + <td> </td> +<?php + $i = 0; + global $NOTIFICATION_HANDLERS; + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + if ($i > 0) { + echo "<td class='spacercolumn'> </td>"; + } +?> + <td class="<?php echo $method; ?>togglefield"><?php echo elgg_echo('notification:method:'.$method); ?></td> +<?php + $i++; + } +?> + <td> </td> + </tr> +<?php + $members = array(); + if ($friends = get_user_friends($user->guid, '', 9999, 0)) { + foreach($friends as $friend) { + $members[] = $friend->guid; + } + } + $memberno = sizeof($members); + $members = implode(',',$members); + +?> + <tr> + <td class="namefield"> + <p> + <?php echo elgg_echo('friends:all'); ?> (<?php echo $memberno; ?>) + </p> + </td> +<?php + + $fields = ''; + $i = 0; + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + $metaname = 'collections_notifications_preferences_' . $method; + if ($collections_preferences = $user->$metaname) { + if (!empty($collections_preferences) && !is_array($collections_preferences)) { + $collections_preferences = array($collections_preferences); + } + if (is_array($collections_preferences)) { + if (in_array(-1,$collections_preferences)) { + $collectionschecked[$method] = 'checked="checked"'; + } else { + $collectionschecked[$method] = ''; + } + } + } + if ($i > 0) { + $fields .= "<td class='spacercolumn'> </td>"; + } + $fields .= <<< END + <td class="{$method}togglefield"> + <a border="0" id="{$method}collections-1" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}collections-1'); setCollection([{$members}],'{$method}',-1);"> + <input type="checkbox" name="{$method}collections[]" id="{$method}checkbox" onclick="adjust{$method}('{$method}collections-1');" value="-1" {$collectionschecked[$method]} /></a></td> +END; + $i++; + } + echo $fields; + +?> + <td> </td> + </tr> +<?php + + if ($collections = get_user_access_collections($user->guid)) { + foreach ($collections as $collection) { + $members = get_members_of_access_collection($collection->id, true); + $memberno = 0; + if ($members) { + $memberno = sizeof($members); + $members = implode(',', $members); + } else { + $members = ''; + } + + +?> + <tr> + <td class="namefield"> + <p> + <?php echo $collection->name; ?> (<?php echo $memberno; ?>) + </p> + </td> + +<?php + + $fields = ''; + $i = 0; + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + $metaname = 'collections_notifications_preferences_' . $method; + if ($collections_preferences = $user->$metaname) { + if (!empty($collections_preferences) && !is_array($collections_preferences)) { + $collections_preferences = array($collections_preferences); + } + if (is_array($collections_preferences)) { + if (in_array($collection->id,$collections_preferences)) { + $collectionschecked[$method] = 'checked="checked"'; + } else { + $collectionschecked[$method] = ''; + } + } + } + if ($i > 0) { + $fields .= "<td class='spacercolumn'> </td>"; + } + $fields .= <<< END + <td class="{$method}togglefield"> + <a border="0" id="{$method}collections{$collection->id}" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}collections{$collection->id}'); setCollection([{$members}],'{$method}',{$collection->id});"> + <input type="checkbox" name="{$method}collections[]" id="{$method}checkbox" onclick="adjust{$method}('{$method}collections{$collection->id}');" value="{$collection->id}" {$collectionschecked[$method]} /></a></td> +END; + $i++; + } + echo $fields; + +?> + + <td> </td> + </tr> +<?php + + } + } + +?> +</table> +</div> diff --git a/mod/notifications/views/default/notifications/subscriptions/form.php b/mod/notifications/views/default/notifications/subscriptions/form.php index 07e5287fd..559354eff 100644 --- a/mod/notifications/views/default/notifications/subscriptions/form.php +++ b/mod/notifications/views/default/notifications/subscriptions/form.php @@ -1,35 +1,12 @@ <?php +/** + * Elgg personal notifications + * + * @uses $vars['user'] ElggUser that owns the notification settings + */ - /** - * Elgg SMS Client - * - * @package ElggSMS - * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 - * @author Curverider Ltd - * @copyright Curverider Ltd 2008-2009 - * @link http://elgg.com/ - */ +// @todo is this a view for extensions? +echo elgg_view('subscriptions/form/additions', $vars); - - // Echo title - echo elgg_view_title(elgg_echo('notifications:subscriptions:changesettings')); - - echo elgg_view('subscriptions/form/additions',$vars); - - // Display a description -?> -<div class="contentWrapper"> -<div class="notification_methods"> -<?php - - echo elgg_view('input/form',array( - 'body' => elgg_view('notifications/subscriptions/personal') . - elgg_view('notifications/subscriptions/collections') . - elgg_view('notifications/subscriptions/forminternals'), - 'method' => 'post', - 'action' => $vars['url'] . 'action/notificationsettings/save', - )); - -?> -</div> -</div>
\ No newline at end of file +$form_vars = array('class' => 'elgg-form-alt'); +echo elgg_view_form('notificationsettings/save', $form_vars, $vars); diff --git a/mod/notifications/views/default/notifications/subscriptions/forminternals.php b/mod/notifications/views/default/notifications/subscriptions/forminternals.php index c87bb4b79..79a7959ac 100644 --- a/mod/notifications/views/default/notifications/subscriptions/forminternals.php +++ b/mod/notifications/views/default/notifications/subscriptions/forminternals.php @@ -1,117 +1,142 @@ - <h3>
- <?php echo elgg_echo('notifications:subscriptions:title'); ?>
- </h3>
- <p class="notification_methods_intro">
- <?php echo elgg_echo('notifications:subscriptions:description'); ?>
- </p>
<?php +/** + * Hacked up friends picker that needs to be replaced + * + * @uses $vars['user'] ElggUser + */ - // Get friends and subscriptions - $friends = get_user_friends($vars['user']->guid,'',9999,0);
-
- global $NOTIFICATION_HANDLERS;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- $subsbig[$method] = get_entities_from_relationship('notify' . $method,$vars['user']->guid,false,'user','',0,'',99999);
- }
- - $subs = array();
- foreach($subsbig as $method => $big) {
- if (is_array($subsbig[$method]) && sizeof($subsbig[$method])) {
- foreach($subsbig[$method] as $u) { $subs[$method][] = $u->guid; }
- }
- } +/* @var ElggUser $user */ +$user = $vars['user']; - // Let the system know that the friends picker is in use - global $pickerinuse; - $pickerinuse = true;
- $chararray = elgg_echo('friendspicker:chararray'); +elgg_load_js('elgg.friendspicker'); +elgg_load_js('jquery.easing'); - // Initialise internalname - if (!isset($vars['internalname'])) { - $internalname = "friend"; - } else { - $internalname = $vars['internalname']; - } - - // Initialise values - if (!isset($vars['value'])) { - $vars['value'] = array(); - } else { - if (!is_array($vars['value'])) { - $vars['value'] = (int) $vars['value']; - $vars['value'] = array($vars['value']); - } - } +?> +<div class="elgg-module elgg-module-info"> + <div class="elgg-head"> + <h3> + <?php echo elgg_echo('notifications:subscriptions:title'); ?> + </h3> + </div> + <p> + <?php echo elgg_echo('notifications:subscriptions:description'); ?> + </p> +<?php - // Initialise whether we're calling back or not - if (isset($vars['callback'])) { - $callback = $vars['callback']; - } else { - $callback = false; - } +// Get friends and subscriptions +$friends = get_user_friends($user->guid, '', 9999, 0); - // We need to count the number of friends pickers on the page. - if (!isset($vars['friendspicker'])) { - global $friendspicker; - if (!isset($friendspicker)) $friendspicker = 0; - $friendspicker++; - } else { - $friendspicker = $vars['friendspicker']; +global $NOTIFICATION_HANDLERS; +foreach($NOTIFICATION_HANDLERS as $method => $foo) { + $subsbig[$method] = elgg_get_entities_from_relationship(array( + 'relationship' => 'notify' . $method, + 'relationship_guid' => $user->guid, + 'type' => 'user', + 'limit' => false, + )); +} + +$subs = array(); +foreach($subsbig as $method => $big) { + if (is_array($subsbig[$method]) && sizeof($subsbig[$method])) { + foreach($subsbig[$method] as $u) { + $subs[$method][] = $u->guid; } + } +} + +// Let the system know that the friends picker is in use +global $pickerinuse; +$pickerinuse = true; +$chararray = elgg_echo('friendspicker:chararray'); + +// Initialise name +if (!isset($vars['name'])) { + $name = "friend"; +} else { + $name = $vars['name']; +} + +// Initialise values +if (!isset($vars['value'])) { + $vars['value'] = array(); +} else { + if (!is_array($vars['value'])) { + $vars['value'] = (int) $vars['value']; + $vars['value'] = array($vars['value']); + } +} + +// Initialise whether we're calling back or not +if (isset($vars['callback'])) { + $callback = $vars['callback']; +} else { + $callback = false; +} + +// We need to count the number of friends pickers on the page. +if (!isset($vars['friendspicker'])) { + global $friendspicker; + if (!isset($friendspicker)) { + $friendspicker = 0; + } + $friendspicker++; +} else { + $friendspicker = $vars['friendspicker']; +} - $users = array(); - $activeletters = array(); +$users = array(); +$activeletters = array(); - // Are we displaying form tags and submit buttons? - // (If we've been given a target, then yes! Otherwise, no.) - if (isset($vars['formtarget'])) { - $formtarget = $vars['formtarget']; - } else { - $formtarget = false; - } +// Are we displaying form tags and submit buttons? +// (If we've been given a target, then yes! Otherwise, no.) +if (isset($vars['formtarget'])) { + $formtarget = $vars['formtarget']; +} else { + $formtarget = false; +} - // Sort users by letter - if (is_array($friends) && sizeof($friends)) - foreach($friends as $user) { -
- if (is_callable('mb_substr')) - $letter = strtoupper(mb_substr($user->name,0,1));
- else
- $letter = strtoupper(substr($user->name,0,1)); - if (!substr_count($chararray,$letter)) { - $letter = "*"; - } - if (!isset($users[$letter])) { - $users[$letter] = array(); - } - $users[$letter][$user->name] = $user; +// Sort users by letter +if (is_array($friends) && sizeof($friends)) { + foreach($friends as $friend) { - } - - if (!$callback) { + $letter = elgg_substr($friend->name,0,1); + $letter = elgg_strtoupper($letter); + if (!elgg_substr_count($chararray,$letter)) { + $letter = "*"; + } + if (!isset($users[$letter])) { + $users[$letter] = array(); + } + $users[$letter][$friend->guid] = $friend; + } +} + +if (!$callback) { ?> -<div class="friends_picker"> +<div class="friends-picker-main-wrapper"> <?php - if (isset($vars['content'])) echo $vars['content']; - + if (isset($vars['content'])) { + echo $vars['content']; + } ?> - <div id="friends_picker_placeholder<?php echo $friendspicker; ?>"> + <div id="friends-picker_placeholder<?php echo $friendspicker; ?>"> <?php - } +} - if (!isset($vars['replacement'])) { +if (!isset($vars['replacement'])) { - if ($formtarget) { + if ($formtarget) { ?> - +<?php //@todo JS 1.8: no ?> <script language="text/javascript"> $(function() { // onload...do $('#collectionMembersForm<?php echo $friendspicker; ?>').submit(function() { @@ -126,38 +151,34 @@ data: inputs.join('&'), url: this.action, success: function(){ - $('a.collectionmembers<?php echo $friendspicker; ?>').click(); - } + $('a.collectionmembers<?php echo $friendspicker; ?>').click(); + } }); return false; - }) - }) + }) + }) </script> <?php - } -
- echo elgg_view('notifications/subscriptions/jsfuncs',$vars);
+ } + + echo elgg_view('notifications/subscriptions/jsfuncs',$vars); ?> - - <div class="friendsPicker_wrapper"> - <div id="friendsPicker<?php echo $friendspicker; ?>"> - <div class="friendsPicker_container"> + <div class="friends-picker-wrapper"> + <div id="friends-picker<?php echo $friendspicker; ?>"> + <div class="friends-picker-container"> <?php - // Initialise letters
- if (is_callable('mb_substr')) - $letter = mb_substr($chararray,0,1);
- else
- $letter = substr($chararray,0,1);
- $letpos = 0;
- $chararray .= '*'; - while (1 == 1) { + // Initialise letters + $letter = elgg_substr($chararray,0,1); + $letpos = 0; + $chararray .= '*'; + while (1 == 1) { ?> <div class="panel" title="<?php echo $letter; ?>"> <div class="wrapper"> @@ -165,91 +186,100 @@ <?php - if (isset($users[$letter])) { - ksort($users[$letter]); + if (isset($users[$letter])) { + ksort($users[$letter]); ?> -<table id="notificationstable" cellspacing="0" cellpadding="4" border="1" width="100%"> - <tr> - <td> </td>
-<?php
- $i = 0;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- if ($i > 0)
- echo "<td class=\"spacercolumn\"> </td>";
-?>
- <td class="<?php echo $method; ?>togglefield"><?php echo elgg_echo('notification:method:'.$method); ?></td>
-<?php
- $i++;
- }
+<table id="notificationstable" cellspacing="0" cellpadding="4" border="0" width="100%"> +<tr> + <td> </td> +<?php + $i = 0; + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + if ($i > 0) { + echo "<td class='spacercolumn'> </td>"; + } +?> + <td class="<?php echo $method; ?>togglefield"><?php echo elgg_echo('notification:method:'.$method); ?></td> +<?php + $i++; + } ?> - <td> </td> - </tr> + <td> </td> +</tr> <?php - if (is_array($users[$letter]) && sizeof($users[$letter]) > 0) - foreach($users[$letter] as $friend) { - if ($friend instanceof ElggUser ) { + if (is_array($users[$letter]) && sizeof($users[$letter]) > 0) { + foreach($users[$letter] as $friend) { + if ($friend instanceof ElggUser ) { - if (!in_array($letter,$activeletters)) - $activeletters[] = $letter; -
- $method = array();
- $fields = '';
- $i = 0;
-
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- if (in_array($friend->guid,$subs[$method])) {
- $checked[$method] = 'checked="checked"';
- } else {
- $checked[$method] = '';
- }
- if ($i > 0) $fields .= "<td class=\"spacercolumn\"> </td>";
- $fields .= <<< END
- <td class="{$method}togglefield">
- <a border="0" id="{$method}{$friend->guid}" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}{$friend->guid}');">
- <input type="checkbox" name="{$method}subscriptions[]" id="{$method}checkbox" onclick="adjust{$method}('{$method}{$friend->guid}');" value="{$friend->guid}" {$checked[$method]} /></a></td>
-END;
- $i++;
- } + if (!in_array($letter,$activeletters)) { + $activeletters[] = $letter; + } + + $method = array(); + $fields = ''; + $i = 0; + + foreach($NOTIFICATION_HANDLERS as $method => $foo) { + if (isset($subs[$method]) && in_array($friend->guid,$subs[$method])) { + $checked[$method] = 'checked="checked"'; + } else { + $checked[$method] = ''; + } + if ($i > 0) { + $fields .= "<td class='spacercolumn'> </td>"; + } + $fields .= <<< END +<td class="{$method}togglefield"> +<a border="0" id="{$method}{$friend->guid}" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}{$friend->guid}');"> +<input type="checkbox" name="{$method}subscriptions[]" id="{$method}checkbox" onclick="adjust{$method}('{$method}{$friend->guid}');" value="{$friend->guid}" {$checked[$method]} /></a></td> +END; + $i++; + } ?> - <tr> - <td class="namefield"><a href="<?php echo $friend->getURL(); ?>"> +<tr> + <td class="namefield"> + <a href="<?php echo $friend->getURL(); ?>"> <?php - echo elgg_view("profile/icon",array('entity' => $friend, 'size' => 'tiny', 'override' => true)); + echo elgg_view_entity_icon($friend, 'tiny', array('use_hover' => false)); ?> - </a><p class="namefieldlink"><a href="<?php echo $friend->getURL(); ?>"><?php echo $friend->name ?></p></td> - -<?php echo $fields; ?>
- - <td> </td> - </tr> + </a> + <p class="namefieldlink"> + <a href="<?php echo $friend->getURL(); ?>"><?php echo $friend->name ?></a> + </p> + </td> + +<?php echo $fields; ?> + +<td> </td> +</tr> <?php + } + } } - } ?> </table> <?php - } + } ?> </div> </div> <?php - $letpos++;
- if ($letpos == strlen($chararray)) break;
- if (is_callable('mb_substr'))
- $letter = mb_substr($chararray,$letpos,1);
- else
- $letter = substr($chararray,$letpos,1); + $letpos++; + if ($letpos == elgg_strlen($chararray)) { + break; } + $letter = elgg_substr($chararray,$letpos,1); + } ?> </div> @@ -257,10 +287,10 @@ END; </div> <?php - } else { - echo $vars['replacement']; - } - if (!$callback) { +} else { + echo $vars['replacement']; +} +if (!$callback) { ?> @@ -270,29 +300,30 @@ END; <?php - } +} ?> <?php - if (!isset($vars['replacement'])) { +if (!isset($vars['replacement'])) { ?> - +<?php //@todo JS 1.8: no ?> <script type="text/javascript"> // initialise picker - $("div#friendsPicker<?php echo $friendspicker; ?>").friendsPicker(<?php echo $friendspicker; ?>); + $("div#friends-picker<?php echo $friendspicker; ?>").friendsPicker(<?php echo $friendspicker; ?>); </script> -<script> - $(document).ready(function () { +<script type="text/javascript"> + $(function () { // manually add class to corresponding tab for panels that have content <?php - if (sizeof($activeletters) > 0) - $chararray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + if (sizeof($activeletters) > 0) { + $chararray .= "*"; foreach($activeletters as $letter) { - $tab = strpos($chararray, $letter) + 1; + $tab = elgg_strpos($chararray, $letter) + 1; ?> - $("div#friendsPickerNavigation<?php echo $friendspicker; ?> li.tab<?php echo $tab; ?> a").addClass("tabHasContent"); + $("div#friends-picker-navigation<?php echo $friendspicker; ?> li.tab<?php echo $tab; ?> a").addClass("tabHasContent"); <?php } + } ?> }); @@ -300,16 +331,7 @@ END; <?php - } +} ?> - - - -<div class="clearfloat"></div> -<div class="friendspicker_savebuttons"> - <input type="submit" value="<?php echo elgg_echo('save'); ?>" /> -<br /></div> - - -
\ No newline at end of file +</div> diff --git a/mod/notifications/views/default/notifications/subscriptions/groupsform.php b/mod/notifications/views/default/notifications/subscriptions/groupsform.php index 25bdd1be9..f1dbdcff8 100644 --- a/mod/notifications/views/default/notifications/subscriptions/groupsform.php +++ b/mod/notifications/views/default/notifications/subscriptions/groupsform.php @@ -1,97 +1,4 @@ -<?php
-
- global $NOTIFICATION_HANDLERS;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- $subsbig[$method] = get_entities_from_relationship('notify' . $method,$vars['user']->guid,false,'group','',0,'',99999);
- $tmparray = array();
- foreach($subsbig[$method] as $tmpent) {
- $tmparray[] = $tmpent->guid;
- }
- $subsbig[$method] = $tmparray;
- }
-
-?>
-<?php echo elgg_view_title(elgg_echo('notifications:subscriptions:changesettings:groups')); ?>
-<div class="contentWrapper">
- <div class="notification_methods">
-
- <?php
- echo elgg_view('notifications/subscriptions/jsfuncs',$vars);
- ?>
-
- <p>
- <?php
-
- echo elgg_echo('notifications:subscriptions:groups:description');
-
- ?>
- </p>
-<?php
-
- if (isset($vars['groups']) && !empty($vars['groups'])) {
-
-?>
-<table id="notificationstable" cellspacing="0" cellpadding="4" border="1" width="100%">
- <tr>
- <td> </td>
-<?php
- global $NOTIFICATION_HANDLERS;
- $i = 0;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- if ($i > 0)
- echo "<td class=\"spacercolumn\"> </td>";
-?>
- <td class="<?php echo $method; ?>togglefield"><?php echo elgg_echo('notification:method:'.$method); ?></td>
-<?php
- $i++;
- }
-?>
- <td> </td>
- </tr>
-<?php
- foreach($vars['groups'] as $group) {
-
- $fields = '';
- $i = 0;
-
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- if (in_array($group->guid,$subsbig[$method])) {
- $checked[$method] = 'checked="checked"';
- } else {
- $checked[$method] = '';
- }
- if ($i > 0) $fields .= "<td class=\"spacercolumn\"> </td>";
- $fields .= <<< END
- <td class="{$method}togglefield">
- <a border="0" id="{$method}{$group->guid}" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}{$group->guid}');">
- <input type="checkbox" name="{$method}subscriptions[]" id="{$method}checkbox" onclick="adjust{$method}('{$method}{$group->guid}');" value="{$group->guid}" {$checked[$method]} /></a></td>
-END;
- $i++;
- }
-
-?>
- <tr>
- <td class="namefield">
- <p>
- <?php echo $group->name; ?>
- </p>
- </td>
-<?php
- echo $fields;
-?>
- <td> </td>
- </tr>
-<?php
-
-
- }
-?>
-</table>
-<?php
- }
-
-?>
-
- <input type="submit" value="<?php echo elgg_echo('save'); ?>" />
- </div>
-</div>
\ No newline at end of file +<?php + +elgg_deprecated_notice("notifications/subscriptions/groupsform was moved to forms/notificationsettings/groupsave", 1.8); +echo elgg_view('forms/notificationsettings/groupsave');
\ No newline at end of file diff --git a/mod/notifications/views/default/notifications/subscriptions/jsfuncs.php b/mod/notifications/views/default/notifications/subscriptions/jsfuncs.php index 20ce25e1b..ace622581 100644 --- a/mod/notifications/views/default/notifications/subscriptions/jsfuncs.php +++ b/mod/notifications/views/default/notifications/subscriptions/jsfuncs.php @@ -1,54 +1,54 @@ -<?php
-
- global $NOTIFICATION_HANDLERS;
-
-?>
-
-<script type="text/javascript">
-
-$(document).ready(function () {
-<?php
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
-?>
- $('input[@type=checkbox]:checked').parent("a.<?php echo $method; ?>toggleOff").each(function(){
- $(this).removeClass('<?php echo $method; ?>toggleOff').addClass('<?php echo $method; ?>toggleOn');
- });
-
-<?php
- }
-?>
-
-});
-
- clickflag = 0;
-
-<?php
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
-?>
-function adjust<?php echo $method; ?>(linkId) {
- var obj = $(this).prev("a");
-
- if (obj.className == "<?php echo $method; ?>toggleOff") {
- obj.className = "<?php echo $method; ?>toggleOn";
- } else {
- obj.className = "<?php echo $method; ?>toggleOff";
- }
- return false;
-}
-function adjust<?php echo $method; ?>_alt(linkId) {
- var obj = document.getElementById(linkId);
-
- if (obj.className == "<?php echo $method; ?>toggleOff") {
- obj.className = "<?php echo $method; ?>toggleOn";
- $('#' + linkId).children("INPUT[type='checkbox']").attr('checked', true);
- } else {
- obj.className = "<?php echo $method; ?>toggleOff";
- $('#' + linkId).children("INPUT[type='checkbox']").attr('checked', false);
- }
- return false;
-}
-<?php
- }
-?>
-
+<?php + +global $NOTIFICATION_HANDLERS; + +?> +<?php //@todo JS 1.8: no ?> +<script type="text/javascript"> + +$(document).ready(function () { +<?php +foreach($NOTIFICATION_HANDLERS as $method => $foo) { +?> + $('input[type=checkbox]:checked').parent("a.<?php echo $method; ?>toggleOff").each(function(){ + $(this).removeClass('<?php echo $method; ?>toggleOff').addClass('<?php echo $method; ?>toggleOn'); + }); + +<?php +} +?> + +}); + + clickflag = 0; + +<?php +foreach($NOTIFICATION_HANDLERS as $method => $foo) { +?> +function adjust<?php echo $method; ?>(linkId) { + var obj = $(this).prev("a"); + + if (obj.className == "<?php echo $method; ?>toggleOff") { + obj.className = "<?php echo $method; ?>toggleOn"; + } else { + obj.className = "<?php echo $method; ?>toggleOff"; + } + return false; +} +function adjust<?php echo $method; ?>_alt(linkId) { + var obj = document.getElementById(linkId); + + if (obj.className == "<?php echo $method; ?>toggleOff") { + obj.className = "<?php echo $method; ?>toggleOn"; + $('#' + linkId).children("input[type='checkbox']").attr('checked', true); + } else { + obj.className = "<?php echo $method; ?>toggleOff"; + $('#' + linkId).children("input[type='checkbox']").attr('checked', false); + } + return false; +} +<?php +} +?> + </script>
\ No newline at end of file diff --git a/mod/notifications/views/default/notifications/subscriptions/personal.php b/mod/notifications/views/default/notifications/subscriptions/personal.php index e6959f739..cf05426e2 100644 --- a/mod/notifications/views/default/notifications/subscriptions/personal.php +++ b/mod/notifications/views/default/notifications/subscriptions/personal.php @@ -1,63 +1,73 @@ -<?php
-
- global $NOTIFICATION_HANDLERS;
-
-?>
-<div class="notification_personal">
-<div class="notification_methods">
- <h3>
- <?php echo elgg_echo('notifications:subscriptions:personal:title'); ?>
- </h3>
-</div>
-<table id="notificationstable" cellspacing="0" cellpadding="4" border="1" width="100%">
- <tr>
- <td> </td>
-<?php
- $i = 0;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- if ($i > 0)
- echo "<td class=\"spacercolumn\"> </td>";
-?>
- <td class="<?php echo $method; ?>togglefield"><?php echo elgg_echo('notification:method:'.$method); ?></td>
-<?php
- $i++;
- }
-?>
- <td> </td>
- </tr>
- <tr>
- <td class="namefield">
- <p>
- <?php echo elgg_echo('notifications:subscriptions:personal:description') ?>
- </p>
-
- </td>
-
-<?php
-
- $fields = '';
- $i = 0;
- foreach($NOTIFICATION_HANDLERS as $method => $foo) {
- if ($notification_settings = get_user_notification_settings($vars['user']->guid)) {
- if ($notification_settings->$method) {
- $personalchecked[$method] = 'checked="checked"';
- } else {
- $personalchecked[$method] = '';
- }
- }
- if ($i > 0) $fields .= "<td class=\"spacercolumn\"> </td>";
- $fields .= <<< END
- <td class="{$method}togglefield">
- <a border="0" id="{$method}personal" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}personal');">
- <input type="checkbox" name="{$method}personal" id="{$method}checkbox" onclick="adjust{$method}('{$method}personal');" value="1" {$personalchecked[$method]} /></a></td>
-END;
- $i++;
- }
- echo $fields;
-
-?>
-
- <td> </td>
- </tr>
-</table>
+<?php +/** + * @uses $vars['user'] ElggUser + */ + +/* @var ElggUser $user */ +$user = $vars['user']; + +global $NOTIFICATION_HANDLERS; + +?> +<div class="notification_personal"> +<div class="elgg-module elgg-module-info"> + <div class="elgg-head"> + <h3> + <?php echo elgg_echo('notifications:subscriptions:personal:title'); ?> + </h3> + </div> +</div> +<table id="notificationstable" cellspacing="0" cellpadding="4" width="100%"> + <tr> + <td> </td> +<?php +$i = 0; +foreach($NOTIFICATION_HANDLERS as $method => $foo) { + if ($i > 0) { + echo "<td class='spacercolumn'> </td>"; + } +?> + <td class="<?php echo $method; ?>togglefield"><?php echo elgg_echo('notification:method:'.$method); ?></td> +<?php + $i++; +} +?> + <td> </td> + </tr> + <tr> + <td class="namefield"> + <p> + <?php echo elgg_echo('notifications:subscriptions:personal:description') ?> + </p> + </td> + +<?php + +$fields = ''; +$i = 0; +foreach($NOTIFICATION_HANDLERS as $method => $foo) { + if ($notification_settings = get_user_notification_settings($user->guid)) { + if ($notification_settings->$method) { + $personalchecked[$method] = 'checked="checked"'; + } else { + $personalchecked[$method] = ''; + } + } + if ($i > 0) { + $fields .= "<td class='spacercolumn'> </td>"; + } + $fields .= <<< END + <td class="{$method}togglefield"> + <a border="0" id="{$method}personal" class="{$method}toggleOff" onclick="adjust{$method}_alt('{$method}personal');"> + <input type="checkbox" name="{$method}personal" id="{$method}checkbox" onclick="adjust{$method}('{$method}personal');" value="1" {$personalchecked[$method]} /></a></td> +END; + $i++; +} +echo $fields; + +?> + + <td> </td> + </tr> +</table> </div>
\ No newline at end of file |
