Skip to content
Snippets Groups Projects
Commit 414c8cca authored by Seth Meranda's avatar Seth Meranda
Browse files

messages plugin

parent 5d97758c
Branches
No related tags found
No related merge requests found
Showing
with 1524 additions and 0 deletions
<?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-2009
* @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 (!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->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:nopermission"));
forward("mod/messages/?offset={$offset}&username=" . $_SESSION['user']->username);
}
?>
\ No newline at end of file
<?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-2009
* @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
$user = get_user($send_to);
if (!$user) {
register_error(elgg_echo("messages:user:nonexist"));
forward();
}
// Make sure the message field, send to field and title are not blank
if (empty($message_contents) || empty($send_to) || empty($title)) {
register_error(elgg_echo("messages:blank"));
forward("mod/messages/send.php");
// Otherwise, 'send' the message
} else {
$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");
}
// Success message
system_message(elgg_echo("messages:posted"));
// Forward to the users sentbox
forward('pg/messages/' . $_SESSION['user']->username);
} // end of message check if statement
?>
\ No newline at end of file
plugins/messages/graphics/icon_notifications_site.gif

929 B

<?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-2009
* @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 = get_entities_from_metadata("toId", $page_owner->getGUID(), "object", "messages", $page_owner->guid, $limit + 1, $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);
?>
\ No newline at end of file
<?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' => "Let it fly",
'messages:replying' => "Message replying to",
'messages:inbox' => "Inbox",
'messages:sendmessage' => "Send a message",
'messages:compose' => "Send 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.",
);
add_translation("en",$english);
?>
\ No newline at end of file
<?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 internal messages plugin. This plugin lets user send each other messages." />
<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>
<?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-2009
* @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();
// Get the full message object to read
$message = get_entity(get_input("message"));
// 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
/**
* 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
<?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-2009
* @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
<?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-2009
* @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 = get_entities_from_metadata('fromId',$_SESSION['user']->guid,'object','messages', $page_owner->guid, $limit, $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
<?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-2009
* @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:inbox'), $CONFIG->wwwroot . "pg/messages/" . $_SESSION['user']->username);
add_submenu_item(elgg_echo('messages:compose'), $CONFIG->wwwroot . "mod/messages/send.php");
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
extend_view('css','messages/css');
// Extend the elgg topbar
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
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 = get_entities_from_metadata_multi(array(
'toId' => $_SESSION['user']->guid,
'readYet' => 0,
'msg' => 1
),"object", "messages", $_SESSION['user']->guid, 9999, 0, "", 0, false);
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
<?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-2009
* @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;
}
<?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-2009
* @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');
?>
<div class="contentWrapper">
<form action="<?php echo $vars['url']; ?>action/messages/send" method="post" name="messageForm">
<?php
//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='' 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" => '',
));
?>
</label></p>
<p><input type="submit" class="submit_button" value="<?php echo elgg_echo("messages:fly"); ?>!" /></p>
</form>
</div>
\ No newline at end of file
<?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-2009
* @link http://elgg.com/
*
* @uses $vars['entity'] This is the message being replied to
*
*/
?>
<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='RE:<?php echo $vars['entity']->title; ?>' /></label></p>
<p><label><?php echo elgg_echo("messages:message"); ?>: <br /><textarea name='message' value='' class="input-textarea" /></textarea></label></p>
<p>
<?php
//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;
}
?>
\ No newline at end of file
<?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
<?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-2009
* @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
<?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-2009
* @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";
}
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; ?>">&laquo; <?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);
//get the icon
echo " " . elgg_view("profile/icon",array('entity' => $user_object, 'size' => 'tiny'));
//get the name
echo "<br class=\"clearfloat\" /><p>".elgg_echo('messages:to').": <b>" . $user_object->name . "</b><br />";
}else{
//get the icon
echo " " . elgg_view("profile/icon",array('entity' => get_entity($vars['entity']->fromId), 'size' => 'tiny'));
//get the name
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> &nbsp; "; ?> <?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='RE: <?php echo $vars['entity']->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
//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
}
}
?>
\ No newline at end of file
<?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-2009
* @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" >&nbsp;</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
<?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-2009
* @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'];
$baseurl = $baseurl = preg_replace('/[\&\?]offset\=[0-9]*/',"",$baseurl);
$nav = '';
if (sizeof($vars['entity']) > $limit) {
$newoffset = $offset + $limit;
$urladdition = 'offset='.$newoffset;
if (substr_count($baseurl,'?')) $nexturl=$baseurl . '&' . $urladdition; else $nexturl=$baseurl . '?' . $urladdition;
$nav .= '<a class="pagination_previous" href="'.$nexturl.'">&laquo; ' . elgg_echo('previous') . '</a> ';
}
if ($offset > 0) {
$newoffset = $offset - $limit;
if ($newoffset < 0) $newoffset = 0;
$urladdition = 'offset='.$newoffset;
if (substr_count($baseurl,'?')) $prevurl=$baseurl . '&' . $urladdition; else $prevurl=$baseurl . '?' . $urladdition;
$nav .= '<a class="pagination_next" href="'.$prevurl.'">' . elgg_echo('next') . ' &raquo;</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 {
"<p class='messages_nomessage_message'>" . elgg_echo("messages:nomessages") . "</p>";
}//end of the first if statement
?>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment