View source for Aktion: Wiki-Messenger

#||
||
Compatible with: !!(green)**R6.0**!!
Current version: 0.4
Credits: ((user:AhA AhA))

|{{toc numerate=1}} ||
||#

##""{{messenger}}""##

===Description===
Ein einfacher Wiki-Messenger, der es registrierten Nutzern ermöglicht sich innerhalb des Wikis Nachrichten zu schreiben.

Desweiteren hat man die Möglichkeit eine Kontaktliste zu führen und eigene Ordner anzulegen, um die erhaltenen Nachrichten ---entsprechend zu verwalten.
Der Absender kann Nachrichten markieren und wird darüber informiert, ob eine Nachricht gelesen wurde. 
Ebenfalls vorbereitet ist eine Codezeile, die in der header.php integriert werden kann - um den Nutzer sofort nach der Anmeldung ---im Wiki anzuzeigen, dass er neue Nachrichten bekommen hat.

Der Code basiert auf dem Script [[http://wikkawiki.org/WikkaMail Wikka Mail]] und wurde nur etwas angepasst und übersetzt.
Die **Filterfunktion** wurde komplett entfernt, da sie nur bedingt brauchbar bzw sinvoll ist. Mail wurde der Verwechslung wegen in Messenger umbenannt. 
Die Funktion Nachrichten löschen wurde ebenfalls überarbeitet, da die Nachrichten im ursprünglichen Code nicht aus der Datenbank ---gelöscht wurden, sondern lediglich nicht mehr im Posteingang angezeigt wurden. Die Nachricht ist dann zwar nicht mehr im ---Posteingang, aber es baut sich eine enorme Datenbank auf - da die Nachrichten ja nicht wirklich gelöscht wurden.

Die implementierte Hilfe für den Wiki-Messenger ist noch nicht ganz fertig, wird aber in kürze vervollständigt. 
Da aber so gut wie alle Funktionen selbsterklärend sind steht einem Einsatz eigentlich nichts im Wege.

===Installation==
Um das Message-System zu installieren, muss die bestehende Datenbank um 2 Tabellen erweitert werden sowie die nachfolgende PHP-Datei in den Ordner /action kopiert werden.

Aufgerufen wird der Messenger im Wiki mit ##""{{messenger}}""##

====Action====
Dieses Script muss unter dem Namen **messenger.php** gespeichert werden und in den Ordner /action kopiert werden.

{{include page="!/MessengerPhp"}}

====Template====
Dieses Script muss unter dem Namen **messenger.tpl** gespeichert werden und in den Ordner /action/template kopiert werden.

{{include page="!/MessengerTpl"}}

====Database====
Die bestehende Wacko-MySQL-Datenbank muss um die folgenden 2 Tabellen erweitert werden. Den Präfix für die Tabellen entsprechend ändern falls erforderlich.

%%(sql)
CREATE TABLE wacko_messenger (
  message_id INT(10) NOT NULL AUTO_INCREMENT,
  user_to_id INT(10) UNSIGNED NOT NULL DEFAULT '0',
  repliedto TINYINT(1) DEFAULT '0',
  folder TINYTEXT NOT NULL,
  user_from_id INT(10) UNSIGNED NOT NULL DEFAULT '0',
  urgent TINYINT(1) DEFAULT NULL,
  subject MEDIUMTEXT NOT NULL,
  message LONGTEXT NOT NULL,
  status TEXT NOT NULL,
  datesent DATETIME NULL DEFAULT NULL,
  viewrecipient TINYINT(1) DEFAULT '1',
PRIMARY KEY (message_id)
);

CREATE TABLE wacko_messenger_info (
  msg_info_id INT(10) NOT NULL AUTO_INCREMENT,
  owner_id INT(10) UNSIGNED NOT NULL DEFAULT '0',
  type TINYTEXT NOT NULL,
  info TINYTEXT NOT NULL,
  notes TINYTEXT,
PRIMARY KEY (msg_info_id)
);
%%

====Message sets====
en
%%
	// messenger
	'Inbox'						=> 'Inbox',
	'Compose'					=> 'Compose',
	'View'						=> 'View',
	'SentItems'					=> 'Sent Items',
	'Manage'					=> 'Manage',
	'Folders'					=> 'Folders',
	'Contacts'					=> 'Contacts',
	'Users'						=> 'Users',
	'SentMessage'				=> 'Sent Message',
	'Folder'					=> 'Folder',
	'MessageMoved'				=> 'Message moved to %1 folder.',
	'MessageNotMoved'			=> 'The message wasn\'t moved.',
	'MessageTopic'				=> 'Message Topic',
	'Sender'					=> 'Sender',
	'Date'						=> 'Date',
	'MoveToFolder'				=> 'Move to Folder',
	'Delete'					=> 'Delete',
	'MessageDeleted'			=> 'The message was deleted.',
	'MessageNotDeleted'			=> 'The message was not deleted.',
	'MessageNotRead'			=> 'This message has not been read yet!',
	'UrgentMessage'				=> 'This is an urgent message!',
	'MessageReplied'			=> 'You have replied to this message!',
	'Move'						=> 'Move',
	'DeleteItem'				=> 'Are you sure you want to delete this item?',
	'ClickArrow'				=> 'Clicking on the right arrow indicator [->] will add the users name to the contacts list.',
	'AlreadyReplied'			=> 'A + sign to the right of the message title indicates that you have replied to the message.',
	'NoMessagesInbox'			=> 'There are no currently no messages in the in-box.',
	'ComposeMessage'			=> 'Compose a message',
	'Subject'					=> 'Subject',
	'Message'					=> 'Message',
	'CharactersLeft'			=> '%1 characters left.',
	'Urgent'					=> 'Urgent?',
	'ContactList'				=> 'Contact List',
	'ClickName'					=> 'click on name to add to form',
	'ReplyToMessage'			=> 'Reply to the message',
	'OriginalMessage'			=> 'Original Message',
	'Fwd'						=> 'Fwd:',
	'MessageSentTo'				=> 'Message Sent to %1!',
	'MessagingForbidden'		=> 'You must be registered and logged in to use this Private Messaging System.',
	'SentTo'					=> 'Sent to',
	'Read'						=> 'Read?',
	'NoMessagesFolder'			=> 'There are no messages currently stored in this folder.',
	'Re'						=> 'Re:',
	'Reply'						=> 'Reply',
	'Forward'					=> 'Forward',
	'ForwardMessage'			=> 'Forward message',
	'Recipient'					=> 'Recipient',
	'ChooseRecipient'			=> 'Choose a recipient',
	'MessageDeleted'			=> 'Message was deleted.',
	'MessageNotDeleted'			=> 'The message was not deleted.',
	'ContactNames'				=> 'Contact Names',
	'Notes'						=> 'Notes',
	'Send'						=> 'Send',
	'Add'						=> 'Add',
	'ClickContact'				=> 'Clicking on the contact name will take you to message entry screen.',
	'ClickContact2'				=> 'Click on the name to add it to the contact list.',
	'FolderList'				=> 'Folder Management',
	'ClickFolder'				=> 'Clicking on the folder name will take you to that folder.',
%%

de
%%
	// messenger
	'Inbox'						=> 'Posteingang',
	'Compose'					=> 'Verfassen',
	'View'						=> 'Anzeigen',
	'SentItems'					=> 'Postausgang',
	'Manage'					=> 'Verwalten',
	'Folders'					=> 'Ordner',
	'Contacts'					=> 'Kontaktliste',
	'Users'						=> 'Benutzer',
	'SentMessage'				=> 'gesendete Nachrichten',
	'Folder'					=> 'Ordner',
	'MessageMoved'				=> 'Die Nachricht wurde in Ordner %1 verschoben.',
	'MessageNotMoved'			=> 'Die Nachricht wurde nicht verschoben!',
	'MessageTopic'				=> 'Message Topic',
	'Sender'					=> 'Absender',
	'Date'						=> 'Datum',
	'MoveToFolder'				=> 'Verschieben in Ordner',
	'Delete'					=> 'Löschen',
	'MessageDeleted'			=> 'Die Nachricht wurde gelöscht.',
	'MessageNotDeleted'			=> 'Die Nachricht wurde nicht gelöscht.',
	'MessageNotRead'			=> 'Diese Nachricht wurde noch nicht gelesen!',
	'UrgentMessage'				=> 'Dies ist eine dringende Nachricht!',
	'MessageReplied'			=> 'Auf diese Nachricht wurde bereits geantwortet!',
	'Move'						=> 'Verschieben',
	'DeleteItem'				=> 'Bist Du sicher, dass Du diesen Eintrag löschen möchtest?',
	'ClickArrow'				=> 'Wenn Sie auf die rechte Pfeilanzeige [->] klicken, wird der Name des Benutzers in die Kontaktliste aufgenommen.',
	'AlreadyReplied'			=> 'Ein +-Zeichen rechts neben dem Nachrichtentitel zeigt an, dass du auf die Nachricht geantwortet hast.',
	'NoMessagesInbox'			=> 'Zur Zeit sind keine Nachrichten im Posteingang.',
	'ComposeMessage'			=> 'Nachricht verfassen',
	'Subject'					=> 'Betreff',
	'Message'					=> 'Nachricht',
	'CharactersLeft'			=> '%1 Zeichen stehen noch zur Verfügung.',
	'Urgent'					=> 'Dringend?',
	'ContactList'				=> 'Kontakt-Liste',
	'ClickName'					=> 'Klick auf den Namen um den Benutzer als Empfänger einzusetzen',
	'ReplyToMessage'			=> 'Antwort erstellen',
	'OriginalMessage'			=> 'Ursprüngliche Nachricht',
	'Fwd'						=> 'Fwd:',
	'MessageSentTo'				=> 'Nachricht gesendet an %1!',
	'MessagingForbidden'		=> 'Du must registriert und angemeldet sein um das Message-System nutzen zu können!',
	'SentTo'					=> 'Sent to',
	'Read'						=> 'Gelesen',
	'NoMessagesFolder'			=> 'Zur Zeit sind keine Nachrichten in diesem Ordner!',
	'Re'						=> 'Re:',
	'Reply'						=> 'Antworten',
	'Forward'					=> 'Weiterleiten',
	'ForwardMessage'			=> 'Nachricht weiterleiten',
	'Recipient'					=> 'Empfänger',
	'ChooseRecipient'			=> 'Wähle einen Empfänger',
	'MessageDeleted'			=> 'Nachricht wurde gelöscht.',
	'MessageNotDeleted'			=> 'Die Nachricht wurde nicht gelöscht.',
	'ContactNames'				=> 'Name',
	'Notes'						=> 'Beschreibung',
	'Send'						=> 'Abschicken',
	'Add'						=> 'Hinzufügen',
	'ClickContact'				=> 'Klick auf den Benutzernamen um einem Benutzer aus der Kontaktliste eine Nachricht zu schreiben.',
	'ClickContact2'				=> 'Klick auf den Namen um den User zu Deiner Kontaktliste hinzuzufügen.',
	'FolderList'				=> 'Ordner verwalten',
	'ClickFolder'				=> 'Klick auf den Ordnernamen um einen Ordner zu öffnen!',

%%

===Notify there are messages in the Box==

You might wish to have a little icon appearing besite your Username after loging in, if you have still messages in your inbox. Here is a codesnippet wo do this for you.

Die nachfolgende Codezeile kann z.B. in die header.php eingefügt werden. Bekommt der Nutzer eine neue Nachricht, wird das dann an der entsprechende Stelle angezeigt sobald er sich anmeldet.

%%(php)
<?php
if ($this->db->load_all(
 		"SELECT status
 		FROM {$this->db->table_prefix}messenger
 		WHERE user_to_id = " . (int) $this->get_user_id() . "
 			AND folder = 'inbox'
 			AND status = 'pending'
 			AND viewrecipient = '1'
 		LIMIT 1")) != 0)
{
 		echo '<a title="Du hast neue Nachrichten."><span class="cite"><strong>Neue Nachricht</strong></span></a>';
}
%%
===Changelog===
0.1	Intitial version
0.2  Ported to WackoWiki, removed filter function
0.3  Ported to R6.0
0.4 Adds template  and localizes message sets

===ToDo===
  * --localization--
  * refactoring
  * table optimization
  * --use template--
  * --using wacko internal pagination--
  * put it in community repo