diff options
Diffstat (limited to 'mod/messages')
22 files changed, 1588 insertions, 0 deletions
diff --git a/mod/messages/actions/delete.php b/mod/messages/actions/delete.php new file mode 100644 index 000000000..17bae2808 --- /dev/null +++ b/mod/messages/actions/delete.php @@ -0,0 +1,73 @@ +<?php + + /** + * Elgg delete a message action page + * It is worth noting that due to the nature of a messaging system and the fact 2 people access + * the same message, messages don't actually delete, they are just removed from view for the user who deletes + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Need to be logged in to do this + gatekeeper(); + + // grab details sent from the form + $message_id_array = get_input('message_id'); + if (!is_array($message_id_array)) $message_id_array = array($message_id_array); + $type = get_input('type'); // sent message or inbox + $success = true; + $submit = get_input('submit'); + $offset = get_input('offset'); + + foreach($message_id_array as $message_id) { + + // get the message object + $message = get_entity($message_id); + + // Make sure we actually have permission to edit and that the object is of sub-type messages + if ($message && $message->getSubtype() == "messages") { + + if ($submit == elgg_echo('delete')) { + if ($message->delete()) { + } else { + $success = false; + } + } else { + if ($message->readYet = 1) { + } else { + $success = false; + } + } + + }else{ + + // display the error message + $success = false; + + } + + } + + if ($success) { + if ($submit == elgg_echo('delete')) { + system_message(elgg_echo("messages:deleted")); + } else { + system_message(elgg_echo("messages:markedread")); + } + // check to see if it is a sent message to be deleted + if($type == 'sent'){ + forward("mod/messages/sent.php?offset={$offset}"); + }else{ + forward("mod/messages/?username=" . $_SESSION['user']->username . "&offset={$offset}"); + } + } else { + register_error(elgg_echo("messages:notfound")); + forward($_SERVER['HTTP_REFERER']); + } + + +?>
\ No newline at end of file diff --git a/mod/messages/actions/send.php b/mod/messages/actions/send.php new file mode 100644 index 000000000..e48703e5a --- /dev/null +++ b/mod/messages/actions/send.php @@ -0,0 +1,64 @@ +<?php + + /** + * Elgg send a message action page + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Make sure we're logged in (send us to the front page if not) + if (!isloggedin()) forward(); + + // Get input data + $title = get_input('title'); // message title + $message_contents = get_input('message'); // the message + $send_to = get_input('send_to'); // this is the user guid to whom the message is going to be sent + $reply = get_input('reply',0); // this is the guid of the message replying to + + // Cache to the session to make form sticky + $_SESSION['msg_to'] = $send_to; + $_SESSION['msg_title'] = $title; + $_SESSION['msg_contents'] = $message_contents; + + if (empty($send_to)) { + register_error(elgg_echo("messages:user:blank")); + forward("mod/messages/send.php"); + } + + $user = get_user($send_to); + if (!$user) { + register_error(elgg_echo("messages:user:nonexist")); + forward("mod/messages/send.php"); + } + + // Make sure the message field, send to field and title are not blank + if (empty($message_contents) || empty($title)) { + register_error(elgg_echo("messages:blank")); + forward("mod/messages/send.php"); + } + + // Otherwise, 'send' the message + $result = messages_send($title,$message_contents,$send_to,0,$reply); + + // Save 'send' the message + if (!$result) { + register_error(elgg_echo("messages:error")); + forward("mod/messages/send.php"); + } + + // successful so uncache form values + unset($_SESSION['msg_to']); + unset($_SESSION['msg_title']); + unset($_SESSION['msg_contents']); + + // Success message + system_message(elgg_echo("messages:posted")); + + // Forward to the users inbox + forward('mod/messages/sent.php'); + +?> diff --git a/mod/messages/graphics/icon_notifications_site.gif b/mod/messages/graphics/icon_notifications_site.gif Binary files differnew file mode 100644 index 000000000..ca243a116 --- /dev/null +++ b/mod/messages/graphics/icon_notifications_site.gif diff --git a/mod/messages/index.php b/mod/messages/index.php new file mode 100644 index 000000000..b9cfd1097 --- /dev/null +++ b/mod/messages/index.php @@ -0,0 +1,55 @@ +<?php + + /** + * Elgg messages inbox page + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Load Elgg engine + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + // You need to be logged in! + gatekeeper(); + + // Get offset + $offset = get_input('offset',0); + + // Set limit + $limit = 10; + + // Get the logged in user, you can't see other peoples messages so use session id + $page_owner = $_SESSION['user']; + set_page_owner($page_owner->getGUID()); + + // Get the user's inbox, this will be all messages where the 'toId' field matches their guid + $messages = elgg_get_entities_from_metadata(array( + 'type' => 'object', + 'subtype' => 'messages', + 'metadata_name' => 'toId', + 'metadata_value' => $page_owner->getGUID(), + 'owner_guid' => $page_owner->guid, + 'limit' => $limit + 1, + 'offset' => $offset + )); + + // Set the page title + $area2 = elgg_view_title(elgg_echo("messages:inbox")); + + // Display them. The last variable 'page_view' is to allow the view page to know where this data is coming from, + // in this case it is the inbox, this is necessary to ensure the correct display + // $area2 .= elgg_view("messages/view",array('entity' => $messages, 'page_view' => "inbox", 'limit' => $limit, 'offset' => $offset)); + $area2 .= elgg_view("messages/forms/view",array('entity' => $messages, 'page_view' => "inbox", 'limit' => $limit, 'offset' => $offset)); + + // format + $body = elgg_view_layout("two_column_left_sidebar", '', $area2); + + + // Draw page + page_draw(sprintf(elgg_echo('messages:user'),$page_owner->name),$body); + +?> diff --git a/mod/messages/languages/en.php b/mod/messages/languages/en.php new file mode 100644 index 000000000..ab83eedf2 --- /dev/null +++ b/mod/messages/languages/en.php @@ -0,0 +1,87 @@ +<?php + + $english = array( + + /** + * Menu items and titles + */ + + 'messages' => "Messages", + 'messages:back' => "back to messages", + 'messages:user' => "Your inbox", + 'messages:sentMessages' => "Sent messages", + 'messages:posttitle' => "%s's messages: %s", + 'messages:inbox' => "Inbox", + 'messages:send' => "Send a message", + 'messages:sent' => "Sent messages", + 'messages:message' => "Message", + 'messages:title' => "Title", + 'messages:to' => "To", + 'messages:from' => "From", + 'messages:fly' => "Send", + 'messages:replying' => "Message replying to", + 'messages:inbox' => "Inbox", + 'messages:sendmessage' => "Send a message", + 'messages:compose' => "Compose a message", + 'messages:sentmessages' => "Sent messages", + 'messages:recent' => "Recent messages", + 'messages:original' => "Original message", + 'messages:yours' => "Your message", + 'messages:answer' => "Reply", + 'messages:toggle' => 'Toggle all', + 'messages:markread' => 'Mark read', + + 'messages:new' => 'New message', + + 'notification:method:site' => 'Site', + + 'messages:error' => 'There was a problem saving your message. Please try again.', + + 'item:object:messages' => 'Messages', + + /** + * Status messages + */ + + 'messages:posted' => "Your message was successfully sent.", + 'messages:deleted' => "Your messages were successfully deleted.", + 'messages:markedread' => "Your messages were successfully marked as read.", + + /** + * Email messages + */ + + 'messages:email:subject' => 'You have a new message!', + 'messages:email:body' => "You have a new message from %s. It reads: + + +%s + + +To view your messages, click here: + + %s + +To send %s a message, click here: + + %s + +You cannot reply to this email.", + + /** + * Error messages + */ + + 'messages:blank' => "Sorry; you need to actually put something in the message body before we can save it.", + 'messages:notfound' => "Sorry; we could not find the specified message.", + 'messages:notdeleted' => "Sorry; we could not delete this message.", + 'messages:nopermission' => "You do not have permission to alter that message.", + 'messages:nomessages' => "There are no messages to display.", + 'messages:user:nonexist' => "We could not find the recipient in the user database.", + 'messages:user:blank' => "You did not select someone to send this to.", + + ); + + add_translation("en",$english); + +?>
\ No newline at end of file diff --git a/mod/messages/manifest.xml b/mod/messages/manifest.xml new file mode 100644 index 000000000..c903c7658 --- /dev/null +++ b/mod/messages/manifest.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<plugin_manifest> + <field key="version" value="1.7" /> + <field key="description" value="Elgg internal messages plugin. This plugin lets user send each other messages." /> + <field key="website" value="http://www.elgg.org/" /> + <field key="licence" value="GNU Public License version 2" /> + <field key="elgg_version" value="2010030101" /> +</plugin_manifest> diff --git a/mod/messages/read.php b/mod/messages/read.php new file mode 100644 index 000000000..f09bd116f --- /dev/null +++ b/mod/messages/read.php @@ -0,0 +1,64 @@ +<?php + + /** + * Elgg read a message page + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Load Elgg engine + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + // If we're not logged in, forward to the front page + gatekeeper(); + + $mbox_type = get_input('type', 'inbox'); + + // Get the full message object to read + $message = get_entity(get_input("message")); + + // If no message, must have been deleted, send user to inbox/sent mail + if (!$message) { + $owner = get_loggedin_user(); + if ($mbox_type == 'sent') { + forward("mod/messages/sent.php"); + } else { + forward("pg/messages/{$owner->username}"); + } + } + + // If the message is being read from the inbox, mark it as read, otherwise don't. + // This stops a user who checks out a message they have sent having it being marked + // as read for the recipient + if(get_input('type') != "sent"){ + + // Mark the message as being read now + if ($message->getSubtype() == "messages") { + + //set the message metadata to 1 which equals read + $message->readYet = 1; + + } + + } + + // Get the logged in user + $page_owner = $_SESSION['user']; + set_page_owner($page_owner->getGUID()); + + // Display it + $area2 = elgg_view("messages/messages",array( + 'entity' => $message, + 'entity_owner' => $page_owner, + 'full' => true + )); + $body = elgg_view_layout("two_column_left_sidebar", '', $area2); + + // Display page + page_draw(sprintf(elgg_echo('messages:message')),$body); + +?>
\ No newline at end of file diff --git a/mod/messages/readme.txt b/mod/messages/readme.txt new file mode 100644 index 000000000..52d7e6b4a --- /dev/null +++ b/mod/messages/readme.txt @@ -0,0 +1,24 @@ +/** + * Elgg readme + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Dave Tosh <dave@elgg.com> + * @copyright Curverider Ltd 2008-2009 + * @link http://elgg.com/ +*/ + +Install: drop the plugin into your mod folder, that is it. + +Notes: + +Each message has a series of metadata which is used to control how the message displays. + +The metadata toggles are: + +hiddenFrom - used to 'delete' from the sentbox +hiddenTo - used to 'delete' from the inbox +readYet - 0 means no, 1 means yes it has been read + +This is actually a tricky little plugin as there is only ever one instance of a message, how it is viewed +depends on who is looked at and in what context.
\ No newline at end of file diff --git a/mod/messages/send.php b/mod/messages/send.php new file mode 100644 index 000000000..61e0c162d --- /dev/null +++ b/mod/messages/send.php @@ -0,0 +1,41 @@ +<?php + + /** + * Elgg send a message page + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Load Elgg engine + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + // If we're not logged in, forward to the front page + gatekeeper(); // if (!isloggedin()) forward(); + + // Get the current page's owner + $page_owner = page_owner_entity(); + if ($page_owner === false || is_null($page_owner)) { + $page_owner = $_SESSION['user']; + set_page_owner($page_owner->getGUID()); + } + + // Get the users friends; this is used in the drop down to select who to send the message to + $friends = $_SESSION['user']->getFriends('', 9999); + + // Set the page title + $area2 = elgg_view_title(elgg_echo("messages:sendmessage")); + + // Get the send form + $area2 .= elgg_view("messages/forms/message",array('friends' => $friends)); + + // Format + $body = elgg_view_layout("two_column_left_sidebar", '', $area2); + + // Draw page + page_draw(sprintf(elgg_echo('messages:send'),$page_owner->name),$body); + +?>
\ No newline at end of file diff --git a/mod/messages/sent.php b/mod/messages/sent.php new file mode 100644 index 000000000..c6213de2c --- /dev/null +++ b/mod/messages/sent.php @@ -0,0 +1,46 @@ +<?php + + /** + * Elgg sent messages page + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + // Load Elgg engine + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + // If we're not logged in, forward to the front page + if (!isloggedin()) forward(); + + // Get the logged in user + $page_owner = $_SESSION['user']; + set_page_owner($page_owner->guid); + + // Get offset + $offset = get_input('offset',0); + + // Set limit + $limit = 10; + + // Display all the messages a user owns, these will make up the sentbox + $messages = elgg_get_entities_from_metadata(array('metadata_name' => 'fromId', 'metadata_value' => $_SESSION['user']->guid, 'types' => 'object', 'subtypes' => 'messages', 'owner_guid' => $page_owner->guid, 'limit' => $limit, 'offset' => $offset)); + //$page_owner->getObjects('messages'); + + // Set the page title + $area2 = elgg_view_title(elgg_echo("messages:sentmessages")); + + // Set content + // $area2 .= elgg_view("messages/view",array('entity' => $messages, 'page_view' => "sent", 'limit' => $limit, 'offset' => $offset)); + $area2 .= elgg_view("messages/forms/view",array('entity' => $messages, 'page_view' => "sent", 'limit' => $limit, 'offset' => $offset)); + + // Format + $body = elgg_view_layout("two_column_left_sidebar", '', $area2); + + // Draw page + page_draw(sprintf(elgg_echo('messages:sentMessages'),$page_owner->name),$body); + +?>
\ No newline at end of file diff --git a/mod/messages/start.php b/mod/messages/start.php new file mode 100644 index 000000000..992d60901 --- /dev/null +++ b/mod/messages/start.php @@ -0,0 +1,338 @@ +<?php + + /** + * Elgg internal messages plugin + * This plugin lets user send each other messages. + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + /** + * Messages initialisation + * + * These parameters are required for the event API, but we won't use them: + * + * @param unknown_type $event + * @param unknown_type $object_type + * @param unknown_type $object + */ + + function messages_init() { + + // Load system configuration + global $CONFIG; + + //add submenu options + if (get_context() == "messages") { + add_submenu_item(elgg_echo('messages:compose'), $CONFIG->wwwroot . "mod/messages/send.php"); + add_submenu_item(elgg_echo('messages:inbox'), $CONFIG->wwwroot . "pg/messages/" . $_SESSION['user']->username); + add_submenu_item(elgg_echo('messages:sentmessages'), $CONFIG->wwwroot . "mod/messages/sent.php"); + } + + // Extend system CSS with our own styles, which are defined in the shouts/css view + elgg_extend_view('css','messages/css'); + + // Extend the elgg topbar + elgg_extend_view('elgg_topbar/extend','messages/topbar'); + + // Register a page handler, so we can have nice URLs + register_page_handler('messages','messages_page_handler'); + + // Register a URL handler for shouts posts + register_entity_url_handler('messages_url','object','messages'); + + // Extend hover-over and profile menu + elgg_extend_view('profile/menu/links','messages/menu'); + + // Register a notification handler for site messages + register_notification_handler("site", "messages_site_notify_handler"); + register_plugin_hook('notify:entity:message','object','messages_notification_msg'); + if (is_callable('register_notification_object')) + register_notification_object('object','messages',elgg_echo('messages:new')); + + // Shares widget + // add_widget_type('messages',elgg_echo("messages:recent"),elgg_echo("messages:widget:description")); + + // Override metadata permissions + register_plugin_hook('permissions_check:metadata','object','messages_can_edit_metadata'); + } + + /** + * Override the canEditMetadata function to return true for messages + * + */ + function messages_can_edit_metadata($hook_name, $entity_type, $return_value, $parameters) { + + global $messagesendflag; + + if ($messagesendflag == 1) { + $entity = $parameters['entity']; + if ($entity->getSubtype() == "messages") { + return true; + } + } + + return $return_value; + + } + + /** + * Override the canEdit function to return true for messages within a particular context. + * + */ + function messages_can_edit($hook_name, $entity_type, $return_value, $parameters) { + + global $messagesendflag; + + if ($messagesendflag == 1) { + $entity = $parameters['entity']; + if ($entity->getSubtype() == "messages") { + return true; + } + } + + return $return_value; + + } + + /** + * We really don't want to send a notification message when a message is sent, if the method is messages ... + * + */ + function messages_notification_msg($hook_name, $entity_type, $return_value, $parameters) { + + global $CONFIG, $messages_pm; + + if ($parameters['entity'] instanceof ElggEntity) { + + if ($parameters['entity']->getSubtype() == 'messages') { + + return false; + /*if (!$messages_pm) return false; + if ($parameters['method'] == 'email') { + return sprintf( + elgg_echo('messages:email:body'), + get_loggedin_user()->name, + strip_tags($parameters['entity']->description), + $CONFIG->wwwroot . "pg/messages/" . $user->username, + get_loggedin_user()->name, + $CONFIG->wwwroot . "mod/messages/send.php?send_to=" . get_loggedin_user()->guid + ); + } else if ($parameters['method'] == 'site') return false;*/ + } + } + return null; + + } + + /** + * Override the canEdit function to return true for messages within a particular context. + * + */ + function messages_can_edit_container($hook_name, $entity_type, $return_value, $parameters) { + + global $messagesendflag; + + if ($messagesendflag == 1) { + return true; + } + + return $return_value; + + } + + /** + * Send an internal message + * + * @param string $subject The subject line of the message + * @param string $body The body of the mesage + * @param int $send_to The GUID of the user to send to + * @param int $from Optionally, the GUID of the user to send from + * @param int $reply The GUID of the message to reply from (default: none) + * @param true|false $notify Send a notification (default: true) + * @param true|false $add_to_sent If true (default), will add a message to the sender's 'sent' tray + * @return true|false Depending on success + */ + function messages_send($subject, $body, $send_to, $from = 0, $reply = 0, $notify = true, $add_to_sent = true) { + + global $messagesendflag; + $messagesendflag = 1; + + global $messages_pm; + if ($notify) { + $messages_pm = 1; + } else { + $messages_pm = 0; + } + + // If $from == 0, set to current user + if ($from == 0) + $from = (int) get_loggedin_user()->guid; + + // Initialise a new ElggObject + $message_to = new ElggObject(); + $message_sent = new ElggObject(); + // Tell the system it's a message + $message_to->subtype = "messages"; + $message_sent->subtype = "messages"; + // Set its owner to the current user + // $message_to->owner_guid = $_SESSION['user']->getGUID(); + $message_to->owner_guid = $send_to; + $message_to->container_guid = $send_to; + $message_sent->owner_guid = $from; + $message_sent->container_guid = $from; + // For now, set its access to public (we'll add an access dropdown shortly) + $message_to->access_id = ACCESS_PUBLIC; + $message_sent->access_id = ACCESS_PUBLIC; + // Set its description appropriately + $message_to->title = $subject; + $message_to->description = $body; + $message_sent->title = $subject; + $message_sent->description = $body; + // set the metadata + $message_to->toId = $send_to; // the user receiving the message + $message_to->fromId = $from; // the user receiving the message + $message_to->readYet = 0; // this is a toggle between 0 / 1 (1 = read) + $message_to->hiddenFrom = 0; // this is used when a user deletes a message in their sentbox, it is a flag + $message_to->hiddenTo = 0; // this is used when a user deletes a message in their inbox + $message_sent->toId = $send_to; // the user receiving the message + $message_sent->fromId = $from; // the user receiving the message + $message_sent->readYet = 0; // this is a toggle between 0 / 1 (1 = read) + $message_sent->hiddenFrom = 0; // this is used when a user deletes a message in their sentbox, it is a flag + $message_sent->hiddenTo = 0; // this is used when a user deletes a message in their inbox + + $message_to->msg = 1; + $message_sent->msg = 1; + + // Save the copy of the message that goes to the recipient + $success = $message_to->save(); + + // Save the copy of the message that goes to the sender + if ($add_to_sent) $success2 = $message_sent->save(); + + $message_to->access_id = ACCESS_PRIVATE; + $message_to->save(); + + if ($add_to_sent) { + $message_sent->access_id = ACCESS_PRIVATE; + $message_sent->save(); + } + + // if the new message is a reply then create a relationship link between the new message + // and the message it is in reply to + if($reply && $success){ + $create_relationship = add_entity_relationship($message_sent->guid, "reply", $reply); + } + + + global $CONFIG; + $message_contents = strip_tags($body); + if ($send_to != get_loggedin_user() && $notify) + notify_user($send_to, get_loggedin_user()->guid, elgg_echo('messages:email:subject'), + sprintf( + elgg_echo('messages:email:body'), + get_loggedin_user()->name, + $message_contents, + $CONFIG->wwwroot . "pg/messages/" . $user->username, + get_loggedin_user()->name, + $CONFIG->wwwroot . "mod/messages/send.php?send_to=" . get_loggedin_user()->guid + ) + ); + + $messagesendflag = 0; + return $success; + + } + + /** + * messages page handler; allows the use of fancy URLs + * + * @param array $page From the page_handler function + * @return true|false Depending on success + */ + function messages_page_handler($page) { + + // The first component of a messages URL is the username + if (isset($page[0])) { + set_input('username',$page[0]); + } + + // The second part dictates what we're doing + if (isset($page[1])) { + switch($page[1]) { + case "read": set_input('message',$page[2]); + include(dirname(__FILE__) . "/read.php"); + return true; + break; + } + // If the URL is just 'messages/username', or just 'messages/', load the standard messages index + } else { + include(dirname(__FILE__) . "/index.php"); + return true; + } + + return false; + + } + + function messages_url($message) { + + global $CONFIG; + return $CONFIG->url . "pg/messages/" . $message->getOwnerEntity()->username . "/read/" . $message->getGUID(); + + } + + // A simple function to count the number of messages that are unread in a user's inbox + function count_unread_messages() { + + //get the users inbox messages + //$num_messages = get_entities_from_metadata("toId", $_SESSION['user']->getGUID(), "object", "messages", 0, 10, 0, "", 0, false); + $num_messages = elgg_get_entities_from_metadata(array('metadata_name_value_pairs' => array( + 'toId' => $_SESSION['user']->guid, + 'readYet' => 0, + 'msg' => 1 + ), 'types' => 'object', 'subtypes' => 'messages', 'owner_guid' => $_SESSION['user']->guid, 'limit' => 9999)); + + if (is_array($num_messages)) + $counter = sizeof($num_messages); + else + $counter = 0; + + return $counter; + + } + + function messages_site_notify_handler(ElggEntity $from, ElggUser $to, $subject, $message, array $params = NULL) + { + global $CONFIG; + + if (!$from) + throw new NotificationException(sprintf(elgg_echo('NotificationException:MissingParameter'), 'from')); + + if (!$to) + throw new NotificationException(sprintf(elgg_echo('NotificationException:MissingParameter'), 'to')); + + global $messages_pm; + if (!$messages_pm) + return messages_send($subject,$message,$to->guid,$from->guid,0,false,false); + else return true; + + } + + + // Make sure the messages initialisation function is called on initialisation + register_elgg_event_handler('init','system','messages_init'); + + register_plugin_hook('permissions_check','object','messages_can_edit'); + register_plugin_hook('container_permissions_check','object','messages_can_edit_container'); + + // Register actions + global $CONFIG; + register_action("messages/send",false,$CONFIG->pluginspath . "messages/actions/send.php"); + register_action("messages/delete",false,$CONFIG->pluginspath . "messages/actions/delete.php"); + +?>
\ No newline at end of file diff --git a/mod/messages/views/default/messages/css.php b/mod/messages/views/default/messages/css.php new file mode 100644 index 000000000..6a8a6ed30 --- /dev/null +++ b/mod/messages/views/default/messages/css.php @@ -0,0 +1,234 @@ +<?php + + /** + * Elgg Messages CSS extender + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + +?> + +/*------------------------------- +MESSAGING PLUGIN +-------------------------------*/ +#messages { + margin:0 10px 0 10px; +} +.actiontitle { + font-weight: bold; + font-size: 110%; + margin: 0 0 10px 0; +} +#messages .pagination { + margin:5px 0 5px 0; +} +#messages input[type="checkbox"] { + margin:0; + padding:0; + border:none; +} +.messages_buttonbank { + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background:white; + margin:5px 10px; + padding:5px; + text-align: right; +} +.messages_buttonbank input { + margin:0 0 0 10px; +} +.messages_buttonbank input[type="button"] { + font: 12px/100% Arial, Helvetica, sans-serif; + font-weight: bold; + color: #4690D6; + background:#dddddd; + border: 1px solid #999999; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + width: auto; + height: 25px; + padding: 2px 6px 2px 6px; + margin:0 0 0 10px; + cursor: pointer; +} +.messages_buttonbank input[type="button"]:hover { + background: #0054a7; + border: 1px solid #0054a7; + color:white; +} + +#messages td { + text-align: left; + vertical-align:middle; + padding: 5px; +} +#messages .message_sent { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + margin-bottom: 5px; + background: white; + border:1px solid #cccccc; +} +#messages .message_notread { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + margin-bottom: 5px; + background: #F7DAD8; + border:1px solid #ff6c7c; +} +#messages .message_read { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + margin-bottom: 5px; + background: white; + border:1px solid #cccccc; +} +#messages .message_notread td { + +} +#messages .message_read td { + +} + +#messages .delete_msg a { + display:block; + cursor: pointer; + width:14px; + height:14px; + margin:0; + background: url("<?php echo $vars['url']; ?>_graphics/icon_customise_remove.png") no-repeat right 0; + text-indent: -9000px; + float:right; +} +#messages .delete_msg a:hover { + background-position: right -16px; +} +/* IE6 */ +* html #messages .delete_msg a { background-position: right 4px; } +* html #messages .delete_msg a:hover { background-position: right 4px; } + +#messages .usericon, +#messages .groupicon { + float: left; + margin: 0 15px 0 0; +} + +#messages .msgsender { + color:#666666; + line-height: 1em; + margin:0; + padding:0; + float:left; +} +#messages .msgsender small { + color:#AAAAAA; +} + + +#messages .msgsubject { + font-size: 120%; + line-height: 100%; +} + +.msgsubject { + font-weight:bold; +} + +.messages_single_icon { + float: left; + width:110px; +} + +.messages_single_icon .usericon, +.messages_single_icon .groupicon { + float: left; + margin: 0 10px 10px 0; +} + +/* view and reply to message view */ +.message_body { + margin-left: 120px; +} +.message_body .messagebody { + padding:0; + margin:10px 0 10px 0; + font-size: 120%; + border-bottom:1px solid #cccccc; +} + +/* drop down message reply form */ +#message_reply_form { display:none; } + +.new_messages_count { + color:#666666; +} +/* tinyMCE container */ +#message_reply_editor #message_tbl { + width:680px !important; +} +/* IE6 */ +* html #message_reply_editor #message_tbl { width:676px !important;} + +#messages_return { + margin:4px 0 4px 10px; +} +#messages_return p { + margin:0; +} +.messages_single { + background: white; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + margin:0 10px 10px 10px; + padding:10px; +} +/* when displaying original msg in reply view */ +.previous_message { + background:#dedede; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + padding:10px; + margin:0 0 20px 0; +} +.previous_message p { + padding:0; + margin:0 0 5px 0; + font-size: 100%; +} + + + + +#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.sitetogglefield a.sitetoggleOff { + background: url(<?php echo $vars['url']; ?>mod/messages/graphics/icon_notifications_site.gif) no-repeat right 2px; +} +#notificationstable td.sitetogglefield a.sitetoggleOn { + background: url(<?php echo $vars['url']; ?>mod/messages/graphics/icon_notifications_site.gif) no-repeat right -36px; +} + + + + + + diff --git a/mod/messages/views/default/messages/forms/message.php b/mod/messages/views/default/messages/forms/message.php new file mode 100644 index 000000000..3a926b0d3 --- /dev/null +++ b/mod/messages/views/default/messages/forms/message.php @@ -0,0 +1,94 @@ +<?php + + /** + * Elgg send a message page + * + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + * + * @uses $vars['friends'] This is an array of a user's friends and is used to populate the list of + * people the user can message + * + */ + + //grab the user id to send a message to. This will only happen if a user clicks on the 'send a message' + //link on a user's profile or hover-over menu + $send_to = get_input('send_to'); + if ($send_to === "") + $send_to = $_SESSION['msg_to']; + + $msg_title = $_SESSION['msg_title']; + $msg_content = $_SESSION['msg_contents']; + + // clear sticky form cache in case user browses away from page and comes back + unset($_SESSION['msg_to']); + unset($_SESSION['msg_title']); + unset($_SESSION['msg_contents']); + + + +?> + <div class="contentWrapper"> + <form action="<?php echo $vars['url']; ?>action/messages/send" method="post" name="messageForm"> + + <?php + // security tokens. + echo elgg_view('input/securitytoken'); + + //check to see if the message recipient has already been selected + if($send_to){ + + //get the user object + $user = get_user($send_to); + + //draw it + echo "<label>" . elgg_echo("messages:to") . ":</label><div class=\"messages_single_icon\">" . elgg_view("profile/icon",array('entity' => $user, 'size' => 'tiny')) . $user->username; + echo "</div><br class=\"clearfloat\" />"; + //set the hidden input field to the recipients guid + echo "<input type=\"hidden\" name=\"send_to\" value=\"{$send_to}\" />"; + + + }else{ + + ?> + + <p><label><?php echo elgg_echo("messages:to"); ?>: </label> + <select name='send_to'> + <?php + //make the first option blank + echo "<option value=''></option>"; + foreach($vars['friends'] as $friend){ + + //populate the send to box with a user's friends + echo "<option value='{$friend->guid}'>" . $friend->name . "</option>"; + + } + + ?> + </select></p> + + <?php + + }//end send_to if statement + + ?> + + <p><label><?php echo elgg_echo("messages:title"); ?>: <br /><input type='text' name='title' value='<?php echo $msg_title; ?>' class="input-text" /></label></p> + <p class="longtext_editarea"><label><?php echo elgg_echo("messages:message"); ?>: <br /> + <?php + + echo elgg_view("input/longtext", array( + "internalname" => "message", + "value" => $msg_content, + )); + + ?> + </label></p> + <p><input type="submit" class="submit_button" value="<?php echo elgg_echo("messages:fly"); ?>" /></p> + + </form> + </div> diff --git a/mod/messages/views/default/messages/forms/reply.php b/mod/messages/views/default/messages/forms/reply.php new file mode 100644 index 000000000..7b949ec36 --- /dev/null +++ b/mod/messages/views/default/messages/forms/reply.php @@ -0,0 +1,53 @@ +<?php + + /** + * Elgg reply to a message form + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + * + * @uses $vars['entity'] This is the message being replied to + * + */ + + // fix for RE: RE: RE: that builds on replies + $reply_title = $vars['entity']->title; + if (strncmp($reply_title, "RE:", 3) != 0) { + $reply_title = "RE: " . $reply_title; + } +exit; + $reply_title = str_replace("'", "\\'", $reply_title); +?> + +<form action="<?php echo $vars['url']; ?>action/messages/send" method="post" name="messageForm"> + + <!-- populate the title space with the orginal message title, inserting re: before it --> + <p><label><?php echo elgg_echo("messages:title"); ?>: <br /><input type='text' name='title' class="input-text" value='<?php echo $reply_title; ?>' /></label></p> + <p><label><?php echo elgg_echo("messages:message"); ?>: <br /><textarea name='message' value='' class="input-textarea" /></textarea></label></p> + + <p> + <?php + echo elgg_view('input/securitytoken'); + //pass across the guid of the message being replied to + echo "<input type='hidden' name='reply' value='" . $vars['entity']->getGUID() . "' />"; + //pass along the owner of the message being replied to + echo "<input type='hidden' name='send_to' value='BAAA" . $vars['entity']->fromId . "' />"; + + ?> + <input type="submit" class="submit_button" value="<?php echo elgg_echo("messages:fly"); ?>" /> + </p> + +</form> + + <?php + //display the message you are replying to + if (isset($vars['entity'])) { + + echo "<h3>" . elgg_echo("messages:replying") . "</h3>"; + echo $vars['entity']->description; + + } + ?> diff --git a/mod/messages/views/default/messages/forms/view.php b/mod/messages/views/default/messages/forms/view.php new file mode 100644 index 000000000..adcd3a589 --- /dev/null +++ b/mod/messages/views/default/messages/forms/view.php @@ -0,0 +1,15 @@ +<?php + + $body = elgg_view("messages/view",$vars); + + $body .= '<div class="messages_buttonbank">'; + $body .= '<input type="hidden" name="type" value="'.$vars['page_view'].'" />'; + $body .= '<input type="hidden" name="offset" value="'.$vars['offset'].'" />'; + $body .= '<input type="submit" name="submit" value="'.elgg_echo('delete').'" /> '; + $body .= '<input type="submit" name="submit" value="'.elgg_echo('messages:markread').'" /> '; + $body .= '<input type="button" onclick="javascript:$(\'input[type=checkbox]\').click();" value="'.elgg_echo('messages:toggle').'" />'; + $body .= '</div>'; + + echo elgg_view('input/form',array('body' => $body, 'action' => $vars['url'] . 'action/messages/delete', 'method' => 'post')); + +?>
\ No newline at end of file diff --git a/mod/messages/views/default/messages/menu.php b/mod/messages/views/default/messages/menu.php new file mode 100644 index 000000000..9f8da1fb1 --- /dev/null +++ b/mod/messages/views/default/messages/menu.php @@ -0,0 +1,26 @@ +<?php + + /** + * Elgg hoverover extender for messages + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + //need to be logged in to send a message + if (isloggedin()) { + +?> + + <p class="user_menu_messages"> + <a href="<?php echo $vars['url']; ?>mod/messages/send.php?send_to=<?php echo $vars['entity']->guid; ?>"><?php echo elgg_echo("messages:sendmessage"); ?></a> + </p> + +<?php + + } + +?>
\ No newline at end of file diff --git a/mod/messages/views/default/messages/messages.php b/mod/messages/views/default/messages/messages.php new file mode 100644 index 000000000..cdc6e4483 --- /dev/null +++ b/mod/messages/views/default/messages/messages.php @@ -0,0 +1,165 @@ +<?php + + /** + * Elgg messages individual view + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + * + * + * @uses $vars['entity'] Optionally, the message to view + * @uses get_input('type') If the user accesses the message from their sentbox, this variable is passed + * and used to make sure the correct icon and name is displayed + */ + // set some variables to use below + if(get_input("type") == "sent"){ + + // send back to the users sentbox + $url = $vars['url'] . "mod/messages/sent.php"; + + //this is used on the delete link so we know which type of message it is + $type = "sent"; + + } else { + + //send back to the users inbox + $url = $vars['url'] . "pg/messages/" . $vars['user']->username; + + //this is used on the delete link so we know which type of message it is + $type = "inbox"; + + } + + // fix for RE: RE: RE: that builds on replies + $reply_title = $vars['entity']->title; + if (strncmp($reply_title, "RE:", 3) != 0) { + $reply_title = "RE: " . $reply_title; + } + + if (isloggedin()) + if (isset($vars['entity'])) { + if ($vars['entity']->toId == $vars['user']->guid + || $vars['entity']->owner_guid == $vars['user']->guid) { + +?> + <!-- get the correct return url --> + <div id="messages_return"><!-- start of messages_return div --> + <p><a href="<?php echo $url; ?>">« <?php echo elgg_echo('messages:back'); ?></a></p> + </div><!-- end of messages_return div --> + + <div class="messages_single"><!-- start of the message div --> + + <div class="messages_single_icon"><!-- start of the message_user_icon div --> + <!-- get the user icon, name and date --> + <?php + // we need a different user icon and name depending on whether the user is reading the message + // from their inbox or sentbox. If it is the inbox, then the icon and name will be the person who sent + // the message. If it is the sentbox, the icon and name will be the user the message was sent to + if ($type == "sent") { + //get an instance of the user who the message has been sent to so we can access the name and icon + $user_object = get_entity($vars['entity']->toId); + echo " " . elgg_view("profile/icon",array('entity' => $user_object, 'size' => 'tiny')); + echo "<br class=\"clearfloat\" /><p>".elgg_echo('messages:to').": <b>" . $user_object->name . "</b><br />"; + } else { + echo " " . elgg_view("profile/icon",array('entity' => get_entity($vars['entity']->fromId), 'size' => 'tiny')); + echo "<br class=\"clearfloat\" /><p>".elgg_echo('messages:from').": <b>" . get_entity($vars['entity']->fromId)->name . "</b><br />"; + } + ?> + <!-- get the time the message was sent --> + <small><?php echo friendly_time($vars['entity']->time_created); ?></small> + </p> + </div><!-- end of the message_user_icon div --> + + <div class="message_body"><!-- start of div message_body --> + + <?php + //if the message is a reply, display the message the reply was for + //I need to figure out how to get the description out using -> (anyone?) + if($main_message = $vars['entity']->getEntitiesFromRelationship("reply")){ + + if($type == "sent"){ + echo "<div class='previous_message'><h3>".elgg_echo('messages:original').":</h3><p>"; + }else{ + echo "<div class='previous_message'><h3>".elgg_echo('messages:yours').":</h3><p>"; + } + + echo $main_message[0][description] . "</p></div>"; + + } + ?> + + <!-- display the title --> + <div class="actiontitle"> + <h3><?php echo $vars['entity']->title; ?></h3> + </div> + + <!-- display the message --> + <div class="messagebody"> + <p><?php echo elgg_view('output/longtext',array('value' => $vars['entity']->description)); ?></p> + </div> + + <!-- display the edit options, reply and delete --> + <div class="message_options"><!-- start of the message_options div --> + + <script type="text/javascript"> + $(document).ready(function () { + // click function to toggle reply panel + $('a.message_reply').click(function () { + $('div#message_reply_form').slideToggle("medium"); + return false; + }); + }); + </script> + + + <p><?php if($type != "sent")echo "<a href=\"javascript:void(0);\" class='message_reply'>".elgg_echo('messages:answer')."</a> "; ?> <?php echo elgg_view("output/confirmlink", array( + 'href' => $vars['url'] . "action/messages/delete?message_id=" . $vars['entity']->getGUID() . "&type={$type}&submit=" . elgg_echo('delete'), + 'text' => elgg_echo('delete'), + 'confirm' => elgg_echo('deleteconfirm'), + )); ?> + </p> + </div><!-- end of the message_options div --> + + </div><!-- end of div message_body --> + + <!-- display the reply form --> + <div id="message_reply_form"> + <form action="<?php echo $vars['url']; ?>action/messages/send" method="post" name="messageForm"> + <!-- populate the title space with the orginal message title, inserting re: before it --> + <p><label><?php echo elgg_echo("messages:title"); ?>: <br /><input type='text' name='title' class="input-text" value="<?php echo htmlentities($reply_title); ?>" /></label></p> + <p class="longtext_editarea"><label><?php echo elgg_echo("messages:message"); ?>:</label></p> + <div id="message_reply_editor"> + <?php + + echo elgg_view("input/longtext", array( + "internalname" => "message", + "value" => '', + )); + + ?></div> + + <p> + <?php + // security tokens required. + echo elgg_view('input/securitytoken'); + + //pass across the guid of the message being replied to + echo "<input type='hidden' name='reply' value='" . $vars['entity']->getGUID() . "' />"; + //pass along the owner of the message being replied to + echo "<input type='hidden' name='send_to' value='" . $vars['entity']->fromId . "' />"; + + ?> + <input type="submit" class="submit_button" value="<?php echo elgg_echo("messages:fly"); ?>" /> + </p> + </form> + </div><!-- end of div reply_form --> + + </div><!-- end of the message div --> + +<?php + } + } +?> diff --git a/mod/messages/views/default/messages/topbar.php b/mod/messages/views/default/messages/topbar.php new file mode 100644 index 000000000..179167561 --- /dev/null +++ b/mod/messages/views/default/messages/topbar.php @@ -0,0 +1,38 @@ +<?php + + /** + * Elgg messages topbar extender + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + //need to be logged in to send a message + gatekeeper(); + + //get unread messages + $num_messages = count_unread_messages(); + if($num_messages){ + $num = $num_messages; + } else { + $num = 0; + } + + if($num == 0){ + +?> + + <a href="<?php echo $vars['url']; ?>pg/messages/<?php echo $_SESSION['user']->username; ?>" class="privatemessages" > </a> + +<?php + }else{ +?> + + <a href="<?php echo $vars['url']; ?>pg/messages/<?php echo $_SESSION['user']->username; ?>" class="privatemessages_new" >[<?php echo $num; ?>]</a> + +<?php + } +?>
\ No newline at end of file diff --git a/mod/messages/views/default/messages/view.php b/mod/messages/views/default/messages/view.php new file mode 100644 index 000000000..501be8bb3 --- /dev/null +++ b/mod/messages/views/default/messages/view.php @@ -0,0 +1,150 @@ +<?php + + /** + * Elgg messages view page + * + * @package ElggMessages + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + * + * @uses $vars['entity'] An array of messages to view + * @uses $vars['page_view'] This is the page the messages are being accessed from; inbox or sentbox + * + */ + + $limit = $vars['limit']; if (empty($limit)) $limit = 10; + $offset = $vars['offset']; if (!isset($offset)) $offset = 0; + + // If there are any messages to view, view them + if (isloggedin()) + if (is_array($vars['entity']) && sizeof($vars['entity']) > 0) { + +?> + <div id="messages" /><!-- start the main messages wrapper div --> + +<?php + + // get the correct display for the inbox view + if($vars['page_view'] == "inbox") { + + $counter = 0; + + foreach($vars['entity'] as $message) { + if ($message->owner_guid == $vars['user']->guid + || $message->toId == $vars['user']->guid) { + + //make sure to only display the messages that have not been 'deleted' (1 = deleted) + if($message->hiddenFrom != 1){ + + // check to see if the message has been read, if so, get the correct background color + if($message->readYet == 1){ + echo "<div class=\"message_read\" />"; + }else{ + echo "<div class=\"message_notread\" />"; + } + + //set the table + echo "<table width=\"100%\" cellspacing='0'><tr>"; + //get the icon of the user who owns the message + $from = get_entity($message->fromId); + echo "<td width='200px'>" . elgg_view("profile/icon",array('entity' => $from, 'size' => 'tiny')) . "<div class='msgsender'><b>" . $from->name . "</b><br /><small>" . friendly_time($message->time_created) . "</small></div></td>"; + //display the message title + echo "<td><div class='msgsubject'>"; + echo "<input type=\"checkbox\" name=\"message_id[]\" value=\"{$message->guid}\" /> "; + echo "<a href=\"{$message->getURL()}\">" . $message->title . "</a></div></td>"; + //display the link to 'delete' + + echo "<td width='70px'>"; + echo "<div class='delete_msg'>" . elgg_view("output/confirmlink", array( + 'href' => $vars['url'] . "action/messages/delete?message_id=" . $message->getGUID() . "&type=inbox&submit=" . urlencode(elgg_echo('delete')), + 'text' => elgg_echo('delete'), + 'confirm' => elgg_echo('deleteconfirm'), + )) . "</div>"; + + echo "</td></tr></table>"; + echo "</div>"; // close the message background div + + }//end of hiddenFrom if statement + } // end of user check + + $counter++; + if ($counter == $limit) break; + + }//end of for each loop + + }//end of inbox if statement + + // get the correct display for the sentbox view + if($vars['page_view'] == "sent") { + + $counter = 0; + + foreach($vars['entity'] as $message) { + + //make sure to only display the messages that have not been 'deleted' (1 = deleted) + if($message->hiddenTo != 1){ + + //get the correct user entity + $user = get_entity($message->toId); + echo "<div class=\"message_sent\" />"; + echo "<table width=\"100%\" cellspacing='0'><tr>"; + + //get the icon for the user the message was sent to + echo "<tr><td width='200px'>" . elgg_view("profile/icon",array('entity' => $user, 'size' => 'tiny')) . "<div class='msgsender'><b>" . $user->name . "</b><br /><small>" . friendly_time($message->time_created) . "</small></div></td>"; + //display the message title + echo "<td><div class='msgsubject'>"; + echo "<input type=\"checkbox\" name=\"message_id[]\" value=\"{$message->guid}\" /> "; + echo "<a href=\"{$message->getURL()}?type=sent\">" . $message->title . "</a></div></td>"; + //display the link to 'delete' + + echo "<td width='70px'>"; + echo "<div class='delete_msg'>" . elgg_view("output/confirmlink", array( + 'href' => $vars['url'] . "action/messages/delete?message_id=" . $message->getGUID() . "&type=sent&submit=" . urlencode(elgg_echo('delete')), + 'text' => elgg_echo('delete'), + 'confirm' => elgg_echo('deleteconfirm'), + )) . "</div>"; + echo "</td></tr></table></div>"; + + }//close hiddeTo if statement + + $counter++; + if ($counter == $limit) break; + + }//close foreach + + }//close page_view sent if statement + + $baseurl = $_SERVER['REQUEST_URI']; + $nav = ''; + + if (sizeof($vars['entity']) > $limit) { + $newoffset = $offset + $limit; + $nexturl = elgg_http_add_url_query_elements($baseurl, array('offset' => $newoffset)); + + $nav .= '<a class="pagination_previous" href="'.$nexturl.'">« ' . elgg_echo('previous') . '</a> '; + } + + if ($offset > 0) { + $newoffset = $offset - $limit; + if ($newoffset < 0) $newoffset = 0; + + $prevurl = elgg_http_add_url_query_elements($baseurl, array('offset' => $newoffset)); + + $nav .= '<a class="pagination_next" href="'.$prevurl.'">' . elgg_echo('next') . ' »</a> '; + } + + + if (!empty($nav)) { + echo '<div class="pagination"><p>'.$nav.'</p><div class="clearfloat"></div></div>'; + } + + echo "</div>"; // close the main messages wrapper div + + } else { + + echo "<div class=\"contentWrapper\"><p class='messages_nomessage_message'>" . elgg_echo("messages:nomessages") . "</p></div>"; + + }//end of the first if statement +?> diff --git a/mod/messages/views/default/object/messages.php b/mod/messages/views/default/object/messages.php new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/mod/messages/views/default/object/messages.php diff --git a/mod/messages/views/default/widgets/messages/edit.php b/mod/messages/views/default/widgets/messages/edit.php new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/mod/messages/views/default/widgets/messages/edit.php diff --git a/mod/messages/views/default/widgets/messages/view.php b/mod/messages/views/default/widgets/messages/view.php new file mode 100644 index 000000000..e4d138562 --- /dev/null +++ b/mod/messages/views/default/widgets/messages/view.php @@ -0,0 +1,13 @@ + + <?php + + $num_messages = count_unread_messages(); + + if($num_messages == 0) + echo "<h3 class=\"new_messages_count\">You have no new messages.</h3>"; + else { + echo "<h3 class=\"new_messages_count\">" . $num_messages . " new message(s).</h3>"; + echo "<a href=\"" . $vars['url'] . "pg/messages/" . $_SESSION['user']->username ."\">check them out</a>"; + } + + ?> |