diff options
author | ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2009-02-05 16:52:50 +0000 |
---|---|---|
committer | ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2009-02-05 16:52:50 +0000 |
commit | 697a81f7d240e47e261421a462f3e28a92841a1c (patch) | |
tree | 1a189cd5fe5299905c8f8f0a9306658e2874f42b /mod/notifications/views/default/notifications/subscriptions/forminternals.php | |
parent | e721c3391124c1fdabf834551112a17cb199e415 (diff) | |
download | elgg-697a81f7d240e47e261421a462f3e28a92841a1c.tar.gz elgg-697a81f7d240e47e261421a462f3e28a92841a1c.tar.bz2 |
Fitter, happier, more productive notifications plugin.
git-svn-id: https://code.elgg.org/elgg/trunk@2657 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'mod/notifications/views/default/notifications/subscriptions/forminternals.php')
-rw-r--r-- | mod/notifications/views/default/notifications/subscriptions/forminternals.php | 340 |
1 files changed, 340 insertions, 0 deletions
diff --git a/mod/notifications/views/default/notifications/subscriptions/forminternals.php b/mod/notifications/views/default/notifications/subscriptions/forminternals.php new file mode 100644 index 000000000..122a00fb5 --- /dev/null +++ b/mod/notifications/views/default/notifications/subscriptions/forminternals.php @@ -0,0 +1,340 @@ +<?php + + // 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; }
+ }
+ } + + // Let the system know that the friends picker is in use + global $pickerinuse; + $pickerinuse = true; + + // 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']); + } + } + + // 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(); + + // 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) { + + $letter = strtoupper(substr($user->name,0,1)); + if ($letter >= "0" && $letter <= "9") { + $letter = "0"; + } + if (!isset($users[$letter])) { + $users[$letter] = array(); + } + $users[$letter][$user->name] = $user; + + } + + if (!$callback) { + +?> + +<div class="friends_picker"> + +<?php + + if (isset($vars['content'])) echo $vars['content']; + + +?> + + <div id="friends_picker_placeholder<?php echo $friendspicker; ?>"> + +<?php + + } + + if (!isset($vars['replacement'])) { + + if ($formtarget) { +?> + + <script language="text/javascript"> + $(function() { // onload...do + $('#collectionMembersForm<?php echo $friendspicker; ?>').submit(function() { + var inputs = []; + $(':input', this).each(function() { + if (this.type != 'checkbox' || (this.type == 'checkbox' && this.checked != false)) { + inputs.push(this.name + '=' + escape(this.value)); + } + }); + jQuery.ajax({ + type: "POST", + data: inputs.join('&'), + url: this.action, + success: function(){ + $('a.collectionmembers<?php echo $friendspicker; ?>').click(); + } + + }); + return false; + }) + }) + + </script> + +<?php + + } + +?> +<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
+ }
+?>
+ +}); +
+<?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> + + + <div class="friendsPicker_wrapper"> + <div id="friendsPicker<?php echo $friendspicker; ?>"> + <div class="friendsPicker_container"> +<?php + + // Initialise letters + $letter = 'A'; + while (1 == 1) { +?> + <div class="panel" title="<?php echo $letter; ?>"> + <div class="wrapper"> + <h3><?php echo $letter; ?></h3> + +<?php + + 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++;
+ }
+?> + <td> </td> + </tr> + +<?php + + 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 href="#" 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(); ?>"> +<?php + echo elgg_view("profile/icon",array('entity' => $friend, 'size' => 'tiny', 'override' => true)); +?> + </a><p class="namefieldlink"><a href="<?php echo $friend->getURL(); ?>"><?php echo $friend->name ?></p></td> + +<?php echo $fields; ?>
+ + <td> </td> + </tr> + + +<?php + } + } + +?> +</table> + +<?php + } + +?> + + </div> + </div> +<?php + if ($letter == 'Z') break; + $letter++; + } + +?> + </div> + </div> + </div> + +<?php + } else { + echo $vars['replacement']; + } + if (!$callback) { + +?> + + </div> +</div> + + +<?php + + } + +?> +<?php + if (!isset($vars['replacement'])) { +?> + +<script type="text/javascript"> + // initialise picker + $("div#friendsPicker<?php echo $friendspicker; ?>").friendsPicker(<?php echo $friendspicker; ?>); +</script> +<script> + $(document).ready(function () { + // manually add class to corresponding tab for panels that have content +<?php + if (sizeof($activeletters) > 0) + $chararray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + foreach($activeletters as $letter) { + $tab = strpos($chararray, $letter) + 1; +?> + $("div#friendsPickerNavigation<?php echo $friendspicker; ?> li.tab<?php echo $tab; ?> a").addClass("tabHasContent"); +<?php + } + +?> + }); +</script> + +<?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 |