Commits

Christian Fischer committed b96db48

Shoutbox v0.5:
- Zugriffsteuerung über die Gruppenrechte (die Gäste-Option wurde dafür etfernt)
- User-Online-Liste in der Shoutbox-Page (das SB-Frame selbst hat keine Online-Liste)
- Die üblichen Bugfixes: Hintergrundlogo im iframe, unvollständige Dateien (verdammtes Ant), Konflikt mit dem SEO-Plugin

Comments (0)

Files changed (19)

acptemplates/shoutboxMessageList.tpl

 			<thead class="cat">
 				<tr class="tableHead">
 					<th>&nbsp;</th>
-					<th>wcf.acp.shoutbox.listheader.id</th>
-					<th>wcf.acp.shoutbox.listheader.time</th>
-					<th>wcf.acp.shoutbox.listheader.from</th>
-					<th>wcf.acp.shoutbox.listheader.message</th>
+					<th>{lang}wcf.acp.shoutbox.listheader.id{/lang}</th>
+					<th>{lang}wcf.acp.shoutbox.listheader.time{/lang}</th>
+					<th>{lang}wcf.acp.shoutbox.listheader.from{/lang}</th>
+					<th>{lang}wcf.acp.shoutbox.listheader.message{/lang}</th>
 				</tr>
 			</thead>
 			

dist/net.northshirebund.wbb.shoutbox-0.5.tar

Binary file added.

dist/net.northshirebund.wbb.shoutbox-0.5.tar.gz

Binary file added.

dist/net.northshirebund.wbb.shoutbox-0.5.zip

Binary file added.

doc/shoutbox.odt

Binary file added.

files/lib/acp/page/ShoutboxMessageListPage.class.php

  * @package	net.northshirebund.wbb.shoutbox
  */
 class ShoutboxMessageListPage extends AbstractPage {
-	public $templateName = 'shoutboxMessageList';
-
+	public $templateName	= 'shoutboxMessageList';
 
 	/**
 	 * @see Page::assignVariables()
 		}
 		
 		// get messages in the shoutbox
-		$sql = 'SELECT * FROM wcf'.WCF_N.'_shoutbox sb LEFT JOIN wcf'.WCF_N.'_user u USING(userid) WHERE to_user>0 ORDER BY message_time ASC';
+		$sql = 'SELECT * FROM wcf'.WCF_N.'_shoutbox sb LEFT JOIN wcf'.WCF_N.'_user u USING(userid) WHERE to_user=0 ORDER BY message_time ASC';
 		$result = WCFACP::getDB()->sendQuery($sql);
 		
 		while($row = WCFACP::getDB()->fetchArray($result)) {

files/lib/page/ShoutboxContentPage.class.php

 require_once(WCF_DIR.'lib/data/message/bbcode/MessageParser.class.php');
 require_once(WCF_DIR.'lib/data/message/bbcode/URLParser.class.php');
 require_once(WCF_DIR.'lib/data/message/bbcode/URLBBCode.class.php');
+require_once(WCF_DIR.'lib/util/StringUtil.class.php');
 
 
 /**
 			}
 			
 			if($message != '') {
-				if($userid || SHOUTBOX_ALLOWGUESTS) {
+				if(WCF::getUser()->getPermission('user.shoutbox.canWrite')) {
 					if(substr($message, 0, 2) == '/w') {
 						$message = ltrim(substr($message, 2));
 						$name    = null;
 							break;
 						}
 						
-						if($toUser == -1) {
-							$this->errormessage = eval('return "' . WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.usernotfound') . '";');
+						if(WCF::getUser()->getPermission('user.shoutbox.canWhisper')) {
+							if($toUser == -1) {
+								$this->errormessage = eval('return "' . WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.usernotfound') . '";');
+							}
+							else {
+								WCF::getDB()->sendQuery("
+									INSERT INTO wcf".WCF_N."_shoutbox(userid,to_user,message_text,message_time,message_ip)
+									VALUES ('".$userid."','".$toUser."','".escapeString($message)."','".TIME_NOW."', '".UserUtil::getIpAddress()."')"
+								);
+									
+								$messageid = WCF::getDB()->getInsertID();
+								
+								WCF::getDB()->sendQuery("DELETE FROM wcf".WCF_N."_shoutbox WHERE message_id<'".($messageid-SHOUTBOX_STOREDMESSAGES)."'");
+							}
 						}
 						else {
-							WCF::getDB()->sendQuery("
-								INSERT INTO wcf".WCF_N."_shoutbox(userid,to_user,message_text,message_time,message_ip)
-								VALUES ('".$userid."','".$toUser."','".escapeString($message)."','".TIME_NOW."', '".UserUtil::getIpAddress()."')"
-							);
-								
-							$messageid = WCF::getDB()->getInsertID();
-					 		
-					 		WCF::getDB()->sendQuery("DELETE FROM wcf".WCF_N."_shoutbox WHERE message_id<'".($messageid-SHOUTBOX_STOREDMESSAGES)."'");
+							$this->errormessage = WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.nowhisperallowed');
 						}
 					}
 					else {
 				 		WCF::getDB()->sendQuery("DELETE FROM wcf".WCF_N."_shoutbox WHERE message_id<'".($messageid-SHOUTBOX_STOREDMESSAGES)."'");
 				 	}
 				}
+				else {
+					$this->errormessage = WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.nopostingallowed');
+				}
 			}
 		}
 		
 		$parser = MessageParser::getInstance();
 		$parser->setOutputType('text/html');
 		
+		$canWhisper = WCF::getUser()->getPermission('user.shoutbox.canWhisper');
+		
 		$sql = '
 			SELECT		sb.*, 
 						u.userID, u.username,
 				$row['username'] = WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.guest');
 			}
 			
+			// set whisperable username, if the current user is able to whisper
+			if ($row['userID'] != 0 && $row['userID'] != WCF::getUser()->userID && $canWhisper) {
+				$row['username_whisper'] = '<a href="javascript:parent.sbWhisperTo(\''.StringUtil::encodeHTML($row['username']).'\');">'.$row['username'].'</a>';
+			}
+			else {
+				$row['username_whisper'] = $row['username'];
+			}
+			
 			array_push($this->messages, $row);
 			
 			$this->lastmessage = max($this->lastmessage, $row['message_time']);

lang/net.northshirebund.wbb.shoutbox.xml

-<?xml version="1.0" encoding="UTF-8"?><?mso-application progid="Excel.Sheet"?>
-<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet"><OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><Colors><Color><Index>3</Index><RGB>#c0c0c0</RGB></Color><Color><Index>4</Index><RGB>#ff0000</RGB></Color></Colors></OfficeDocumentSettings><ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"><WindowHeight>9000</WindowHeight><WindowWidth>13860</WindowWidth><WindowTopX>240</WindowTopX><WindowTopY>75</WindowTopY><ProtectStructure>False</ProtectStructure><ProtectWindows>False</ProtectWindows></ExcelWorkbook><Styles><Style ss:ID="Default" ss:Name="Default"/><Style ss:ID="Result" ss:Name="Result"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/></Style><Style ss:ID="Result2" ss:Name="Result2"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/><NumberFormat ss:Format="General"/></Style><Style ss:ID="Heading" ss:Name="Heading"><Alignment ss:Horizontal="Center"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="Heading1" ss:Name="Heading1"><Alignment ss:Horizontal="Center" ss:Rotate="90"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="co1"/><Style ss:ID="co2"/><Style ss:ID="co3"/><Style ss:ID="co4"/><Style ss:ID="ta1"/></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="Default" ss:Width="231.2504"/><Column ss:StyleID="Default" ss:Width="210.8126"/><Column ss:StyleID="Default" ss:Width="196.6394"/><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:Index="2"><Data ss:Type="String">De</Data></Cell><Cell><Data ss:Type="String">En</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.title</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.description</Data></Cell><Cell><Data ss:Type="String">Ein Chat-Frame</Data></Cell><Cell><Data ss:Type="String">A chat frame</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.guest</Data></Cell><Cell><Data ss:Type="String">Gast</Data></Cell><Cell><Data ss:Type="String">Guest</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.usernotfound</Data></Cell><Cell><Data ss:Type="String">Benutzer $name wurde nicht gefunden.</Data></Cell><Cell><Data ss:Type="String">User $name not found.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.whisperTo</Data></Cell><Cell><Data ss:Type="String">An</Data></Cell><Cell><Data ss:Type="String">To</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.whisperFrom</Data></Cell><Cell><Data ss:Type="String">Von</Data></Cell><Cell><Data ss:Type="String">From</Data></Cell></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>
+<?xml version="1.0" encoding="UTF-8"?><?mso-application progid="Excel.Sheet"?>
+<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet"><OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><Colors><Color><Index>3</Index><RGB>#c0c0c0</RGB></Color><Color><Index>4</Index><RGB>#ff0000</RGB></Color></Colors></OfficeDocumentSettings><ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"><WindowHeight>9000</WindowHeight><WindowWidth>13860</WindowWidth><WindowTopX>240</WindowTopX><WindowTopY>75</WindowTopY><ProtectStructure>False</ProtectStructure><ProtectWindows>False</ProtectWindows></ExcelWorkbook><Styles><Style ss:ID="Default" ss:Name="Default"/><Style ss:ID="Result" ss:Name="Result"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/></Style><Style ss:ID="Result2" ss:Name="Result2"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/><NumberFormat ss:Format="General"/></Style><Style ss:ID="Heading" ss:Name="Heading"><Alignment ss:Horizontal="Center"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="Heading1" ss:Name="Heading1"><Alignment ss:Horizontal="Center" ss:Rotate="90"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="co1"/><Style ss:ID="co2"/><Style ss:ID="co3"/><Style ss:ID="co4"/><Style ss:ID="ta1"/></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="Default" ss:Width="271.9559"/><Column ss:StyleID="Default" ss:Width="226.2897"/><Column ss:StyleID="Default" ss:Width="196.6394"/><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:Index="2"><Data ss:Type="String">De</Data></Cell><Cell><Data ss:Type="String">En</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.title</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.description</Data></Cell><Cell><Data ss:Type="String">Ein Chat-Frame</Data></Cell><Cell><Data ss:Type="String">A chat frame</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.guest</Data></Cell><Cell><Data ss:Type="String">Gast</Data></Cell><Cell><Data ss:Type="String">Guest</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.usernotfound</Data></Cell><Cell><Data ss:Type="String">Benutzer $name wurde nicht gefunden.</Data></Cell><Cell><Data ss:Type="String">User $name not found.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.whisperTo</Data></Cell><Cell><Data ss:Type="String">An</Data></Cell><Cell><Data ss:Type="String">To</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.whisperFrom</Data></Cell><Cell><Data ss:Type="String">Von</Data></Cell><Cell><Data ss:Type="String">From</Data></Cell></Row><Row ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.nowhisperallowed</Data></Cell><Cell><Data ss:Type="String">Du darfst leider keine geflüsterten Nachrichten versenden.</Data></Cell><Cell><Data ss:Type="String">You are not allowed to send whisper messages to other users.</Data></Cell></Row><Row ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.nopostingallowed</Data></Cell><Cell><Data ss:Type="String">Du darfst hier leider keine Nachrichten schreiben.</Data></Cell><Cell><Data ss:Type="String">You are not allowed to post messages.</Data></Cell></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

lang/wcf.acp.group.xml

+<?xml version="1.0" encoding="UTF-8"?><?mso-application progid="Excel.Sheet"?>
+<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet"><OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><Colors><Color><Index>3</Index><RGB>#c0c0c0</RGB></Color><Color><Index>4</Index><RGB>#ff0000</RGB></Color></Colors></OfficeDocumentSettings><ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"><WindowHeight>9000</WindowHeight><WindowWidth>13860</WindowWidth><WindowTopX>240</WindowTopX><WindowTopY>75</WindowTopY><ProtectStructure>False</ProtectStructure><ProtectWindows>False</ProtectWindows></ExcelWorkbook><Styles><Style ss:ID="Default" ss:Name="Default"/><Style ss:ID="Result" ss:Name="Result"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/></Style><Style ss:ID="Result2" ss:Name="Result2"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/><NumberFormat ss:Format="General"/></Style><Style ss:ID="Heading" ss:Name="Heading"><Alignment ss:Horizontal="Center"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="Heading1" ss:Name="Heading1"><Alignment ss:Horizontal="Center" ss:Rotate="90"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="co1"/><Style ss:ID="co2"/><Style ss:ID="co3"/><Style ss:ID="co4"/><Style ss:ID="ta1"/><Style ss:ID="ce1"><Alignment ss:WrapText="1"/><Font ss:FontName="DejaVu Sans1" ss:Size="10"/></Style><Style ss:ID="ce2"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman1" ss:Size="10"/></Style></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="ce2" ss:Width="310.2519"/><Column ss:StyleID="Default" ss:Width="176.2016"/><Column ss:StyleID="Default" ss:Width="136.8567"/><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="Default"/><Cell><Data ss:Type="String">De</Data></Cell><Cell><Data ss:Type="String">En</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.group.option.category.user.shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.group.option.category.user.shoutbox.description</Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.canRead</Data></Cell><Cell><Data ss:Type="String">Lesen</Data></Cell><Cell><Data ss:Type="String">Read</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.canRead.description</Data></Cell><Cell><Data ss:Type="String">Der Benutzer kann Nachrichten in der Shoutbox lesen.&lt;br/&gt;Ist diese Option deaktiviert, wird die Box ausgeblendet.</Data></Cell><Cell><Data ss:Type="String">The user can read messages in the shoutbox.&lt;br/&gt;If disabled, the shoutbox will be hidden for this user.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.canWrite</Data></Cell><Cell><Data ss:Type="String">Schreiben</Data></Cell><Cell><Data ss:Type="String">Write</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.canWrite.description</Data></Cell><Cell><Data ss:Type="String">Der Benutzer kann Nachrichten in die Shoutbox schreiben.</Data></Cell><Cell><Data ss:Type="String">Allows the user to post messages in the shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.canWhisper</Data></Cell><Cell><Data ss:Type="String">Flüstern</Data></Cell><Cell><Data ss:Type="String">Whisper</Data></Cell></Row><Row ss:Index="9" ss:AutoFitHeight="0" ss:Height="12.6425"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.canWhisper.description</Data></Cell><Cell><Data ss:Type="String">Der Benutzer kann anderen Benutzern Nachrichten zuflüstern.</Data></Cell><Cell><Data ss:Type="String">Allows the user to send whispers to other users.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65511" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65536" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

lang/wcf.acp.option.xml

-<?xml version="1.0" encoding="UTF-8"?><?mso-application progid="Excel.Sheet"?>
-<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet"><OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><Colors><Color><Index>3</Index><RGB>#c0c0c0</RGB></Color><Color><Index>4</Index><RGB>#ff0000</RGB></Color></Colors></OfficeDocumentSettings><ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"><WindowHeight>9000</WindowHeight><WindowWidth>13860</WindowWidth><WindowTopX>240</WindowTopX><WindowTopY>75</WindowTopY><ProtectStructure>False</ProtectStructure><ProtectWindows>False</ProtectWindows></ExcelWorkbook><Styles><Style ss:ID="Default" ss:Name="Default"/><Style ss:ID="Result" ss:Name="Result"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/></Style><Style ss:ID="Result2" ss:Name="Result2"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/><NumberFormat ss:Format="General"/></Style><Style ss:ID="Heading" ss:Name="Heading"><Alignment ss:Horizontal="Center"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="Heading1" ss:Name="Heading1"><Alignment ss:Horizontal="Center" ss:Rotate="90"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="co1"/><Style ss:ID="co2"/><Style ss:ID="co3"/><Style ss:ID="co4"/><Style ss:ID="ta1"/><Style ss:ID="ce1"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman1" ss:Size="10"/></Style><Style ss:ID="ce2"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman11" ss:Size="10"/></Style><Style ss:ID="ce3"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman" ss:Size="10"/></Style></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="ce2" ss:Width="246.9543"/><Column ss:StyleID="Default" ss:Width="229.011"/><Column ss:StyleID="Default" ss:Width="183.4016"/><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="Default"/><Cell><Data ss:Type="String">De</Data></Cell><Cell><Data ss:Type="String">En</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.option.category.shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.option.category.shoutbox.description </Data></Cell><Cell><Data ss:Type="String">Eine einfache Chat-Box für das WBB</Data></Cell><Cell><Data ss:Type="String">A simple chatbox for the WBB</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.options </Data></Cell><Cell><Data ss:Type="String">Shoutbox-Einstellungen</Data></Cell><Cell><Data ss:Type="String">Shoutbox-Options</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.options.description </Data></Cell><Cell><Data ss:Type="String">Shoutbox-Einstellungen</Data></Cell><Cell><Data ss:Type="String">Shoutbox-Options</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_reloadtime</Data></Cell><Cell><Data ss:Type="String">Frame neu laden nach &lt;i&gt;n&lt;/i&gt; Sek.</Data></Cell><Cell><Data ss:Type="String">Refresh frame after &lt;i&gt;n&lt;/i&gt; sec.</Data></Cell></Row><Row ss:Index="7" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.option.shoutbox_reloadtime.description </Data></Cell><Cell><Data ss:Type="String">Wenn AJAX verwendet wird:&lt;br/&gt;Legt die Zeit fest, nach der neue Nachrichte vom Server abgerufen werden.&lt;br/&gt;Ohne AJAX:&lt;br/&gt;Legt die zeit fest, nach der das verwendete iframe neu geladen wird.&lt;br/&gt;Angabe in Sekunden; 0 bedeutet keine Aktualisierung.</Data></Cell><Cell><Data ss:Type="String">If using AJAX:&lt;br/&gt;Determines the time, after which will be polled for new messages.&lt;br/&gt;Without AJAX:&lt;br/&gt;Determines the time, after wich the used iframe will be reloaded.&lt;br/&gt;0 means no reloading.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_messagecount</Data></Cell><Cell><Data ss:Type="String">Zeige die letzten &lt;i&gt;n&lt;/i&gt; Nachrichten</Data></Cell><Cell><Data ss:Type="String">Show the last &lt;i&gt;n&lt;/i&gt; messages</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.option.shoutbox_messagecount.description </Data></Cell><Cell><Data ss:Type="String">Legt fest, wie viele Nachrichten zu Beginn angezeigt werden sollen. </Data></Cell><Cell><Data ss:Type="String">Determines the number of messages, which will be initially loaded.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_storedmessages</Data></Cell><Cell><Data ss:Type="String">Speichere maximal &lt;i&gt;n&lt;/i&gt; Nachrichten</Data></Cell><Cell><Data ss:Type="String">Store max. &lt;i&gt;n&lt;/i&gt; messages</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_storedmessages.description</Data></Cell><Cell><Data ss:Type="String">Legt die Anzahl der Nachrichten fest, die maximal in der Datenbank gespeichert werden sollen.</Data></Cell><Cell><Data ss:Type="String">Determines the number of messages, which will be stored in the Database.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_allowguests</Data></Cell><Cell><Data ss:Type="String">Erlaube es Gästen in die Shoutbox zu schreiben</Data></Cell><Cell><Data ss:Type="String">Allow guests to post into the shoutbox</Data></Cell></Row><Row ss:Index="13" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_allowguests.description</Data></Cell><Cell ss:Index="3"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_defaultwidth</Data></Cell><Cell><Data ss:Type="String">Standard-Breite des Shoutbox-Frames</Data></Cell><Cell><Data ss:Type="String">Default width of the shoutbox frame</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_defaultwidth.description</Data></Cell><Cell ss:Index="3"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_defaultheight</Data></Cell><Cell><Data ss:Type="String">Standard-Höhe des Shoutbox-Frames</Data></Cell><Cell><Data ss:Type="String">Default height of the shoutbox frame</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_defaultheight.description</Data></Cell><Cell ss:Index="3"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_messageorder_asc</Data></Cell><Cell><Data ss:Type="String">Nachrichten-Reihenfolge</Data></Cell><Cell><Data ss:Type="String">Message order</Data></Cell></Row><Row ss:Index="19" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.option.shoutbox_messageorder_asc.description </Data></Cell><Cell ss:Index="3"/></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_messageorder.asc</Data></Cell><Cell><Data ss:Type="String">Neueste Nachricht unten</Data></Cell><Cell><Data ss:Type="String">Newest message at the bottom</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_messageorder.desc</Data></Cell><Cell><Data ss:Type="String">Neueste Nachricht oben</Data></Cell><Cell><Data ss:Type="String">Newest message first</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_allowbbcode</Data></Cell><Cell><Data ss:Type="String">Erlaube BBCode in der Shoutbox.</Data></Cell><Cell><Data ss:Type="String">Allow BB-Codes in the shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_allowbbcode.description</Data></Cell><Cell><Data ss:Type="String">Ermöglicht die Verwendung von BB-Codes wie &lt;b&gt;[b]&lt;/b&gt;, &lt;b&gt;[img]&lt;/b&gt;, o.ä. Innrhalb der Shoutbox.</Data></Cell><Cell><Data ss:Type="String">Allows the usage of BB-Codes like &lt;b&gt;[b]&lt;/b&gt; or &lt;b&gt;[img]&lt;/b&gt; within the shoutbox.</Data></Cell></Row><Row ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:Index="65536" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>
+<?xml version="1.0" encoding="UTF-8"?><?mso-application progid="Excel.Sheet"?>
+<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet"><OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><Colors><Color><Index>3</Index><RGB>#c0c0c0</RGB></Color><Color><Index>4</Index><RGB>#ff0000</RGB></Color></Colors></OfficeDocumentSettings><ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"><WindowHeight>9000</WindowHeight><WindowWidth>13860</WindowWidth><WindowTopX>240</WindowTopX><WindowTopY>75</WindowTopY><ProtectStructure>False</ProtectStructure><ProtectWindows>False</ProtectWindows></ExcelWorkbook><Styles><Style ss:ID="Default" ss:Name="Default"/><Style ss:ID="Result" ss:Name="Result"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/></Style><Style ss:ID="Result2" ss:Name="Result2"><Font ss:Bold="1" ss:Italic="1" ss:Size="10" ss:Underline="Single"/><NumberFormat ss:Format="General"/></Style><Style ss:ID="Heading" ss:Name="Heading"><Alignment ss:Horizontal="Center"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="Heading1" ss:Name="Heading1"><Alignment ss:Horizontal="Center" ss:Rotate="90"/><Font ss:Bold="1" ss:Italic="1" ss:Size="16"/></Style><Style ss:ID="co1"/><Style ss:ID="co2"/><Style ss:ID="co3"/><Style ss:ID="co4"/><Style ss:ID="ta1"/><Style ss:ID="ce1"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman1" ss:Size="10"/></Style><Style ss:ID="ce2"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman11" ss:Size="10"/></Style><Style ss:ID="ce3"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman" ss:Size="10"/></Style><Style ss:ID="ce4"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman11" ss:Size="10"/></Style></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="ce2" ss:Width="301.4929"/><Column ss:StyleID="Default" ss:Width="229.011"/><Column ss:StyleID="Default" ss:Width="183.4016"/><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="Default"/><Cell><Data ss:Type="String">De</Data></Cell><Cell><Data ss:Type="String">En</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.option.category.shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.option.category.shoutbox.description </Data></Cell><Cell><Data ss:Type="String">Eine einfache Chat-Box für das WBB</Data></Cell><Cell><Data ss:Type="String">A simple chatbox for the WBB</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.options </Data></Cell><Cell><Data ss:Type="String">Shoutbox-Einstellungen</Data></Cell><Cell><Data ss:Type="String">Shoutbox-Options</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.options.description </Data></Cell><Cell><Data ss:Type="String">Shoutbox-Einstellungen</Data></Cell><Cell><Data ss:Type="String">Shoutbox-Options</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_reloadtime</Data></Cell><Cell><Data ss:Type="String">Frame neu laden nach &lt;i&gt;n&lt;/i&gt; Sek.</Data></Cell><Cell><Data ss:Type="String">Refresh frame after &lt;i&gt;n&lt;/i&gt; sec.</Data></Cell></Row><Row ss:Index="7" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.option.shoutbox_reloadtime.description </Data></Cell><Cell><Data ss:Type="String">Wenn AJAX verwendet wird:&lt;br/&gt;Legt die Zeit fest, nach der neue Nachrichte vom Server abgerufen werden.&lt;br/&gt;Ohne AJAX:&lt;br/&gt;Legt die zeit fest, nach der das verwendete iframe neu geladen wird.&lt;br/&gt;Angabe in Sekunden; 0 bedeutet keine Aktualisierung.</Data></Cell><Cell><Data ss:Type="String">If using AJAX:&lt;br/&gt;Determines the time, after which will be polled for new messages.&lt;br/&gt;Without AJAX:&lt;br/&gt;Determines the time, after wich the used iframe will be reloaded.&lt;br/&gt;0 means no reloading.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_messagecount</Data></Cell><Cell><Data ss:Type="String">Zeige die letzten &lt;i&gt;n&lt;/i&gt; Nachrichten</Data></Cell><Cell><Data ss:Type="String">Show the last &lt;i&gt;n&lt;/i&gt; messages</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.option.shoutbox_messagecount.description </Data></Cell><Cell><Data ss:Type="String">Legt fest, wie viele Nachrichten zu Beginn angezeigt werden sollen. </Data></Cell><Cell><Data ss:Type="String">Determines the number of messages, which will be initially loaded.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_storedmessages</Data></Cell><Cell><Data ss:Type="String">Speichere maximal &lt;i&gt;n&lt;/i&gt; Nachrichten</Data></Cell><Cell><Data ss:Type="String">Store max. &lt;i&gt;n&lt;/i&gt; messages</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_storedmessages.description</Data></Cell><Cell><Data ss:Type="String">Legt die Anzahl der Nachrichten fest, die maximal in der Datenbank gespeichert werden sollen.</Data></Cell><Cell><Data ss:Type="String">Determines the number of messages, which will be stored in the Database.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_allowguests</Data></Cell><Cell><Data ss:Type="String">Erlaube es Gästen in die Shoutbox zu schreiben</Data></Cell><Cell><Data ss:Type="String">Allow guests to post into the shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_allowguests.description</Data></Cell><Cell ss:Index="3"/></Row><Row ss:Index="14" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_defaultwidth</Data></Cell><Cell><Data ss:Type="String">Breite der Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox width</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_defaultwidth.description</Data></Cell><Cell><Data ss:Type="String">Standard-Breite des Shoutbox-Frames</Data></Cell><Cell><Data ss:Type="String">Default width of the shoutbox frame</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_defaultheight</Data></Cell><Cell><Data ss:Type="String">Höhe der Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox height</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_defaultheight.description</Data></Cell><Cell><Data ss:Type="String">Standard-Höhe des Shoutbox-Frames</Data></Cell><Cell><Data ss:Type="String">Default height of the shoutbox frame</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_messageorder_asc</Data></Cell><Cell><Data ss:Type="String">Nachrichten-Reihenfolge</Data></Cell><Cell><Data ss:Type="String">Message order</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:StyleID="ce4"><Data ss:Type="String">wcf.acp.option.shoutbox_messageorder_asc.description </Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_messageorder.asc</Data></Cell><Cell><Data ss:Type="String">Neueste Nachricht unten</Data></Cell><Cell><Data ss:Type="String">Newest message at the bottom</Data></Cell></Row><Row ss:Index="21" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_messageorder.desc</Data></Cell><Cell><Data ss:Type="String">Neueste Nachricht oben</Data></Cell><Cell><Data ss:Type="String">Newest message first</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_allowbbcode</Data></Cell><Cell><Data ss:Type="String">Erlaube BBCode in der Shoutbox.</Data></Cell><Cell><Data ss:Type="String">Allow BB-Codes in the shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_allowbbcode.description</Data></Cell><Cell><Data ss:Type="String">Ermöglicht die Verwendung von BB-Codes wie &lt;b&gt;[b]&lt;/b&gt;, &lt;b&gt;[img]&lt;/b&gt;, o.ä. Innrhalb der Shoutbox.</Data></Cell><Cell><Data ss:Type="String">Allows the usage of BB-Codes like &lt;b&gt;[b]&lt;/b&gt; or &lt;b&gt;[img]&lt;/b&gt; within the shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65536" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

package.properties

-package.id=net.northshirebund.wbb.shoutbox
-package.name=Shoutbox
-package.description=Ein Chat-Frame
-package.version=0.4
-
-package.author.name=Christian Fischer
-package.author.url=www.northshirebund.net
-
-package.parent=com.woltlab.wcf
-package.unique=1
-package.standalone=0
-
-package.dependencities=				\
-	com.woltlab.wcf(1.0.0 Beta4);	\
-	com.woltlab.wcf.data.message.bbcode(1.0.0 Beta4)
-	
-package.optionalPackages=			\
-	shoutbox-wbb3modsportalbox;		\
-	shoutbox-page
-
-package.updateableFrom=				\
-	0.1; 0.2; 0.2.1; 0.3
     <packageInformation>
         <packageName>Shoutbox</packageName>
         <packageDescription>Ein Chat-Frame</packageDescription>
-        <version>0.4</version>
+        <version>0.5</version>
         <promptParent>com.woltlab.wcf</promptParent>
         <standalone>0</standalone>
         <isUnique>1</isUnique>
     	<file name="script/install/install.sql"			tag="sql"	/>
     	<file name="script/install/acpmenu.xml"						/>
     	<file name="script/install/options.xml"						/>
-    	<file name="script/install/pagelocation.xml"				/>
+		<file name="script/install/pagelocation.xml"				/>
+		<file name="script/install/groupoptions.xml"				/>
     	
     	<file type="tar" tag="files"		src="files/"			/>
     	<file type="tar" tag="templates"	src="templates/"		/>
     <instructions type="update"	fromversion="0.2.1"	/>
     <instructions type="update"	fromversion="0.3"	/>
     -->
+	<instructions type="install">
+		<script>lib/install.php</script>
+ 	</instructions>
+	
+	<instructions type="update"	fromversion="0.4"	/>
     
 </package>

script/install/groupoptions.xml

+<?xml version="1.0"?>
+<!DOCTYPE data SYSTEM "http://www.woltlab.com/DTDs/options.dtd">
+<data>	
+	<import>
+		<categories>
+			<category name="user.shoutbox">
+				<parent>user</parent>
+			</category>
+			<category name="mod.shoutbox">
+				<parent>mod</parent>
+			</category>
+		</categories>
+		
+		<options>
+			<option name="user.shoutbox.canRead">
+				<categoryname>user.shoutbox</categoryname>
+				<optiontype>boolean</optiontype>
+				<defaultvalue>0</defaultvalue>
+				<showorder>1</showorder>
+				<enableoptions>user.shoutbox.canWrite,user.shoutbox.canWhisper</enableoptions>
+			</option>
+			<option name="user.shoutbox.canWrite">
+				<categoryname>user.shoutbox</categoryname>
+				<optiontype>boolean</optiontype>
+				<defaultvalue>0</defaultvalue>
+				<showorder>2</showorder>
+				<enableoptions>user.shoutbox.canWhisper</enableoptions>
+			</option>
+			<option name="user.shoutbox.canWhisper">
+				<categoryname>user.shoutbox</categoryname>
+				<optiontype>boolean</optiontype>
+				<defaultvalue>0</defaultvalue>
+				<showorder>3</showorder>
+			</option>
+			<option name="mod.shoutbox.canInlineDelete">
+				<categoryname>mod.shoutbox</categoryname>
+				<optiontype>boolean</optiontype>
+				<defaultvalue>0</defaultvalue>
+				<showorder>1</showorder>
+			</option>
+		</options>
+	</import>
+</data>

script/install/options.xml

 				<optiontype>boolean</optiontype>
 				<defaultvalue><![CDATA[0]]></defaultvalue>
 			</option>
+			<!--
 			<option name="shoutbox_allowguests">
 				<categoryname>shoutbox.options</categoryname>
 				<optiontype>boolean</optiontype>
 				<defaultvalue><![CDATA[1]]></defaultvalue>
 			</option>
+			-->
 		</options>
 	</import>
 </data>

shoutbox.kdevelop

+<?xml version = '1.0'?>
+<kdevelop>
+  <general>
+    <author>Christian Fischer</author>
+    <email>christian@fi12.de</email>
+    <version>0.5</version>
+    <projectmanagement>KDevScriptProject</projectmanagement>
+    <primarylanguage>PHP</primarylanguage>
+    <keywords>
+      <keyword>PHP</keyword>
+    </keywords>
+    <ignoreparts>
+      <part>KDevDoxygen</part>
+      <part>KDevdistpart</part>
+      <part>KDevVisualBoyAdvance</part>
+    </ignoreparts>
+    <versioncontrol>kdevsubversion</versioncontrol>
+    <projectname>shoutbox</projectname>
+  </general>
+  <kdevscriptproject>
+    <general>
+      <activedir/>
+      <includepatterns>*.php,*.phps,*.php3,*.inc</includepatterns>
+    </general>
+    <run>
+      <directoryradio>executable</directoryradio>
+    </run>
+  </kdevscriptproject>
+  <kdevdoctreeview>
+    <ignoretocs>
+      <toc>ada</toc>
+      <toc>ada_bugs_gcc</toc>
+      <toc>bash</toc>
+      <toc>bash_bugs</toc>
+      <toc>c++_bugs_gcc</toc>
+      <toc>clanlib</toc>
+      <toc>fortran_bugs_gcc</toc>
+      <toc>gnome1</toc>
+      <toc>gnustep</toc>
+      <toc>gtk</toc>
+      <toc>gtk_bugs</toc>
+      <toc>haskell</toc>
+      <toc>haskell_bugs_ghc</toc>
+      <toc>java_bugs_gcc</toc>
+      <toc>java_bugs_sun</toc>
+      <toc>kde2book</toc>
+      <toc>libc</toc>
+      <toc>libstdc++</toc>
+      <toc>opengl</toc>
+      <toc>pascal_bugs_fp</toc>
+      <toc>perl</toc>
+      <toc>perl_bugs</toc>
+      <toc>python</toc>
+      <toc>python_bugs</toc>
+      <toc>qt-kdev3</toc>
+      <toc>ruby</toc>
+      <toc>ruby_bugs</toc>
+      <toc>sdl</toc>
+      <toc>stl</toc>
+      <toc>sw</toc>
+      <toc>wxwidgets_bugs</toc>
+    </ignoretocs>
+    <ignoreqt_xml>
+      <toc>Guide to the Qt Translation Tools</toc>
+      <toc>Qt Assistant Manual</toc>
+      <toc>Qt Designer Manual</toc>
+      <toc>Qt Reference Documentation</toc>
+      <toc>qmake User Guide</toc>
+    </ignoreqt_xml>
+    <ignoredoxygen>
+      <toc>KDE Libraries (Doxygen)</toc>
+    </ignoredoxygen>
+  </kdevdoctreeview>
+  <kdevphpsupport>
+    <codeHelp>
+      <codeCompletion>true</codeCompletion>
+      <codeHinting>true</codeHinting>
+      <realtimeParsing>true</realtimeParsing>
+    </codeHelp>
+  </kdevphpsupport>
+  <kdevfilecreate>
+    <useglobaltypes>
+      <type ext="php" />
+    </useglobaltypes>
+  </kdevfilecreate>
+  <kdevfileview>
+    <groups>
+      <group pattern="*.php;*.phps;*.php3" name="PHP files" />
+      <group pattern="*.inc" name="Include files" />
+      <hidenonprojectfiles>false</hidenonprojectfiles>
+      <hidenonlocation>false</hidenonlocation>
+    </groups>
+    <tree>
+      <hidepatterns>*.o,*.lo,CVS</hidepatterns>
+      <hidenonprojectfiles>false</hidenonprojectfiles>
+      <showvcsfields>false</showvcsfields>
+    </tree>
+  </kdevfileview>
+  <substmap>
+    <APPNAME>shoutbox</APPNAME>
+    <APPNAMELC>shoutbox</APPNAMELC>
+    <APPNAMESC>Shoutbox</APPNAMESC>
+    <APPNAMEUC>SHOUTBOX</APPNAMEUC>
+    <AUTHOR>Christian Fischer</AUTHOR>
+    <EMAIL>christian@fi12.de</EMAIL>
+    <LICENSE>GPL</LICENSE>
+    <LICENSEFILE>COPYING</LICENSEFILE>
+    <VERSION>0.5</VERSION>
+    <YEAR>2007</YEAR>
+    <dest>/data/src/wbb2/src/wbb3/modules/shoutbox</dest>
+  </substmap>
+</kdevelop>

templates/shoutboxContent.tpl

 	{if SHOUTBOX_RELOADTIME}<meta http-equiv="refresh" content="{SHOUTBOX_RELOADTIME};URL=index.php?page=ShoutboxContent">{/if}
 </head>
 <body style="text-align:left; margin:0px; padding:0px;">
-<div class="container-1" style="height:100%;">
+<div class="shoutboxFrameInner container-2" style="margin:0px; padding:0px; position:absolute; top:0px; left:0px; width:{SHOUTBOX_DEFAULTWIDTH}; height:{SHOUTBOX_DEFAULTHEIGHT};">
+<div class="shoutboxFrameInner container-2" style="text-align:left; margin:0px; padding:0px;">
 {foreach from=$messages item=message}
 	{include file="shoutboxFormattedMessage"}<br/>
 {/foreach}

templates/shoutboxFormattedMessage.tpl

 <span class="light">[{@$message['message_time']|shorttime}]</span><span class="{$message['class']}">
 {if $message['isEmote']}
-	{$message['username']} {@$message['message_text']}
+	{$message['username']}
 {else if $message['isWhisperIn']}
-	{lang}net.northshirebund.wbb.shoutbox.whisperFrom{/lang} {if $message['userID']}<a href="javascript:top.sbWhisperTo('{$message['username']|encodeJS}');">{$message['username']}</a>{else}{$message['username']}{/if}: {@$message['message_text']}
+	{lang}net.northshirebund.wbb.shoutbox.whisperFrom{/lang} {@$message['username_whisper']}:
 {else if $message['isWhisperOut']}
-	{lang}net.northshirebund.wbb.shoutbox.whisperTo{/lang} <a href="javascript:top.sbWhisperTo('{$message['to_username']|encodeJS}');">{$message['to_username']}</a>: {@$message['message_text']}
+	{lang}net.northshirebund.wbb.shoutbox.whisperTo{/lang} {@$message['to_username']}:
 {else}
-	{if $message['userID']}<a href="javascript:top.sbWhisperTo('{$message['username']|encodeJS}');">{$message['username']}</a>{else}{$message['username']}{/if}: {@$message['message_text']}
+	{@$message['username_whisper']}:
 {/if}
+{@$message['message_text']}
 </span>

templates/shoutboxFrame.tpl

+{if $this->getUser()->getPermission('user.shoutbox.canRead')}
 <table class="shoutboxFrame container-1" cellpadding="4" cellspacing="0" border="0" style="width:{SHOUTBOX_DEFAULTWIDTH};">
 <tr><td>
 	<div class="border shoutboxFrameInner container-2">
 	</div>
 </td></tr>
 <tr><td>
-{if $this->getUser()->userID || SHOUTBOX_ALLOWGUESTS}
-	<script language="javascript" type="text/javascript">
-		//<![CDATA[
+<script language="javascript" type="text/javascript">
+	//<![CDATA[
+	
+		var ajaxRequest   = null;
+		var lastmessage   = 0;
+		var queuedmessage = null;
+		var timerPending  = false;
+		var sbcontent     = document.getElementById('shoutboxcontent');
 		
-			var ajaxRequest   = null;
-			var lastmessage   = 0;
-			var queuedmessage = null;
-			var timerPending  = false;
-			var sbcontent     = document.getElementById('shoutboxcontent');
+		// prepare div element
+	//	sbcontent.style.overflow = 'scroll';
+	//	sbcontent.innerHTML = '<div id="innershoutboxcontent" style="width:100%;"></div><a name="shoutboxbottom"></a><br/>';
+	//	sbcontent = document.getElementById('innershoutboxcontent');
+		sbcontent.innerHTML = '<iframe src="about:blank" id="shoutboxcontentframe" name="shoutboxcontentframe" scrolling="auto" frameborder="0" allowtransparency="true" style="background-color:transparent; width:{SHOUTBOX_DEFAULTWIDTH}; height:{SHOUTBOX_DEFAULTHEIGHT}; border:0px;"></iframe>';
+		frames.shoutboxcontentframe.document.write('\x3chtml\x3e\x3chead\x3e<link rel="stylesheet" type="text/css" media="screen" href="{@RELATIVE_WCF_DIR}style/style-{@$this->getStyle()->styleID}.css" /></head><body style="margin:0px; padding:0px;"><div class="shoutboxFrameInner container-2" style="margin:0px; padding:0px; position:absolute; top:0px; left:0px; width:{SHOUTBOX_DEFAULTWIDTH}; height:{SHOUTBOX_DEFAULTHEIGHT};"><div id="shoutboxcontent" class="shoutboxFrameInner container-2" style="text-align:left; margin:0px; padding:0px;"></div></div></body></html>');
+	//	frames.shoutboxcontentframe.document.write('<html><head'+'><link rel="stylesheet" type="text/css" media="screen" href="{@RELATIVE_WCF_DIR}style/style-{@$this->getStyle()->styleID}.css" /></head><body style="margin:0px; padding:0px;"><div class="shoutboxFrameInner container-2" style="margin:0px; padding:0px; position:absolute; top:0px; left:0px; width:{SHOUTBOX_DEFAULTWIDTH}; height:{SHOUTBOX_DEFAULTHEIGHT};"><div id="shoutboxcontent" class="shoutboxFrameInner container-2" style="text-align:left; margin:0px; padding:0px;"></div></div></body></html>');
+		frames.shoutboxcontentframe.document.close();
+		sbcontent = null;
+		
+		setTimeout('shoutboxTimer()', 100);
+		
+		
+		function shoutboxTimer() {
+			if (this.sbcontent == null) {
+				this.sbcontent = frames.shoutboxcontentframe.document.getElementById('shoutboxcontent');
+			}
 			
-			// prepare div element
-		//	sbcontent.style.overflow = 'scroll';
-		//	sbcontent.innerHTML = '<div id="innershoutboxcontent" style="width:100%;"></div><a name="shoutboxbottom"></a><br/>';
-		//	sbcontent = document.getElementById('innershoutboxcontent');
-			sbcontent.innerHTML = '<iframe id="shoutboxcontentframe" name="shoutboxcontentframe" scrolling="auto" frameborder="0" allowtransparency="true" style="background-color:transparent; width:{SHOUTBOX_DEFAULTWIDTH}; height:{SHOUTBOX_DEFAULTHEIGHT}; border:0px;"></iframe>';
-			top.frames.shoutboxcontentframe.document.write('<html><head><link rel="stylesheet" type="text/css" media="screen" href="{@RELATIVE_WCF_DIR}style/style-{@$this->getStyle()->styleID}.css" /></head><body class="shoutboxFrameInner container-2" style="margin:0px; padding:0px;"><div id="shoutboxcontent" class="shoutboxFrameInner container-2" style="text-align:left; margin:0px; padding:0px;"></div></body></html>');
-			sbcontent = null;
-
+			this.timerPending = false;
+			sendShoutboxAjaxRequest();
 			
-			setTimeout('shoutboxTimer()', 100);
-			
-			
-			function shoutboxTimer() {
-				if (this.sbcontent == null) {
-					this.sbcontent = top.frames.shoutboxcontentframe.document.getElementById('shoutboxcontent');
+			return;
+		}
+		
+		
+		function sendShoutboxAjaxRequest() {
+			if(this.ajaxRequest == null) {
+				var appendmessage = '';
+				
+				if(this.queuedmessage != null) {
+					appendmessage = '&message=' + encodeURIComponent(this.queuedmessage);
+					this.queuedmessage = null;
 				}
 				
-				this.timerPending = false;
-				sendShoutboxAjaxRequest();
-				
-				return;
+				this.ajaxRequest = new AjaxRequest();
+				return this.ajaxRequest.openPost(
+									'index.php?page=ShoutboxContent&output=xml' + SID_ARG_2ND,
+									'since=' + this.lastmessage + appendmessage,
+									function() { handleShoutboxContentRequest(); }
+				);
 			}
 			
-			
-			function sendShoutboxAjaxRequest() {
-				if(this.ajaxRequest == null) {
-					var appendmessage = '';
+			return true;
+		}
+		
+		function sendShoutboxMessage() {
+			this.queuedmessage = document.shoutboxInputform.message.value;
+			document.shoutboxInputform.message.value='';
+			return !sendShoutboxAjaxRequest();
+		}
+		
+		function handleShoutboxContentRequest() {
+			if (this.ajaxRequest && this.ajaxRequest.xmlHttpRequest.readyState == 4) {
+				if(this.ajaxRequest.xmlHttpRequest.status == 200 && this.ajaxRequest.xmlHttpRequest.responseXML) {
+					var lines = this.ajaxRequest.xmlHttpRequest.responseXML.getElementsByTagName('lines');
 					
-					if(this.queuedmessage != null) {
-						appendmessage = '&message=' + encodeURIComponent(this.queuedmessage);
-						this.queuedmessage = null;
-					}
-					
-					this.ajaxRequest = new AjaxRequest();
-					return this.ajaxRequest.openPost(
-										'index.php?page=ShoutboxContent&output=xml' + SID_ARG_2ND,
-										'since=' + this.lastmessage + appendmessage,
-										function() { handleShoutboxContentRequest(); }
-					);
-				}
-				
-				return true;
-			}
-			
-			function sendShoutboxMessage() {
-				this.queuedmessage = document.shoutboxInputform.message.value;
-				document.shoutboxInputform.message.value='';
-				return !sendShoutboxAjaxRequest();
-			}
-			
-			function handleShoutboxContentRequest() {
-				if (this.ajaxRequest && this.ajaxRequest.xmlHttpRequest.readyState == 4) {
-					if(this.ajaxRequest.xmlHttpRequest.status == 200 && this.ajaxRequest.xmlHttpRequest.responseXML) {
-						var lines = this.ajaxRequest.xmlHttpRequest.responseXML.getElementsByTagName('lines');
-						
-						if(lines.length > 0) {
-							for(var i=0; i<lines[0].childNodes.length; i++) {
-								var line = lines[0].childNodes[i];
+					if(lines.length > 0) {
+						for(var i=0; i<lines[0].childNodes.length; i++) {
+							var line = lines[0].childNodes[i];
+							
+							if(line.childNodes.length > 0) {
+								var node = line.childNodes[0];
 								
-								if(line.childNodes.length > 0) {
-									var node = line.childNodes[0];
-									
-									if(node.nodeType == 3 || node.nodeType == 4) {
-										if(line.tagName == 'line') {
-											{if SHOUTBOX_MESSAGEORDER_ASC}
-												this.sbcontent.innerHTML = this.sbcontent.innerHTML + node.nodeValue + '<br/>';
-											{else}
-												this.sbcontent.innerHTML = node.nodeValue + '<br/>' + this.sbcontent.innerHTML;
-											{/if}
-										}
-										else if(line.tagName == 'last') {
-											this.lastmessage = node.nodeValue;
-										}
+								if(node.nodeType == 3 || node.nodeType == 4) {
+									if(line.tagName == 'line') {
+										{if SHOUTBOX_MESSAGEORDER_ASC}
+											this.sbcontent.innerHTML = this.sbcontent.innerHTML + node.nodeValue + '<br/>';
+										{else}
+											this.sbcontent.innerHTML = node.nodeValue + '<br/>' + this.sbcontent.innerHTML;
+										{/if}
+									}
+									else if(line.tagName == 'last') {
+										this.lastmessage = node.nodeValue;
 									}
 								}
 							}
 						}
-						
-						{if SHOUTBOX_MESSAGEORDER_ASC}
-							// scroll the frame to the bottom
-							//window.location.href = '#shoutboxbottom';
-							//document.shoutboxInputform.message.focus();
-							top.frames.shoutboxcontentframe.scrollTo(0, 999999);
-						{/if}
-						
-						// request was successfully handled...
-						this.ajaxRequest = null;
-						
-						// if a message was queued, send another request immediately
-						if(this.queuedmessage) {
-							sendShoutboxAjaxRequest();
-						}
-						{if SHOUTBOX_RELOADTIME}
-						else if(!this.timerPending) {
-							this.timerPending = true;
-							setTimeout('shoutboxTimer()', {SHOUTBOX_RELOADTIME*1000});
-						}
-						{/if}
 					}
+					
+					{if SHOUTBOX_MESSAGEORDER_ASC}
+						// scroll the frame to the bottom
+						frames.shoutboxcontentframe.scrollTo(0, 999999);
+					{/if}
+					
+					// request was successfully handled...
+					this.ajaxRequest.xmlHttpRequest.abort();
+					this.ajaxRequest = null;
+					
+					// if a message was queued, send another request immediately
+					if(this.queuedmessage) {
+						sendShoutboxAjaxRequest();
+					}
+					{if SHOUTBOX_RELOADTIME}
+					else if(!this.timerPending) {
+						this.timerPending = true;
+						setTimeout('shoutboxTimer()', {SHOUTBOX_RELOADTIME*1000});
+					}
+					{/if}
 				}
-				
-				return;
 			}
 			
-			function sbWhisperTo(name) {
-				document.shoutboxInputform.message.value = '/w "' + name + '" ' + document.shoutboxInputform.message.value;
-				return;
-			}
+			return;
+		}
 		
-		//]]>
-	</script>
+		function sbWhisperTo(name) {
+			document.shoutboxInputform.message.value = '/w "' + name + '" ' + document.shoutboxInputform.message.value;
+			return;
+		}
+	
+	//]]>
+</script>
+{if $this->getUser()->getPermission('user.shoutbox.canWrite')}
 	<form name="shoutboxInputform" action="index.php" method="post" target="chat" onsubmit="return sendShoutboxMessage();">
 		<input type="hidden" name="page" value="ShoutboxContent">
 		<noscript><span>[<a href="index.php?page=ShoutboxContent" target="chat">aktualisieren</a>]</noscript>
 {/if}
 </td></tr>
 </table>
+{/if}

templates/shoutboxFrame.tpl.txt

-<table class="shoutboxFrame container-1" cellpadding="4" cellspacing="0" border="0" style="width:{SHOUTBOX_DEFAULTWIDTH};">
-<tr><td>
-	<div class="border shoutboxFrameInner container-2">
-		<div id="shoutboxcontent" style="margin:5px; padding:0px; height:{SHOUTBOX_DEFAULTHEIGHT};">
-			<noscript><iframe name="chat" src="index.php?page=ShoutboxContent" scrolling="yes" frameborder="0" allowtransparency="true" style="width:{SHOUTBOX_DEFAULTWIDTH}; height:{SHOUTBOX_DEFAULTHEIGHT}; border:0px;"></iframe></noscript>
-		</div>
-	</div>
-</td></tr>
-<tr><td>
-{if $this->getUser()->userID || SHOUTBOX_ALLOWGUESTS}
-	<script language="javascript" type="text/javascript">
-		//<![CDATA[
-		
-			var ajaxRequest   = null;
-			var lastmessage   = 0;
-			var queuedmessage = null;
-			var timerPending  = false;
-			var sbcontent     = document.getElementById('shoutboxcontent');
-			
-			// prepare div element
-		//	sbcontent.style.overflow = 'scroll';
-		//	sbcontent.innerHTML = '<div id="innershoutboxcontent" style="width:100%;"></div><a name="shoutboxbottom"></a><br/>';
-		//	sbcontent = document.getElementById('innershoutboxcontent');
-			sbcontent.innerHTML = '<iframe id="shoutboxcontentframe" name="shoutboxcontentframe" scrolling="auto" frameborder="0" allowtransparency="true" style="background-color:transparent; width:{SHOUTBOX_DEFAULTWIDTH}; height:{SHOUTBOX_DEFAULTHEIGHT}; border:0px;"></iframe>';
-			top.frames.shoutboxcontentframe.document.write('<html><head><link rel="stylesheet" type="text/css" media="screen" href="{@RELATIVE_WCF_DIR}style/style-{@$this->getStyle()->styleID}.css" /></head><body class="shoutboxFrameInner container-2" style="margin:0px; padding:0px;"><div id="shoutboxcontent" class="shoutboxFrameInner container-2" style="text-align:left; margin:0px; padding:0px;"></div></body></html>');
-			sbcontent = null;
-
-			
-			setTimeout('shoutboxTimer()', 100);
-			
-			
-			function shoutboxTimer() {
-				if (this.sbcontent == null) {
-					this.sbcontent = top.frames.shoutboxcontentframe.document.getElementById('shoutboxcontent');
-				}
-				
-				this.timerPending = false;
-				sendShoutboxAjaxRequest();
-				
-				return;
-			}
-			
-			
-			function sendShoutboxAjaxRequest() {
-				if(this.ajaxRequest == null) {
-					var appendmessage = '';
-					
-					if(this.queuedmessage != null) {
-						appendmessage = '&message=' + encodeURIComponent(this.queuedmessage);
-						this.queuedmessage = null;
-					}
-					
-					this.ajaxRequest = new AjaxRequest();
-					return this.ajaxRequest.openPost(
-										'index.php?page=ShoutboxContent&output=xml' + SID_ARG_2ND,
-										'since=' + this.lastmessage + appendmessage,
-										function() { handleShoutboxContentRequest(); }
-					);
-				}
-				
-				return true;
-			}
-			
-			function sendShoutboxMessage() {
-				this.queuedmessage = document.shoutboxInputform.message.value;
-				document.shoutboxInputform.message.value='';
-				return !sendShoutboxAjaxRequest();
-			}
-			
-			function handleShoutboxContentRequest() {
-				if (this.ajaxRequest && this.ajaxRequest.xmlHttpRequest.readyState == 4) {
-					if(this.ajaxRequest.xmlHttpRequest.status == 200 && this.ajaxRequest.xmlHttpRequest.responseXML) {
-						var lines = this.ajaxRequest.xmlHttpRequest.responseXML.getElementsByTagName('lines');
-						
-						if(lines.length > 0) {
-							for(var i=0; i<lines[0].childNodes.length; i++) {
-								var line = lines[0].childNodes[i];
-								
-								if(line.childNodes.length > 0) {
-									var node = line.childNodes[0];
-									
-									if(node.nodeType == 3 || node.nodeType == 4) {
-										if(line.tagName == 'line') {
-											{if SHOUTBOX_MESSAGEORDER_ASC}
-												this.sbcontent.innerHTML = this.sbcontent.innerHTML + node.nodeValue + '<br/>';
-											{else}
-												this.sbcontent.innerHTML = node.nodeValue + '<br/>' + this.sbcontent.innerHTML;
-											{/if}
-										}
-										else if(line.tagName == 'last') {
-											this.lastmessage = node.nodeValue;
-										}
-									}
-								}
-							}
-						}
-						
-						{if SHOUTBOX_MESSAGEORDER_ASC}
-							// scroll the frame to the bottom
-							//window.location.href = '#shoutboxbottom';
-							//document.shoutboxInputform.message.focus();
-							top.frames.shoutboxcontentframe.scrollTo(0, 999999);
-						{/if}
-						
-						// request was successfully handled...
-						this.ajaxRequest = null;
-						
-						// if a message was queued, send another request immediately
-						if(this.queuedmessage) {
-							sendShoutboxAjaxRequest();
-						}
-						{if SHOUTBOX_RELOADTIME}
-						else if(!this.timerPending) {
-							this.timerPending = true;
-							setTimeout('shoutboxTimer()', {SHOUTBOX_RELOADTIME*1000});
-						}
-						{/if}
-					}
-				}
-				
-				return;
-			}
-			
-			function sbWhisperTo(name) {
-				document.shoutboxInputform.message.value = '/w "' + name + '" ' + document.shoutboxInputform.message.value;
-				return;
-			}
-		
-		//]]>
-	</script>
-	<form name="shoutboxInputform" action="index.php" method="post" target="chat" onsubmit="return sendShoutboxMessage();">
-		<input type="hidden" name="page" value="ShoutboxContent">
-		<noscript><span>[<a href="index.php?page=ShoutboxContent" target="chat">aktualisieren</a>]</noscript>
-			<b>{if $this->getUser()->userID}{$this->getUser()->username}{else}{lang}net.northshirebund.wbb.shoutbox.guest{/lang}{/if}</b> &raquo;
-			<input type=text name="message" size="60" class="input">
-			<input type=submit value="Senden" class="input">
-		</span>
-	</form>
-{/if}
-</td></tr>
-</table>