Commits

Christian Fischer committed c8a86c6

Comments (0)

Files changed (37)

incendium/dist/net.northshirebund.wbb.shoutbox.portalbox.incendium-0.7.tar

Binary file added.

incendium/dist/net.northshirebund.wbb.shoutbox.portalbox.incendium-0.7.tar.gz

Binary file added.

incendium/dist/net.northshirebund.wbb.shoutbox.portalbox.incendium-0.7.zip

Binary file added.

incendium/lang/shoutbox.incendium.lang.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="co5"/><Style ss:ID="ta1"/><Style ss:ID="ce1"><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="Default" ss:Width="80.7591"/><Column ss:StyleID="ce1" ss:Width="169.5118"/><Column ss:StyleID="Default" ss:Width="176.2016"/><Column ss:StyleID="Default" ss:Width="136.8567"/><Column ss:StyleID="Default" ss:Span="1" ss:Width="176.2016"/><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:Index="2" ss:StyleID="Default"/><Cell><Data ss:Type="String">De</Data></Cell><Cell><Data ss:Type="String">En</Data></Cell><Cell><Data ss:Type="String">De-informal</Data></Cell><Cell><Data ss:Type="String">It</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.boxsystem</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.boxsystem.shoutbox.title</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">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="12.8409"><Cell ss:Index="6"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="65503" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="6"/></Row><Row ss:Index="65504" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="6"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="65528" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="6"/></Row><Row ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="65536" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="6"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

incendium/lang/wcf.boxsystem.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></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="ce1" ss:Width="246.9543"/><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.boxsystem.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="12.8409"><Cell ss:Index="3"/></Row><Row ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65503" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65528" ss:AutoFitHeight="0" 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>

incendium/package.xml

     <packageInformation>
         <packageName><![CDATA[Shoutbox [Incendium CMS Box]]]></packageName>
         <packageDescription><![CDATA[Incendium-Shoutbox]]></packageDescription>
-        <version>0.6</version>
+        <version>0.7</version>
 		<plugin>wbb3mods.wcf.boxsystem</plugin>
         <standalone>0</standalone>
         <isUnique>1</isUnique>
     
     <requiredPackages>
  		<requiredpackage minversion="1.0.0 Beta 1">wbb3mods.wcf.boxsystem</requiredpackage>
-        <requiredPackage minversion="0.6">net.northshirebund.wbb.shoutbox</requiredPackage>
+        <requiredPackage minversion="0.7">net.northshirebund.wbb.shoutbox</requiredPackage>
     </requiredPackages>
     
 	<addfiles>
     </addfiles>
 	
 	<instructions type="install"/>
-    
+ 	<instructions type="update"	fromversion="0.6"	/>
+   
 </package>

shoutbox/acptemplates/shoutboxDeleteMessages.tpl

+{include file='header'}
+
+<div class="mainHeadline">
+	<img src="../icon/shoutboxIcon48x48.png" alt="" />
+	<div class="headlineContainer">
+		<h1>{lang}wcf.acp.shoutbox.title{/lang}</h1>
+	</div>
+</div>
+
+{if $users|count > 0}
+<form action="index.php?page=ShoutboxDeleteMessages" method="POST">
+	<fieldset>
+		<legend>{lang}wcf.acp.shoutbox.deleteMessagesFromUser{/lang}</legend>
+		<div class="formElement">
+			<div class="formFieldLabel">
+				{lang}wcf.user.username{/lang}
+			</div>
+			<div class="formField">
+				<input type="hidden" name="packageID" value="{@PACKAGE_ID}"/>
+				<input type="hidden" name="s" value="{@SID}"/>
+				
+				<select class="input" name="selectedUser" style="width:100%;">
+					{foreach from=$users item=user}
+						<option value="{@$user['userID']}">{$user['username']}</option>
+					{/foreach}
+				</select><br/>
+				<input type="submit" value="{lang}wcf.acp.shoutbox.delete{/lang}"/>
+			</div>
+		</div>
+	</fieldset>
+</form>
+{/if}
+
+<form action="index.php?page=ShoutboxDeleteMessages" method="POST">
+	<fieldset>
+		<legend>{lang}wcf.acp.shoutbox.clear{/lang}</legend>
+		<div class="formElement">
+			<div class="formFieldLabel"></div>
+			<div class="formField">
+				<input type="hidden"   name="packageID" value="{@PACKAGE_ID}"/>
+				<input type="hidden"   name="s" value="{@SID}"/>
+				<input type="checkbox" name="clearConfirm" class="input" value="1"/>
+				{lang}wcf.acp.shoutbox.clearConfirm{/lang}<br/>
+				
+				<input type="submit" class="input" value="{lang}wcf.acp.shoutbox.delete{/lang}"/>
+			</div>
+		</div>
+	</fieldset>
+</form>
+
+{include file='footer'}

shoutbox/acptemplates/shoutboxMessageList.tpl

 	</div>
 </div>
 
-{if $users|count > 0}
-	<div class="border container-2" style="padding:5px;">
-		<form action="index.php?page=ShoutboxMessageList" method="POST">
-			<input type="hidden" name="packageID" value="{@PACKAGE_ID}"/>
-			<input type="hidden" name="s" value="{@SID}"/>
-			<input type="submit" value="{lang}wcf.acp.shoutbox.delete{/lang}"/>
-			{lang}wcf.acp.shoutbox.deleteMessagesFromUser{/lang}
-			<select name="selectedUser">
-				{foreach from=$users item=user}
-					<option value="{@$user['userID']}">{$user['username']}</option>
-				{/foreach}
-			</select>
-		</form>
-	</div>
-	<br/>
-	<br/>
+<div class="tabMenu">
+	<ul>
+		{@$tabs}
+	</ul>
+</div>
+
+{if $messages|count > 0}
+	<form action="index.php?page=ShoutboxMessageList{@SID_ARG_2ND}" method="POST">
 {/if}
 
-{if $messages|count > 0}
-	<form action="index.php?page=ShoutboxMessageList" method="POST">
-		<div class="border tabMenuContent">
-			<input type="hidden" name="packageID" value="{@PACKAGE_ID}"/>
-			<input type="hidden" name="s" value="{@SID}"/>
-			
-			<table class="tableList" width="100%">
+<div class="border tabMenuContent">
+	{if $messages|count > 0}
+		<table class="tableList">
 			<thead class="cat">
 				<tr class="tableHead">
-					<th>&nbsp;</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>
+					{foreach from=$header item=field}
+						<th class="column{$field.field|ucfirst}{if $sortField == $field.field} active{/if}"><div><a href="index.php?page=ShoutboxMessageList&amp;pageNo={@$pageNo}&amp;sortField={$field.field}&amp;sortOrder={if $sortField == $field.field && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}{@$field.name}{/lang}{if $sortField == $field.field} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}S.png" alt="" />{/if}</a></div></th>
+					{/foreach}
 				</tr>
 			</thead>
-			
-			{foreach from=$messages item=message}
-				<tr class="container-{cycle values='1,2'}" style="text-align:left;">
-				  <td><input type="checkbox" name="selectedMessages[]" value="{@$message['message_id']}"/></td>
-				  <td>{@$message['message_id']}</td>
-				  <td>{@$message['message_time']|shorttime}</td>
-				  <td>{if $message['guest_name']}[{lang}net.northshirebund.wbb.shoutbox.guest{/lang}]{$message['guest_name']}{else}{$message['username']}{/if}</td>
-				  <td>{$message['message_text']}</td>
-				</tr>
-			{/foreach}
-			</table>
+			<tbody>
+				{foreach from=$messages item=message}
+					<tr class="container-{cycle values='1,2'}">
+						{foreach from=$fields item=field}
+							<td class="column{$field|ucfirst}">
+								{if $field == 'checkbox'}
+									<input type="checkbox" class="input" name="selectedMessages[]" value="{@$message['message_id']}"/>
+								{elseif $field == 'message_time'}
+									{@$message.$field|shorttime}
+								{else}
+									{@$message.$field}
+								{/if}
+							</td>
+						{/foreach}
+					</tr>
+				{/foreach}
+			</tbody>
+		</table>
+	{else}
+		<div class="container-1">
+			{lang}wcf.acp.shoutbox.nomessages{/lang}
 		</div>
-		<input type="submit" value="{lang}wcf.acp.shoutbox.deleteSelectedMessages{/lang}"/>
+	{/if}
+</div>
+
+{pages link="index.php?page=ShoutboxMessageList&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+
+{if $messages|count > 0}
+		<div style="text-align:right;">
+			<input type="submit" class="intput" value="{lang}wcf.acp.shoutbox.deleteSelectedMessages{/lang}"/>
+		</div>
 	</form>
-{else}
-	<div class="border tabMenuContent">
-		<br/>{lang}wcf.acp.shoutbox.nomessages{/lang}<br/><br/>
-	</div>
 {/if}
 
 {include file='footer'}

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

Binary file added.

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

Binary file added.

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

Binary file added.

shoutbox/files/lib/acp/page/ShoutboxDeleteMessagesPage.class.php

+<?php
+// wcf imports
+require_once(WCF_DIR.'lib/page/AbstractPage.class.php');
+
+/**
+ * Provides tools to delete multiple messages from the shoutbox.
+ *
+ * @author	Christian Fischer
+ * @package	net.northshirebund.wbb.shoutbox
+ */
+class ShoutboxDeleteMessagesPage extends AbstractPage {
+	public $templateName     = 'shoutboxDeleteMessages';
+	
+	
+	/**
+	 * @see Page::readParameters()
+	 */
+	public function readParameters() {
+		parent::readParameters();
+		
+		// delete messages from user
+		if(isset($_POST['selectedUser'])) {
+			$selectedUser = intval($_POST['selectedUser']);
+			
+			if($selectedUser != 0) {
+				WCFACP::getDB()->sendQuery('DELETE FROM wcf'.WCF_N.'_shoutbox WHERE userID='.$selectedUser);
+				WCF::getCache()->addResource('shoutbox', WCF_DIR.'cache/cache.shoutbox.php', WCF_DIR.'lib/system/cache/CacheBuilderShoutbox.class.php');
+				WCF::getCache()->clearResource('shoutbox', true);
+			}
+		}
+		
+		if(isset($_POST['clearConfirm'])) {
+			if(intval($_POST['clearConfirm']) === 1) {
+				WCFACP::getDB()->sendQuery('DELETE FROM wcf'.WCF_N.'_shoutbox');
+				WCF::getCache()->addResource('shoutbox', WCF_DIR.'cache/cache.shoutbox.php', WCF_DIR.'lib/system/cache/CacheBuilderShoutbox.class.php');
+				WCF::getCache()->clearResource('shoutbox', true);
+			}
+		}
+		
+		return;
+	}
+	
+	
+	/**
+	 * @see Page::assignVariables()
+	 */
+	public function assignVariables() {
+		parent::assignVariables();
+		$users    = array();
+		
+		// get all users who had posted
+		$sql = 'SELECT u.userID, u.username FROM wcf'.WCF_N.'_shoutbox sb LEFT JOIN wcf'.WCF_N.'_user u USING(userid) WHERE u.userID>0 GROUP BY userID ORDER BY username ASC';
+		$result = WCFACP::getDB()->sendQuery($sql);
+		
+		while($row = WCFACP::getDB()->fetchArray($result)) {
+			$users[] = $row;
+		}
+		
+		/*
+		// the same thing with guests
+		$sql = 'SELECT guest_name AS username, guest_name AS userID FROM wcf'.WCF_N.'_shoutbox WHERE userID=0 GROUP BY guest_name ORDER BY username ASC';
+		$result = WCFACP::getDB()->sendQuery($sql);
+		
+		while($row = WCFACP::getDB()->fetchArray($result)) {
+			$users[] = $row;
+		}
+		*/
+		
+		// show page
+		WCF::getTPL()->assign(array(
+			'users'    => $users,
+		));
+	}
+
+	/**
+	 * @see Page::show()
+	 */
+	public function show() {
+
+		// activate menu item
+		WCFACP::getMenu()->setActiveMenuItem('wcf.acp.menu.link.content.shoutbox.deleteMessages');
+
+		parent::show();
+	}
+}
+?>

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

 <?php
 // wcf imports
-require_once(WCF_DIR.'lib/page/AbstractPage.class.php');
+require_once(WCF_DIR.'lib/page/SortablePage.class.php');
 
 /**
  * Displays a list of all messages in the shoutbox-table for deletion.
  * @author	Christian Fischer
  * @package	net.northshirebund.wbb.shoutbox
  */
-class ShoutboxMessageListPage extends AbstractPage {
-	public $templateName	= 'shoutboxMessageList';
+class ShoutboxMessageListPage extends SortablePage {
+	const FIELDS = 'checkbox,message_id,message_ip,message_time,user,message_text';
+	
+	public $templateName     = 'shoutboxMessageList';
+	public $itemsPerPage     = 25;
+	public $defaultSortField = 'message_time';
+	public $defaultSortOrder = 'ASC';
 
+	public $specialSortFields = array();
+	public $realSortField = '';
+	public $sqlSelects = '';
+	public $sqlJoins = '';
+	public $sqlConditions = '';
+	public $letter = '';
+	public $activeFields = array();
+	public $searchID = 0;
+	public $userIDs = '';
+	public $activeField = '';
+	
+	
 	/**
-	 * @see Page::assignVariables()
+	 * @see Page::readParameters()
 	 */
-	public function assignVariables() {
-		parent::assignVariables();
-		$messages = array();
-		$users    = array();
+	public function readParameters() {
+		parent::readParameters();
+		
+		// active fields
+		$this->activeFields = explode(',', self::FIELDS);
 		
 		// delete selected messages
 		if(isset($_POST['selectedMessages'])) {
 			
 			if($selectedMessages != '') {
 				WCFACP::getDB()->sendQuery('DELETE FROM wcf'.WCF_N.'_shoutbox WHERE message_id IN('.$selectedMessages.')');
+				WCF::getCache()->addResource('shoutbox', WCF_DIR.'cache/cache.shoutbox.php', WCF_DIR.'lib/system/cache/CacheBuilderShoutbox.class.php');
+				WCF::getCache()->clearResource('shoutbox', true);
 			}
 		}
 		
-		// delete messages from user
-		if(isset($_POST['selectedUser'])) {
-			$selectedUser = intval($_POST['selectedUser']);
-			
-			if($selectedUser != 0) {
-				WCFACP::getDB()->sendQuery('DELETE FROM wcf'.WCF_N.'_shoutbox WHERE userID='.$selectedUser);
-			}
+		return;
+	}
+	
+	
+	/**
+	 * @see SortablePage::validateSortField()
+	 */
+	public function validateSortField() {
+		if($this->sortField) {
+			$this->realSortField = $this->sortField;
+		}
+		else {
+			$this->realSortField = $this->defaultSortField;
 		}
 		
+		switch ($this->sortField) {
+			case 'checkbox':	$this->realSortField = 'message_id';			break;
+			case 'user':		$this->realSortField = 'u.userID,guest_name';	break;
+			default: 															break;
+		}
+		
+		return;
+	}
+	
+	
+	/**
+	 * Returns the list of column headers.
+	 * 
+	 * @return	array 
+	 */
+	protected function getHeader() {
+		$header = array();
+		foreach ($this->activeFields as $field) {
+			$name = $field;
+			
+			switch($field) {
+				case 'checkbox':		$name = '';										break;
+				case 'message_id':		$name = 'wcf.acp.shoutbox.listheader.id';		break;
+				case 'message_ip':		$name = 'wcf.acp.shoutbox.listheader.ip';		break;
+				case 'message_time':	$name = 'wcf.acp.shoutbox.listheader.time';		break;
+				case 'user':			$name = 'wcf.acp.shoutbox.listheader.from';		break;
+				case 'message_text':	$name = 'wcf.acp.shoutbox.listheader.message';	break;
+				default:				$name = $field;									break;
+			}
+			
+			$header[] = array('field' => $field, 'name' => $name);
+		}
+		
+		return $header;
+	}
+	
+	/**
+	 * Counts the number of users.
+	 * 
+	 * @return	integer
+	 */
+	public function countItems() {
+		$sql = 'SELECT count(*) as count FROM wcf'.WCF_N.'_shoutbox sb LEFT JOIN wcf'.WCF_N.'_user u USING(userid) WHERE to_user=0';
+		$result = WCF::getDB()->sendQuery($sql);
+		
+		while(($row = WCF::getDB()->fetchArray($result))) {
+			return $row['count'];
+		}
+		
+		return 0;
+	}
+	
+	/**
+	 * @see Page::assignVariables()
+	 */
+	public function assignVariables() {
+		parent::assignVariables();
+		$messages = array();
+		
 		// 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
+						*, u.userID AS userID
+					FROM wcf'.WCF_N.'_shoutbox sb
+					LEFT JOIN wcf'.WCF_N.'_user u USING(userid)
+					WHERE	to_user=0
+					ORDER	BY '.$this->realSortField.' '.$this->sortOrder.'
+					LIMIT	'.$this->itemsPerPage.'
+					OFFSET	'.(($this->pageNo - 1) * $this->itemsPerPage)
+		;
+		
 		$result = WCFACP::getDB()->sendQuery($sql);
 		
 		while($row = WCFACP::getDB()->fetchArray($result)) {
-			array_push($messages, $row);
+			if($row['userID'] == 0) {
+				$row['user'] = '['.WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.guest').']'.$row['guest_name'];
+			}
+			else {
+				$row['user'] = $row['username'];
+			}
+			
+			//array_push($messages, $row);
+			$messages[] = $row;
 		}
 		
-		// get all users who had posted
-		$sql = 'SELECT u.userID, u.username FROM wcf'.WCF_N.'_shoutbox sb LEFT JOIN wcf'.WCF_N.'_user u USING(userid) WHERE u.userID>0 GROUP BY userID ORDER BY username ASC';
-		$result = WCFACP::getDB()->sendQuery($sql);
-		
-		while($row = WCFACP::getDB()->fetchArray($result)) {
-			array_push($users, $row);
-		}
-		
-		WCFACP::getTPL()->assign(array(
+		// show page
+		WCF::getTPL()->assign(array(
 			'messages' => $messages,
-			'users'    => $users
+			
+			'fields'   => $this->activeFields,
+			'header'   => $this->getHeader(),
+			'tabs'     => ''
 		));
 	}
 
 	public function show() {
 
 		// activate menu item
-		WCFACP::getMenu()->setActiveMenuItem('wcf.acp.menu.link.content.shoutbox');
+		WCFACP::getMenu()->setActiveMenuItem('wcf.acp.menu.link.content.shoutbox.messages');
 
 		parent::show();
 	}

shoutbox/files/lib/page/ShoutboxContentPage.class.php

 <?php
 require_once(WCF_DIR.'lib/page/AbstractPage.class.php');
 require_once(WCF_DIR.'lib/system/event/EventHandler.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');
 
 
 	public function readParameters() {
 		parent::readParameters();
 		
-		if (isset($_POST['message'])) {
-			$message   = StringUtil::trim($_POST['message']);
-			$userid    = WCF::getUser()->userID;
-			$guestname = 'NULL';
-			
-			if(CHARSET != 'UTF-8') {
-				$message = StringUtil::convertEncoding('UTF-8', CHARSET, $message);
-			}
-			
-			// set guestname, only for guests, of course
-			if(WCF::getUser()->userID == 0) {
-				if(isset($_REQUEST['guestname']) and !empty($_REQUEST['guestname'])) {
-					$new_name = trim($_REQUEST['guestname']);
-					
-					if($new_name == WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.guest')) {
-						// 'Guest' as username is handled in the same way as an empty name
-					}
-					else if (!UserUtil::isValidUsername($new_name)) {
-						$this->errormessage = WCF::getLanguage()->get('wcf.user.error.username.notValid');
-					}
-					/*
-					// i think, it's ok, if users can select names which are already registered, because the get a
-					// 'Guest' Prefix in the Shoutbox. Uncomment this if you don't think so!
-					else if (!UserUtil::isAvailableUsername($new_name)) {
-						$this->errormessage = WCF::getLanguage()->get('wcf.user.error.username.notUnique');
-					}
-					*/
-					else {
-						WCF::getSession()->setUsername($new_name);
-						WCF::getSession()->username = $new_name;
-					}
-				}
-				
-				if (WCF::getSession()->username) {
-					$guestname = WCF::getSession()->username;
-				}
-				
-				// if the user has still no username, we select a random number as his name
-				if($guestname == 'NULL') {
-					WCF::getSession()->setUsername($guestname = strval(rand(100, 999)));
-				}
-				
-				$guestname = "'$guestname'";
-			}
-			
-			if($message != '') {
-				$valid = true;
-				
-				if(!WCF::getUser()->getPermission('user.shoutbox.canWrite')) {
-					$this->errormessage = WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.error.noPostingAllowed');
-					$valid = false;
-				}
-				
-				if (ENABLE_CENSORSHIP) {
-					require_once(WCF_DIR.'lib/data/message/censorship/Censorship.class.php');
-					$result = Censorship::test($message);
-					
-					if ($result) {
-						WCF::getTPL()->assign('censoredWords', $result);
-						$valid = false;
-					}
-				}
-				
-				$messageDelay = WCF::getUser()->getPermission('user.shoutbox.messageDelay');
-				if ($messageDelay > 0) {
-					$messageDelayTimeout = WCF::getSession()->getVar('shoutboxMessageDelayTimeout');
-					
-					if ($messageDelayTimeout > TIME_NOW) {
-						// the user has to wait until the delay time has left
-						$seconds = intval($messageDelayTimeout - TIME_NOW);
-						$this->errormessage = eval('return "'.WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.error.inMessageDelay').'";');
-						$valid = false;
-					}
-					else {
-						// create a new delay
-						WCF::getSession()->register('shoutboxMessageDelayTimeout', (TIME_NOW + $messageDelay));
-					}
-				}
-				
-				if($valid) {
-					/*
-					// set nicknames per /nick command
-					if(substr($message, 0, 5) == '/nick') {
-						// only available for guests
-						if(WCF::getUser()->userID == 0) {
-							$new_name = trim(substr($message, 5));
-							
-							if (empty($new_name)) {
-								$this->errormessage = WCF::getLanguage()->get('wcf.global.error.empty');
-							}
-							if (!UserUtil::isValidUsername($new_name)) {
-								$this->errormessage = WCF::getLanguage()->get('wcf.user.error.username.notValid');
-							}
-							if (!UserUtil::isAvailableUsername($new_name)) {
-								$this->errormessage = WCF::getLanguage()->get('wcf.user.error.username.notUnique');
-							}
-							else {
-								WCF::getSession()->setUsername($new_name);
-							}
-						}
-					}
-					else
-					*/
-					if(substr($message, 0, 2) == '/w') {
-						$message = ltrim(substr($message, 2));
-						$name    = null;
-						$toUser  = -1;
-						
-						if(substr($message, 0, 1) == '"') {
-							$pos     = strpos($message, '"', 1);
-							$name    = trim(substr($message, 1, $pos - 1));
-							$message = ltrim(substr($message, $pos + 1));
-						}
-						else {
-							$pos     = strpos($message, ' ', 1);
-							$name    = trim(substr($message, 0, $pos));
-							$message = ltrim(substr($message, $pos));
-						}
-						
-						$result = WCF::getDB()->sendQuery('SELECT userID FROM wcf'.WCF_N.'_user WHERE username=\'' . $name . '\'');
-						while($row  = WCF::getDB()->fetchArray($result)) {
-							$toUser = $row['userID'];
-							break;
-						}
-						
-						if(WCF::getUser()->getPermission('user.shoutbox.canWhisper')) {
-							if($toUser == -1) {
-								$this->errormessage = eval('return "' . WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.error.userNotFound') . '";');
-							}
-							else {
-								WCF::getDB()->sendQuery("
-									INSERT INTO wcf".WCF_N."_shoutbox(userid,guest_name,to_user,message_text,message_time,message_ip)
-									VALUES ('".$userid."',$guestname,'".$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 {
-							$this->errormessage = WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.error.noWhisperAllowed');
-						}
-					}
-					else {
-						WCF::getDB()->sendQuery("
-							INSERT INTO wcf".WCF_N."_shoutbox(userid,guest_name,message_text,message_time,message_ip)
-							VALUES ('".$userid."',$guestname,'".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)."'");
-				 	}
-				} // if(!$this->errormessage)
-			}
+		if (isset($_REQUEST['message'])) {
+			self::handleMessage(StringUtil::trim($_REQUEST['message']));
 		}
 		
+		// the user wants to delete a message line per inline-delete
 		if(isset($_REQUEST['delete'])) {
 			$delete = intval($_REQUEST['delete']);
 			
 			if(($delete > 0) && WCF::getUser()->getPermission('mod.shoutbox.canInlineDelete')) {
 				WCF::getDB()->sendQuery("DELETE FROM wcf".WCF_N."_shoutbox WHERE message_id='$delete'");
+				WCF::getCache()->addResource('shoutbox', WCF_DIR.'cache/cache.shoutbox.php', WCF_DIR.'lib/system/cache/CacheBuilderShoutbox.class.php');
+				WCF::getCache()->clearResource('shoutbox', true);
 			}
 		}
 		
 	
 	
 	/**
-	 * Validates the username.
+	 * handles a message which should added to the shoutbox.
+	 * handleMessage will check permissions, censorship and applies a flood control mechanism.
+	 * If the message passes all of this steps, it checks if the message begins with an slash command
+	 * like /w and delegates the message to the correct function.
+	 * @param message the message which should be handled
 	 */
-	protected function validateUsername($username) {
-		require_once(WCF_DIR.'lib/system/exception/UserInputException.class.php');
+	protected function handleMessage($message) {
+		$userid    = WCF::getUser()->userID;
 		
-		// username
-		if (empty($username)) {
-			throw new UserInputException('username');
-		}
-		if (!UserUtil::isValidUsername($username)) {
-			throw new UserInputException('username', 'notValid');
-		}
-		if (!UserUtil::isAvailableUsername($username)) {
-			throw new UserInputException('username', 'notAvailable');
+		if(CHARSET != 'UTF-8') {
+			$message = StringUtil::convertEncoding('UTF-8', CHARSET, $message);
 		}
 		
-		return true;
-	}
-	
-	protected function addMessage() {
-	}
-	
-	
-	protected function readMessages() {
-		$parser = MessageParser::getInstance();
-		$parser->setOutputType('text/html');
-		
-		$canWhisper = WCF::getUser()->getPermission('user.shoutbox.canWhisper');
-		
-		$sql = '
-			SELECT		sb.*, 
-						u.userID, u.username,
-						u2.username AS to_username
-			FROM 		wcf'.WCF_N.'_shoutbox	sb
-			LEFT JOIN	wcf'.WCF_N.'_user		u
-			USING		(userid)
-			LEFT JOIN	wcf'.WCF_N.'_user		u2
-			ON			(sb.to_user = u2.userID)
-			WHERE		message_time > '.$this->lastmessage.' AND (to_user=0 OR to_user='.WCF::getUser()->userID.' OR u.userID='.WCF::getUser()->userID.')
-			ORDER BY 	message_time DESC
-			LIMIT		0,'.SHOUTBOX_MESSAGECOUNT.'
-		';		
-		
-		$result = WCF::getDB()->sendQuery($sql);
-		//WCF::getTPL()->assign('sql', $sql);
-		
-		while($row = WCF::getDB()->fetchArray($result)) {
-			$message              = $row['message_text'];
-			$row['class']         = 'shoutboxMessage';
-			$row['isEmote']       = '0';
-			$row['isWhisperIn']   = '0';
-			$row['isWhisperOut']  = '0';
-			
-			// incoming whispers
-			if($row['to_user'] != 0 && $row['to_user'] == WCF::getUser()->userID) {
-				$row['class']        = 'shoutboxWhisperIn';
-				$row['isWhisperIn']  = '1';
-			}
-			// outgoing whispers
-			else if($row['to_user'] != 0) {
-				$row['class']        = 'shoutboxWhisperOut';
-				$row['isWhisperOut'] = '1';
-			}
-			// emotes
-			else if(substr($message, 0, 4) == '/me ') {
-				$row['class']        = 'shoutboxEmote';
-				$row['isEmote']      = '1';
-				$message             = substr($message, 4);
+		if($message != '') {
+			// check, if the user has the canWrite-permission or cancel the message request
+			if(!WCF::getUser()->getPermission('user.shoutbox.canWrite')) {
+				$this->errormessage = WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.error.noPostingAllowed');
+				return;
 			}
 			
-			// parse URLs
-			$message = URLParser::parse($message);
-			
-			// parse smilies
-			$message = $parser->parse($message, /*smilies*/true, /*html*/false, SHOUTBOX_ALLOWBBCODE, /*highlighting*/false);
-			
-			// convert [url] into <a href...
-			if(!SHOUTBOX_ALLOWBBCODE) {
-				$message = preg_replace('/\[url\]([a-zA-Z]+\:\/\/.+?)\[\/url\]/', '<a href="\1" target="_blank">\1</a>', $message);
-				$message = preg_replace('/\[url\](.+?)\[\/url\]/', '<a href="http://\1" target="_blank">\1</a>', $message);
-			}
-			
-			// convert *emote* into <i>emote</i>
-			$message = preg_replace('/\*(.+?)\*/', '<i>\1</i>', $message);
-			
-			$row['message_text'] = $message;
-			
-			// set name for guests
-			if ($row['userID'] == 0) {
-				if(isset($row['guest_name'])) {
-					$row['username'] = '['.WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.guest').']'.$row['guest_name'];
-				}
-				else {
-					$row['username'] = WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.guest');
+			// send an error message if the message contains censored words
+			if (ENABLE_CENSORSHIP) {
+				require_once(WCF_DIR.'lib/data/message/censorship/Censorship.class.php');
+				$result = Censorship::test($message);
+				
+				if ($result) {
+					WCF::getTPL()->assign('censoredWords', $result);
+					return;
 				}
 			}
 			
-			// 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>';
+			// FloodControl - send an error message, if the user has already sent a message in the given delay time
+			$messageDelay = WCF::getUser()->getPermission('user.shoutbox.messageDelay');
+			if ($messageDelay > 0) {
+				$messageDelayTimeout = WCF::getSession()->getVar('shoutboxMessageDelayTimeout');
+				
+				if ($messageDelayTimeout > TIME_NOW) {
+					// the user has to wait until the delay time has left
+					$seconds = intval($messageDelayTimeout - TIME_NOW);
+					$this->errormessage = eval('return "'.WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.error.inMessageDelay').'";');
+					return;
+				}
+				else {
+					// create a new delay
+					WCF::getSession()->register('shoutboxMessageDelayTimeout', (TIME_NOW + $messageDelay));
+				}
+			}
+			
+			// set nicknames per /nick command
+			if(substr($message, 0, 5) == '/nick') {
+				$this->handleNickCmd($message);
+			}
+			else if(substr($message, 0, 2) == '/w') {
+				// whisper command
+				$this->handleWhisperCommand($message);
 			}
 			else {
-				$row['username_whisper'] = $row['username'];
+				self::addMessage($message);
+			}
+		}
+		
+		return;
+	}
+	
+	
+	protected function handleNickCmd($message) {
+		// only available for guests
+		if(WCF::getUser()->userID == 0) {
+			$new_name = trim(substr($message, 5));
+			
+			if (empty($new_name)) {
+				$this->errormessage = WCF::getLanguage()->get('wcf.global.error.empty');
+			}
+			if (!UserUtil::isValidUsername($new_name)) {
+				$this->errormessage = WCF::getLanguage()->get('wcf.user.error.username.notValid');
+			}
+			if (!UserUtil::isAvailableUsername($new_name)) {
+				$this->errormessage = WCF::getLanguage()->get('wcf.user.error.username.notUnique');
+			}
+			else {
+				WCF::getSession()->setUsername($new_name);
+			}
+		}
+		
+		return;
+	}
+	
+	
+	protected function handleWhisperCommand($message) {
+		if(WCF::getUser()->getPermission('user.shoutbox.canWhisper')) {
+			$message = ltrim(substr($message, 2));
+			$name    = null;
+			$toUser  = -1;
+			
+			// extract the username from the message
+			if(substr($message, 0, 1) == '"') {
+				$pos     = strpos($message, '"', 1);
+				$name    = trim(substr($message, 1, $pos - 1));
+				$message = ltrim(substr($message, $pos + 1));
+			}
+			else {
+				$pos     = strpos($message, ' ', 1);
+				$name    = trim(substr($message, 0, $pos));
+				$message = ltrim(substr($message, $pos));
 			}
 			
-			array_push($this->messages, $row);
+			// get the ID of the user
+			$result = WCF::getDB()->sendQuery('SELECT userID FROM wcf'.WCF_N.'_user WHERE username=\'' . $name . '\'');
+			while($row  = WCF::getDB()->fetchArray($result)) {
+				$toUser = $row['userID'];
+				break;
+			}
 			
-			$this->lastmessage = max($this->lastmessage, $row['message_time']);
+			if($toUser > 0) {
+				self::addMessage($message, $toUser);
+			}
+			else {
+				$this->errormessage = eval('return "' . WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.error.userNotFound') . '";');
+			}
+		}
+		else {
+			$this->errormessage = WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.error.noWhisperAllowed');
 		}
 		
-		if($this->output == 'xml') {
-			$this->messages = array_reverse($this->messages);
+		return;
+	}
+	
+	
+	/**
+	 * Simply adds a new message to the shoutbox without checking permissions etc
+	 * @param message contains the message which should be stored
+	 * @param toUser  contains the ID of a user, if the message should be whispered to this user,
+	 *                or 0 if it should be sent to all users.
+	 */
+	public static function addMessage($message, $toUser=0) {
+		$guestname = 'NULL';
+		
+		// set guestname, only for guests, of course
+		if(WCF::getUser()->userID == 0) {
+			if(isset($_REQUEST['guestname']) and !empty($_REQUEST['guestname'])) {
+				$new_name = trim($_REQUEST['guestname']);
+				
+				if($new_name == WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.guest')) {
+					// 'Guest' as username is handled in the same way as an empty name
+				}
+				else if (!UserUtil::isValidUsername($new_name)) {
+					$this->errormessage = WCF::getLanguage()->get('wcf.user.error.username.notValid');
+					return;
+				}
+				/*
+				// i think, it's ok, if users can select names which are already registered, because the get a
+				// 'Guest' Prefix in the Shoutbox. Uncomment this if you don't think so!
+				else if (!UserUtil::isAvailableUsername($new_name)) {
+					$this->errormessage = WCF::getLanguage()->get('wcf.user.error.username.notUnique');
+					return;
+				}
+				*/
+				else {
+					WCF::getSession()->setUsername($new_name);
+					WCF::getSession()->username = $new_name;
+				}
+			}
+			
+			// is there a name stored in the session?
+			if (WCF::getSession()->username) {
+				$guestname = WCF::getSession()->username;
+			}
+			
+			// if the user has still no username, we select a random number as his name
+			if($guestname == 'NULL') {
+				WCF::getSession()->setUsername($guestname = strval(rand(100, 999)));
+			}
+			
+			// quote the name for the SQL query
+			$guestname = "'$guestname'";
 		}
 		
+		// store the message in the database
+		WCF::getDB()->sendQuery("
+			INSERT INTO wcf".WCF_N."_shoutbox(userid,guest_name,to_user,message_text,message_time,message_ip)
+			VALUES ('".WCF::getUser()->userID."',$guestname,'$toUser','".escapeString($message)."','".TIME_NOW."', '".UserUtil::getIpAddress()."')"
+		);
+		
+		// get the ID of the new message and delete old messages
+		$messageid = WCF::getDB()->getInsertID();
+		WCF::getDB()->sendQuery("DELETE FROM wcf".WCF_N."_shoutbox WHERE message_id<'".($messageid-SHOUTBOX_STOREDMESSAGES)."'");
+		
+		// update the cache
+		WCF::getCache()->addResource('shoutbox', WCF_DIR.'cache/cache.shoutbox.php', WCF_DIR.'lib/system/cache/CacheBuilderShoutbox.class.php');
+		WCF::getCache()->clearResource('shoutbox', true);
+		
+		return;
+	}
+	
+	
+	public function getCachedMessages() {
+		WCF::getCache()->addResource('shoutbox', WCF_DIR.'cache/cache.shoutbox.php', WCF_DIR.'lib/system/cache/CacheBuilderShoutbox.class.php');
+		
+		if($this->lastmessage < WCF::getCache()->get('shoutbox', 'lastmessage')) {
+			$cachemessages    = WCF::getCache()->get('shoutbox', 'messages');
+			$canWhisper       = WCF::getUser()->getPermission('user.shoutbox.canWhisper');
+			$counter          = 0;
+			
+			foreach($cachemessages as $message) {
+				if($message['message_time'] <= $this->lastmessage) break;
+				if(++$counter > SHOUTBOX_MESSAGECOUNT) break;
+				
+				// set name for guests
+				if ($message['userID'] == 0) {
+					if(isset($message['guest_name'])) {
+						$message['username'] = '['.WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.guest').']'.$message['guest_name'];
+					}
+					else {
+						$message['username'] = WCF::getLanguage()->get('net.northshirebund.wbb.shoutbox.guest');
+					}
+				}
+				
+				// set whisperable username, if the current user is able to whisper
+				if ($message['userID'] != 0 && $message['userID'] != WCF::getUser()->userID && $canWhisper) {
+					$message['username_whisper'] = '<a href="javascript:parent.sbWhisperTo(\''.StringUtil::encodeHTML($message['username']).'\');">'.$message['username'].'</a>';
+				}
+				else {
+					$message['username_whisper'] = $message['username'];
+				}
+				
+				$this->messages[] = $message;
+			}
+			
+			if ($this->output == 'xml') {
+				$this->messages = array_reverse($this->messages);
+			}
+		}
+		
+		$this->lastmessage = WCF::getCache()->get('shoutbox', 'lastmessage');
+		
 		return;
 	}
 	
 	public function assignVariables() {
 		parent::assignVariables();
 		
-		$this->readMessages();
+		$this->getCachedMessages();
 		
 		if ($this->getOnlineList) {
 			$this->renderOnlineList();

shoutbox/files/lib/system/cache/CacheBuilderShoutbox.class.php

+<?php
+require_once(WCF_DIR.'lib/system/cache/CacheBuilder.class.php');
+
+/**
+ * @author	Christian Fischer
+ * @package	net.northshirebund.wbb.shoutbox
+ */
+class CacheBuilderShoutbox implements CacheBuilder {
+	/**
+	 * @see CacheBuilder::getData()
+	 */
+	public function getData($cacheResource) {
+		// get all required parser classes
+		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');
+		
+		$parser = MessageParser::getInstance();
+		$parser->setOutputType('text/html');
+		
+		$messages    = array();
+		$lastmessage = 0;
+		
+		$sql = '
+			SELECT		sb.*, 
+						u.userID, u.username,
+						u2.username AS to_username
+			FROM 		wcf'.WCF_N.'_shoutbox	sb
+			LEFT JOIN	wcf'.WCF_N.'_user		u
+			USING		(userid)
+			LEFT JOIN	wcf'.WCF_N.'_user		u2
+			ON			(sb.to_user = u2.userID)
+			ORDER BY 	message_time DESC
+		';		
+		
+		$result = WCF::getDB()->sendQuery($sql);
+		
+		while($row = WCF::getDB()->fetchArray($result)) {
+			$message              = $row['message_text'];
+			$row['class']         = 'shoutboxMessage';
+			$row['isEmote']       = '0';
+			$row['isWhisperIn']   = '0';
+			$row['isWhisperOut']  = '0';
+			
+			// incoming whispers
+			if($row['to_user'] != 0 && $row['to_user'] == WCF::getUser()->userID) {
+				$row['class']        = 'shoutboxWhisperIn';
+				$row['isWhisperIn']  = '1';
+			}
+			// outgoing whispers
+			else if($row['to_user'] != 0) {
+				$row['class']        = 'shoutboxWhisperOut';
+				$row['isWhisperOut'] = '1';
+			}
+			// emotes
+			else if(substr($message, 0, 4) == '/me ') {
+				$row['class']        = 'shoutboxEmote';
+				$row['isEmote']      = '1';
+				$message             = substr($message, 4);
+			}
+			
+			// parse URLs
+			$message = URLParser::parse($message);
+			
+			// parse smilies
+			$message = $parser->parse($message, /*smilies*/true, /*html*/false, SHOUTBOX_ALLOWBBCODE, /*highlighting*/false);
+			
+			// convert [url] into <a href...
+			if(!SHOUTBOX_ALLOWBBCODE) {
+				$message = preg_replace('/\[url\]([a-zA-Z]+\:\/\/.+?)\[\/url\]/', '<a href="\1" target="_blank">\1</a>', $message);
+				$message = preg_replace('/\[url\](.+?)\[\/url\]/', '<a href="http://\1" target="_blank">\1</a>', $message);
+			}
+			
+			// convert *emote* into <i>emote</i>
+			$message = preg_replace('/\*(.+?)\*/', '<i>\1</i>', $message);
+			
+			$row['message_text'] = $message;
+			
+			array_push($messages, $row);
+			
+			$lastmessage = max($lastmessage, $row['message_time']);
+		}
+		
+		$data = Array(
+				'messages'		=> $messages,
+				'lastmessage'	=> $lastmessage
+		);
+		
+		return $data;
+	}
+}
+?>

shoutbox/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="315.8362"/><Column ss:StyleID="Default" ss:Width="227.1118"/><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.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:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.refresh</Data></Cell><Cell><Data ss:Type="String">Aktualisieren</Data></Cell><Cell><Data ss:Type="String">refresh</Data></Cell></Row><Row ss:Index="8" ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.send</Data></Cell><Cell><Data ss:Type="String">Senden</Data></Cell><Cell><Data ss:Type="String">send</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.delete</Data></Cell><Cell><Data ss:Type="String">Löschen</Data></Cell><Cell><Data ss:Type="String">delete</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.deleteConfirm</Data></Cell><Cell><Data ss:Type="String">Soll diese Nachricht gelöscht werden?</Data></Cell><Cell><Data ss:Type="String">Would you like to delete this message?</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.error.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.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.error.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><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.error.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:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox.error.inMessageDelay</Data></Cell><Cell><Data ss:Type="String">Warte bitte $seconds Sekunden, bis Du eine weitere Nachricht schreiben kannst.</Data></Cell><Cell><Data ss:Type="String">Please wait $seconds seconds until you can send another message.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

shoutbox/lang/shoutbox.lang.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>#000000</RGB></Color><Color><Index>4</Index><RGB>#c0c0c0</RGB></Color><Color><Index>5</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="Normal" ss:Name="Normal"><Alignment ss:Vertical="Bottom"/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="co1"/><Style ss:ID="co2"/><Style ss:ID="co3"/><Style ss:ID="co4"/><Style ss:ID="co5"/><Style ss:ID="co6"/><Style ss:ID="co7"/><Style ss:ID="ta1"/><Style ss:ID="ce1"><Font ss:FontName="DejaVu Sans1" ss:Size="10"/></Style><Style ss:ID="ce2"><Alignment ss:WrapText="1"/><Font ss:FontName="DejaVu Sans11" ss:Size="10"/></Style><Style ss:ID="ce3"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman1" ss:Size="10"/></Style><Style ss:ID="ce4"><Alignment ss:WrapText="1"/><Font ss:FontName="Times New Roman11" ss:Size="10"/></Style><Style ss:ID="ce5"><Alignment ss:WrapText="1"/></Style><Style ss:ID="ce6"><Alignment ss:Vertical="Bottom" ss:WrapText="1"/></Style></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="Default" ss:Width="90.3402"/><Column ss:StyleID="ce4" ss:Width="385.4551"/><Column ss:StyleID="ce5" ss:Width="227.1118"/><Column ss:StyleID="ce5" ss:Width="219.0897"/><Column ss:StyleID="ce5" ss:Width="196.6394"/><Column ss:StyleID="ce6" ss:Width="227.2535"/><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:Index="2" ss:StyleID="Default"/><Cell><Data ss:Type="String">De</Data></Cell><Cell><Data ss:Type="String">De-informal</Data></Cell><Cell><Data ss:Type="String">En</Data></Cell><Cell><Data ss:Type="String">It</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><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><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</Data></Cell><Cell ss:StyleID="Default"><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">Ein Chat-Frame</Data></Cell><Cell><Data ss:Type="String">A chat frame</Data></Cell><Cell><Data ss:Type="String">Una struttura di chiacchierata</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.guest</Data></Cell><Cell><Data ss:Type="String">Gast</Data></Cell><Cell><Data ss:Type="String">Gast</Data></Cell><Cell><Data ss:Type="String">Guest</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">ospite</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.whisperTo</Data></Cell><Cell><Data ss:Type="String">An</Data></Cell><Cell><Data ss:Type="String">An</Data></Cell><Cell><Data ss:Type="String">To</Data></Cell><Cell><Data ss:Type="String">a</Data></Cell></Row><Row ss:Index="6" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.whisperFrom</Data></Cell><Cell><Data ss:Type="String">Von</Data></Cell><Cell><Data ss:Type="String">Von</Data></Cell><Cell><Data ss:Type="String">From</Data></Cell><Cell><Data ss:Type="String">da</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="ce1"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.refresh</Data></Cell><Cell><Data ss:Type="String">Aktualisieren</Data></Cell><Cell><Data ss:Type="String">Aktualisieren</Data></Cell><Cell><Data ss:Type="String">refresh</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">rinfrescare</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.send</Data></Cell><Cell><Data ss:Type="String">Senden</Data></Cell><Cell><Data ss:Type="String">Senden</Data></Cell><Cell><Data ss:Type="String">send</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">trasmettere</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.delete</Data></Cell><Cell><Data ss:Type="String">Löschen</Data></Cell><Cell><Data ss:Type="String">Löschen</Data></Cell><Cell><Data ss:Type="String">delete</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">cancellazione</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.deleteConfirm</Data></Cell><Cell><Data ss:Type="String">Soll diese Nachricht gelöscht werden?</Data></Cell><Cell><Data ss:Type="String">Soll diese Nachricht gelöscht werden?</Data></Cell><Cell><Data ss:Type="String">Would you like to delete this message?</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">gradite cancellare questo messaggio?</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.error.userNotFound</Data></Cell><Cell><Data ss:Type="String">Benutzer $name wurde nicht gefunden.</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><Cell><Data ss:Type="String">Utente $name non trovato.</Data></Cell></Row><Row ss:Index="12" ss:AutoFitHeight="0" ss:Height="23.8394"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.error.noPostingAllowed</Data></Cell><Cell><Data ss:Type="String">Sie dürfen hier leider keine Nachrichten schreiben.</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><Cell ss:StyleID="Normal"><Data ss:Type="String">Non siete permessi inviare i messaggi.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="23.8394"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.error.noWhisperAllowed</Data></Cell><Cell><Data ss:Type="String">Sie dürfen leider keine geflüsterten Nachrichten versenden.</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><Cell ss:StyleID="Normal"><Data ss:Type="String">Non siete permessi trasmettere i messaggi di bisbiglio ad altri utenti.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="35.0362"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.error.inMessageDelay</Data></Cell><Cell><Data ss:Type="String">Warten Sie bitte $seconds Sekunden, bis Sie eine weitere Nachricht schreiben können.</Data></Cell><Cell><Data ss:Type="String">Warte bitte $seconds Sekunden, bis Du eine weitere Nachricht schreiben kannst.</Data></Cell><Cell><Data ss:Type="String">Please wait $seconds seconds until you can send another message.</Data></Cell><Cell><Data ss:Type="String">Attendere prego i $seconds secondi fino a che non possiate trasmettere un altro messaggio.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="2" ss:StyleID="Default"/><Cell ss:Index="6"><Data ss:Type="String"> </Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><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><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">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><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><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </Data></Cell></Row><Row ss:Index="18" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.group.option.category.mod.shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">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><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><Data ss:Type="String">wcf.acp.group.option.category.mod.shoutbox.description</Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </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.group</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.group.option.category.admin.shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">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><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><Data ss:Type="String">wcf.acp.group.option.category.admin.shoutbox.description</Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </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><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><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">Lesen</Data></Cell><Cell><Data ss:Type="String">Read</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">colto</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="35.0362"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><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">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><Cell><Data ss:Type="String">L'utente può leggere i messaggi nello shoutbox.&lt;br/&gt;Se inabilitato, lo shoutbox sarà nascosto per questo utente.</Data></Cell></Row><Row ss:Index="24" ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><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">Schreiben</Data></Cell><Cell><Data ss:Type="String">Write</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">scrivere</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><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">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><Cell ss:StyleID="Normal"><Data ss:Type="String">Permette che l'utente invii i messaggi nello shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><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">Flüstern</Data></Cell><Cell><Data ss:Type="String">Whisper</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Bisbiglio</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><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">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><Cell ss:StyleID="Normal"><Data ss:Type="String">Permette che l'utente trasmetta i bisbigli ad altri utenti.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.messageDelay</Data></Cell><Cell><Data ss:Type="String">Kann nur alle &lt;i&gt;n&lt;/i&gt; Sekunden eine Nachricht schreiben</Data></Cell><Cell><Data ss:Type="String">Kann nur alle &lt;i&gt;n&lt;/i&gt; Sekunden eine Nachricht schreiben</Data></Cell><Cell><Data ss:Type="String">Can write only one message in &lt;i&gt;n&lt;/i&gt; seconds</Data></Cell><Cell><Data ss:Type="String">Can write only one message in &lt;i&gt;n&lt;/i&gt; secondi</Data></Cell></Row><Row ss:Index="29" ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.messageDelay.description</Data></Cell><Cell><Data ss:Type="String">Der Benutzer kann nur eine Nachricht in dem angegebenen Zeitraum senden.&lt;br/&gt;Es gilt jeweils der höchste Wert aller Gruppen, zu der der Benutzer gehört.</Data></Cell><Cell><Data ss:Type="String">Der Benutzer kann nur eine Nachricht in dem angegebenen Zeitraum senden.&lt;br/&gt;Es gilt jeweils der höchste Wert aller Gruppen, zu der der Benutzer gehört.</Data></Cell><Cell><Data ss:Type="String">The user can write a message only every &lt;i&gt;n&lt;/i&gt; seconds.&lt;br/&gt;The largest value of all groups of the user will be used.</Data></Cell><Cell><Data ss:Type="String"> L'utente può scrivere un messaggio soltanto ogni &lt;i&gt;n&lt;/i&gt; secondi.&lt;/br&gt;La più grande validità di tutti i gruppi dell'utente sarà usata.L'utente può scrivere un messaggio soltanto ogni .&lt;br/&gt;Es gilt jeweils der höchste Wert aller Gruppen, zu der der Benutzer gehört.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.group.option.mod.shoutbox.canInlineDelete</Data></Cell><Cell><Data ss:Type="String">Nachrichten löschen</Data></Cell><Cell><Data ss:Type="String">Nachrichten löschen</Data></Cell><Cell><Data ss:Type="String">Can delete messages</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Può cancellare i messaggi</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.group.option.mod.shoutbox.canInlineDelete.description</Data></Cell><Cell><Data ss:Type="String">Kann Nachrichten direkt in der Shoutbox löschen.</Data></Cell><Cell><Data ss:Type="String">Kann Nachrichten direkt in der Shoutbox löschen.</Data></Cell><Cell><Data ss:Type="String">Can delete messages in the shoutbox.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Può cancellare i messaggi nello shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><Data ss:Type="String">wcf.acp.group.option.admin.shoutbox.canManageMessages</Data></Cell><Cell><Data ss:Type="String">Shoutbox Nachrichten verwalten</Data></Cell><Cell><Data ss:Type="String">Shoutbox Nachrichten verwalten</Data></Cell><Cell><Data ss:Type="String">Manage Shoutbox messages</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Controllare i messaggi di Shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group</Data></Cell><Cell ss:StyleID="ce2"><Data ss:Type="String">wcf.acp.group.option.admin.shoutbox.canManageMessages.description</Data></Cell><Cell><Data ss:Type="String">Kann Shoutbox-Nachrichten im ACP löschen.</Data></Cell><Cell><Data ss:Type="String">Kann Shoutbox-Nachrichten im ACP löschen.</Data></Cell><Cell><Data ss:Type="String">Can delete messages in the ACP.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Può cancellare i messaggi nell'ACP.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="2" ss:StyleID="Default"/><Cell ss:Index="6"/></Row><Row ss:Index="35" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.menu</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.menu.link.content.shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">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><Data ss:Type="String">wcf.acp.menu</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.menu.link.content.shoutbox.messages</Data></Cell><Cell><Data ss:Type="String">Nachrichten</Data></Cell><Cell><Data ss:Type="String">Nachrichten</Data></Cell><Cell><Data ss:Type="String">Messages</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Messaggi</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.menu</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.menu.link.content.shoutbox.deleteMessages</Data></Cell><Cell><Data ss:Type="String">Nachrichten löschen</Data></Cell><Cell><Data ss:Type="String">Nachrichten löschen</Data></Cell><Cell><Data ss:Type="String">Delete messages</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Messaggi di cancellazione</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="2" ss:StyleID="Default"/><Cell ss:Index="6"/></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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><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">wcf.acp.option</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.option.category.shoutbox.description </Data></Cell><Cell><Data ss:Type="String">Eine einfache Chat-Box für das WCF</Data></Cell><Cell><Data ss:Type="String">Eine einfache Chat-Box für das WCF</Data></Cell><Cell><Data ss:Type="String">A simple chatbox for the WCF</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Un scatola di chiacchierata semplice per il WCF</Data></Cell></Row><Row ss:Index="41" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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-Einstellungen</Data></Cell><Cell><Data ss:Type="String">Shoutbox-Options</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Shoutbox-Opzioni</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.options.description </Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </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</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.layout</Data></Cell><Cell><Data ss:Type="String">Layout-Einstellungen</Data></Cell><Cell><Data ss:Type="String">Layout-Einstellungen</Data></Cell><Cell><Data ss:Type="String">Layout-Options</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Disposizione-Opzioni</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.layout.description </Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </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</Data></Cell><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">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><Cell><Data ss:Type="String">Rinfrescare dopo la struttura &lt;i&gt;n&lt;/i&gt; sec.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_reloadtime.description </Data></Cell><Cell><Data ss:Type="String">Wenn JavaScript verwendet wird:&lt;br/&gt;Legt die Zeit fest, nach der neue Nachrichte vom Server abgerufen werden.&lt;br/&gt;Ohne JavaScript:&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">Wenn JavaScript verwendet wird:&lt;br/&gt;Legt die Zeit fest, nach der neue Nachrichte vom Server abgerufen werden.&lt;br/&gt;Ohne JavaScript:&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 JavaScript:&lt;br/&gt;Determines the time, after which will be polled for new messages.&lt;br/&gt;Without JavaScript:&lt;br/&gt;Determines the time, after wich the used iframe will be reloaded.&lt;br/&gt;0 means no reloading.</Data></Cell><Cell><Data ss:Type="String">Se usando Javascript:&lt;br/&gt; Determina il tempo, dopo di che sarà votato per i nuovi messaggi.&lt;br/&gt;Senza JavaScript:&lt;br/&gt;Determina il tempo, dopo che il wich il iframe usato sia mezzi reloaded.&lt;br/&gt;0 nessun ricaricamento.</Data></Cell></Row><Row ss:Index="47" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">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><Cell><Data ss:Type="String">Mostrare che durare &lt;i&gt;n&lt;/i&gt; messaggi</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><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">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><Cell ss:StyleID="Normal"><Data ss:Type="String">Determina il numero di messaggi, che inizialmente saranno caricati.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">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><Cell><Data ss:Type="String">immagazzinare il massimo  &lt;i&gt;n&lt;/i&gt; messaggi</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">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><Cell ss:StyleID="Normal"><Data ss:Type="String">Determina il numero di messaggi, che saranno immagazzinati nella base di dati.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">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><Cell ss:StyleID="Normal"><Data ss:Type="String">Permettere che gli ospiti inviino nello shoutbox</Data></Cell></Row><Row ss:Index="52" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_allowguests.description</Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </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><Data ss:Type="String">wcf.acp.option</Data></Cell><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">Breite der Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox width</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Larghezza di Shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">Standard-Breite des Shoutbox-Frames.</Data></Cell><Cell><Data ss:Type="String">Default width of the shoutbox frame.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Larghezza di difetto del telaio dello shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">Höhe der Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox height</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Altezza di Shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">Standard-Höhe des Shoutbox-Frames.</Data></Cell><Cell><Data ss:Type="String">Default height of the shoutbox frame.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Altezza di difetto del telaio dello shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">Nachrichten-Reihenfolge</Data></Cell><Cell><Data ss:Type="String">Message order</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Ordine del messaggio</Data></Cell></Row><Row ss:Index="58" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><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><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</Data></Cell><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">Neueste Nachricht unten</Data></Cell><Cell><Data ss:Type="String">Newest message at the bottom</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Più nuovo messaggio alla parte inferiore</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">Neueste Nachricht oben</Data></Cell><Cell><Data ss:Type="String">Newest message first</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Più nuovo messaggio in primo luogo</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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">Erlaube BBCode in der Shoutbox.</Data></Cell><Cell><Data ss:Type="String">Allow BB-Codes in the shoutbox.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Permettere i BB-Codici nello shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="35.0362"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><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.ä. innerhalb der Shoutbox.</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.ä. innerhalb 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><Cell ss:StyleID="Normal"><Data ss:Type="String">Permette l'uso dei BB-Codici come &lt;b&gt; [b] &lt;/b&gt; o &lt;b&gt; [img] &lt;/b&gt; all'interno dello shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_width</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Breite</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Breite</Data></Cell><Cell><Data ss:Type="String">Smileybox width</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Larghezza di Smileybox</Data></Cell></Row><Row ss:Index="64" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_width.description</Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </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><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_height</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Höhe</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Höhe</Data></Cell><Cell><Data ss:Type="String">Smileybox height</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Altezza di Smileybox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_height.description</Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </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><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_cols</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Spalten</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Spalten</Data></Cell><Cell><Data ss:Type="String">Smileybox columns</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Colonne di Smileybox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_cols.description</Data></Cell><Cell><Data ss:Type="String">Anzahl der Spalten für die Smiley-Box.</Data></Cell><Cell><Data ss:Type="String">Anzahl der Spalten für die Smiley-Box.</Data></Cell><Cell><Data ss:Type="String">Number of columns in the smiley box.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Numero di colonne nella scatola di smiley.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_rows</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Reihen</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Reihen</Data></Cell><Cell><Data ss:Type="String">Smileybox rows</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">File di Smileybox</Data></Cell></Row><Row ss:Index="70" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_rows.description</Data></Cell><Cell><Data ss:Type="String">Anzahl der Reihen für die Smiley-Box.</Data></Cell><Cell><Data ss:Type="String">Anzahl der Reihen für die Smiley-Box.</Data></Cell><Cell><Data ss:Type="String">Number of rows in the smiley box.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Numero di file nella scatola di smiley.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation</Data></Cell><Cell><Data ss:Type="String">Smileybox Ausrichtung</Data></Cell><Cell><Data ss:Type="String">Smileybox Ausrichtung</Data></Cell><Cell><Data ss:Type="String">Smileybox orientation</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Orientamento di Smileybox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.description</Data></Cell><Cell><Data ss:Type="String">Bestimmt die Ausrichtung der Smileybox zur Shoutbox&lt;br/&gt;“Eigene Einstellung“ ist reserviert für eigene Template-Anpassungen.</Data></Cell><Cell><Data ss:Type="String">Bestimmt die Ausrichtung der Smileybox zur Shoutbox&lt;br/&gt;“Eigene Einstellung“ ist reserviert für eigene Template-Anpassungen.</Data></Cell><Cell><Data ss:Type="String">Determines the orientation of the smiley box relativ to the shoutbox.&lt;br/&gt;“Custom“ is reserved for template customisation.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Determina l'orientamento del relativ della scatola di smiley allo shoutbox.&lt;br/&gt; “abitudine “è riservato per adattamento della mascherina.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.left</Data></Cell><Cell><Data ss:Type="String">Links</Data></Cell><Cell><Data ss:Type="String">Links</Data></Cell><Cell><Data ss:Type="String">Left</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Di sinistra</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.right</Data></Cell><Cell><Data ss:Type="String">Rechts</Data></Cell><Cell><Data ss:Type="String">Rechts</Data></Cell><Cell><Data ss:Type="String">Right</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Destra</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.bottom</Data></Cell><Cell><Data ss:Type="String">Unten</Data></Cell><Cell><Data ss:Type="String">Unten</Data></Cell><Cell><Data ss:Type="String">Bottom</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Parte inferiore</Data></Cell></Row><Row ss:Index="76" ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.custom</Data></Cell><Cell><Data ss:Type="String">Eigene Einstellung</Data></Cell><Cell><Data ss:Type="String">Eigene Einstellung</Data></Cell><Cell><Data ss:Type="String">Custom</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Abitudine</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.none</Data></Cell><Cell><Data ss:Type="String">Nicht anzeigen</Data></Cell><Cell><Data ss:Type="String">Nicht anzeigen</Data></Cell><Cell><Data ss:Type="String">Don't display</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Non visualizzare</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="2" ss:StyleID="Default"/><Cell ss:Index="6"/></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.shoutbox.title</Data></Cell><Cell><Data ss:Type="String">Shoutbox Nachrichten</Data></Cell><Cell><Data ss:Type="String">Shoutbox Nachrichten</Data></Cell><Cell><Data ss:Type="String">Shoutbox Messages</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Messaggi di Shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.delete</Data></Cell><Cell><Data ss:Type="String">Löschen</Data></Cell><Cell><Data ss:Type="String">Löschen</Data></Cell><Cell><Data ss:Type="String">Delete</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Cancellazione</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.deleteMessagesFromUser</Data></Cell><Cell><Data ss:Type="String">Alle Nachrichten von</Data></Cell><Cell><Data ss:Type="String">Alle Nachrichten von</Data></Cell><Cell><Data ss:Type="String">Messages from</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Messaggi da</Data></Cell></Row><Row ss:Index="82" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.clear</Data></Cell><Cell><Data ss:Type="String">Shoutbox leeren</Data></Cell><Cell><Data ss:Type="String">Shoutbox leeren</Data></Cell><Cell><Data ss:Type="String">Clear the shoutbox</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Eliminare lo shoutbox</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.clearConfirm</Data></Cell><Cell><Data ss:Type="String">Hiermit bestätige ich, daß ich mich im Vollbesitz meiner geistigen Kräfte dazu  entschlossen habe, alle Nachrichten die in der Shoutbox gespeichert sind unwiederruflich zu löschen.</Data></Cell><Cell><Data ss:Type="String">Hiermit bestätige ich, daß ich mich im Vollbesitz meiner geistigen Kräfte dazu  entschlossen habe, alle Nachrichten die in der Shoutbox gespeichert sind unwiederruflich zu löschen.</Data></Cell><Cell><Data ss:Type="String">Yes.. I'm really sure... I want to delete all messages stored in the shoutbox.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Sì. Sono realmente sicuro… Desidero cancellare tutti i messaggi immagazzinati nello shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.listheader.id</Data></Cell><Cell><Data ss:Type="String">ID</Data></Cell><Cell><Data ss:Type="String">ID</Data></Cell><Cell><Data ss:Type="String">ID</Data></Cell><Cell><Data ss:Type="String">ID</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.listheader.ip</Data></Cell><Cell><Data ss:Type="String">IP</Data></Cell><Cell><Data ss:Type="String">IP</Data></Cell><Cell><Data ss:Type="String">IP</Data></Cell><Cell><Data ss:Type="String">IP</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.listheader.time</Data></Cell><Cell><Data ss:Type="String">Zeit</Data></Cell><Cell><Data ss:Type="String">Zeit</Data></Cell><Cell><Data ss:Type="String">Time</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Tempo</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.listheader.from</Data></Cell><Cell><Data ss:Type="String">Von</Data></Cell><Cell><Data ss:Type="String">Von</Data></Cell><Cell><Data ss:Type="String">From</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Da</Data></Cell></Row><Row ss:Index="88" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.listheader.message</Data></Cell><Cell><Data ss:Type="String">Nachricht</Data></Cell><Cell><Data ss:Type="String">Nachricht</Data></Cell><Cell><Data ss:Type="String">Message</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Messaggio</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.deleteSelectedMessages</Data></Cell><Cell><Data ss:Type="String">Lösche die ausgewählten Nachrichten</Data></Cell><Cell><Data ss:Type="String">Lösche die ausgewählten Nachrichten</Data></Cell><Cell><Data ss:Type="String">Delete the selected messages</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Cancellare i messaggi selezionati</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox</Data></Cell><Cell ss:StyleID="ce3"><Data ss:Type="String">wcf.acp.shoutbox.nomessages</Data></Cell><Cell><Data ss:Type="String">Es sind keine Nachrichten vorhanden.</Data></Cell><Cell><Data ss:Type="String">Es sind keine Nachrichten vorhanden.</Data></Cell><Cell><Data ss:Type="String">There are no messages in the shoutbox.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Non ci sono messaggi nello shoutbox.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="95" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="65536" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

shoutbox/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="386.2488"/><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="13.4079"><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.group.option.category.mod.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.mod.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="13.4079"><Cell ss:StyleID="Default"><Data ss:Type="String">wcf.acp.group.option.category.admin.shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell></Row><Row ss:Index="7" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.group.option.category.admin.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: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:Index="14" ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.messageDelay</Data></Cell><Cell><Data ss:Type="String">Kann nur alle &lt;i&gt;n&lt;/i&gt; Sekunden eine Nachricht schreiben</Data></Cell><Cell><Data ss:Type="String">Can write only one message in &lt;i&gt;n&lt;/i&gt; seconds</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.group.option.user.shoutbox.messageDelay.description</Data></Cell><Cell><Data ss:Type="String">Der Benutzer kann nur eine Nachricht in dem angegebenen Zeitraum senden.&lt;br/&gt;Es gilt jeweils der höchste Wert aller Gruppen, zu der der Benutzer gehört.</Data></Cell><Cell><Data ss:Type="String">The user can write a message only every &lt;i&gt;n&lt;/i&gt; seconds.&lt;br/&gt;The largest value of all groups of the user will be used.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell><Data ss:Type="String">wcf.acp.group.option.mod.shoutbox.canInlineDelete</Data></Cell><Cell><Data ss:Type="String">Nachrichten löschen</Data></Cell><Cell><Data ss:Type="String">Can delete messages</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell><Data ss:Type="String">wcf.acp.group.option.mod.shoutbox.canInlineDelete.description</Data></Cell><Cell><Data ss:Type="String">Kann Nachrichten direkt in der Shoutbox löschen.</Data></Cell><Cell><Data ss:Type="String">Can delete 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.admin.shoutbox.canManageMessages</Data></Cell><Cell><Data ss:Type="String">Shoutbox Nachrichten verwalten</Data></Cell><Cell><Data ss:Type="String">Manage Shoutbox messages</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.6425"><Cell ss:StyleID="ce1"><Data ss:Type="String">wcf.acp.group.option.admin.shoutbox.canManageMessages.description</Data></Cell><Cell><Data ss:Type="String">Kann Shoutbox-Nachrichten im ACP löschen.</Data></Cell><Cell><Data ss:Type="String">Can delete messages in the ACP.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="22" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65517" 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:Index="65524" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65536" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

shoutbox/lang/wcf.acp.menu.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></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="ce1" ss:Width="246.9543"/><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.menu.link.content.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="Default"><Data ss:Type="String">wcf.acp.menu.link.content.shoutbox.messages</Data></Cell><Cell><Data ss:Type="String">Nachrichten</Data></Cell><Cell><Data ss:Type="String">Messages</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:Index="65511" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:Index="65513" 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>

shoutbox/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></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="ce2" ss:Width="314.2488"/><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 WCF</Data></Cell><Cell><Data ss:Type="String">A simple chatbox for the WCF</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"> </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.category.shoutbox.layout</Data></Cell><Cell><Data ss:Type="String">Layout-Einstellungen</Data></Cell><Cell><Data ss:Type="String">Layout-Options</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.layout.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_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:AutoFitHeight="0" ss:Height="13.4079"><Cell><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:Index="11" ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><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><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </Data></Cell></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">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><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:Index="22" 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:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_width</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Breite</Data></Cell><Cell><Data ss:Type="String">Smileybox width</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_width.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><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_height</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Höhe</Data></Cell><Cell><Data ss:Type="String">Smileybox height</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_height.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><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_cols</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Spalten</Data></Cell><Cell><Data ss:Type="String">Smileybox columns</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_cols.description</Data></Cell><Cell><Data ss:Type="String">Anzahl der Spalten für die Smiley-Box.</Data></Cell><Cell><Data ss:Type="String">Number of columns in the smiley box.</Data></Cell></Row><Row ss:Index="32" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_rows</Data></Cell><Cell><Data ss:Type="String">Smiley-Box Reihen</Data></Cell><Cell><Data ss:Type="String">Smileybox rows</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_rows.description</Data></Cell><Cell><Data ss:Type="String">Anzahl der Reihen für die Smiley-Box.</Data></Cell><Cell><Data ss:Type="String">Number of rows in the smiley box.</Data></Cell></Row><Row ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation</Data></Cell><Cell><Data ss:Type="String">Smileybox Ausrichtung</Data></Cell><Cell><Data ss:Type="String">Smileybox orientation</Data></Cell></Row><Row ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.description</Data></Cell><Cell><Data ss:Type="String">Bestimmt die Ausrichtung der Smileybox zur Shoutbox&lt;br/&gt;“Eigene Einstellung“ ist reserviert für eigene Template-Anpassungen.</Data></Cell><Cell><Data ss:Type="String">Determines the orientation of the smiley box relativ to the shoutbox.&lt;br/&gt;“Custom“ is reserved for template customisation.</Data></Cell></Row><Row ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.left</Data></Cell><Cell><Data ss:Type="String">Links</Data></Cell><Cell><Data ss:Type="String">Left</Data></Cell></Row><Row ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.right</Data></Cell><Cell><Data ss:Type="String">Rechts</Data></Cell><Cell><Data ss:Type="String">Right</Data></Cell></Row><Row ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.bottom</Data></Cell><Cell><Data ss:Type="String">Unten</Data></Cell><Cell><Data ss:Type="String">Bottom</Data></Cell></Row><Row ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.custom</Data></Cell><Cell><Data ss:Type="String">Eigene Einstellung</Data></Cell><Cell><Data ss:Type="String">Custom</Data></Cell></Row><Row ss:Height="12.6425"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_smileybox_orientation.none</Data></Cell><Cell><Data ss:Type="String">Nicht anzeigen</Data></Cell><Cell><Data ss:Type="String">Don't display</Data></Cell></Row><Row ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65536" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

shoutbox/lang/wcf.acp.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"/><Style ss:ID="ce1"><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="ce1" ss:Width="246.9543"/><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.shoutbox.title</Data></Cell><Cell><Data ss:Type="String">Shoutbox Nachrichten</Data></Cell><Cell><Data ss:Type="String">Shoutbox Messages</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox.delete</Data></Cell><Cell><Data ss:Type="String">Lösche</Data></Cell><Cell><Data ss:Type="String">Delete</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox.deleteMessagesFromUser</Data></Cell><Cell><Data ss:Type="String">Alle Nachrichten von</Data></Cell><Cell><Data ss:Type="String">Messages from</Data></Cell></Row><Row ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox.listheader.id</Data></Cell><Cell><Data ss:Type="String">ID</Data></Cell><Cell><Data ss:Type="String">ID</Data></Cell></Row><Row ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox.listheader.time</Data></Cell><Cell><Data ss:Type="String">Zeit</Data></Cell><Cell><Data ss:Type="String">Time</Data></Cell></Row><Row ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox.listheader.from</Data></Cell><Cell><Data ss:Type="String">Von</Data></Cell><Cell><Data ss:Type="String">From</Data></Cell></Row><Row ss:Index="8" ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox.listheader.message</Data></Cell><Cell><Data ss:Type="String">Nachricht</Data></Cell><Cell><Data ss:Type="String">Message</Data></Cell></Row><Row ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox.deleteSelectedMessages</Data></Cell><Cell><Data ss:Type="String">Lösche die ausgewählten Nachrichten</Data></Cell><Cell><Data ss:Type="String">Delete the selected messages</Data></Cell></Row><Row ss:Height="12.8409"><Cell><Data ss:Type="String">wcf.acp.shoutbox.nomessages</Data></Cell><Cell><Data ss:Type="String">Es sind keine Nachrichten vorhanden</Data></Cell><Cell><Data ss:Type="String">The Shoutbox is empty</Data></Cell></Row><Row ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:Index="65511" ss:AutoFitHeight="0" ss:Height="12.8409"><Cell ss:Index="3"/></Row><Row ss:Index="65513" 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>
     <packageInformation>
         <packageName>Shoutbox</packageName>
         <packageDescription>Ein Chat-Frame</packageDescription>
-        <version>0.6</version>
+        <version>0.7</version>
         <promptParent>com.woltlab.wcf</promptParent>
         <standalone>0</standalone>
         <isUnique>1</isUnique>
     </authorInformation>
     
     <requiredPackages>
-        <requiredPackage minversion="1.0.0 RC4">com.woltlab.wcf</requiredPackage>
-        <requiredPackage minversion="1.0.0 RC4">com.woltlab.wcf.data.message.bbcode</requiredPackage>
-        <requiredPackage minversion="1.0.0 RC4">com.woltlab.wcf.data.message.censorship</requiredPackage>
+        <requiredPackage minversion="1.0.0 RC6">com.woltlab.wcf</requiredPackage>
+        <requiredPackage minversion="1.0.0 RC6">com.woltlab.wcf.data.message.bbcode</requiredPackage>
+        <requiredPackage minversion="1.0.0 RC6">com.woltlab.wcf.data.message.censorship</requiredPackage>
 		<requiredPackage build="smileybox/smileybox"/>
     </requiredPackages>
     
 	<instructions type="update"	fromversion="0.5.2"	/>
 	<instructions type="update"	fromversion="0.6 Beta1"	/>
 	<instructions type="update"	fromversion="0.6 Beta2"	/>
-    
+	<instructions type="update"	fromversion="0.6"	/>
+ 	<instructions type="update"	fromversion="0.7 Beta1"	/>
+   
 </package>

shoutbox/script/install/acpmenu.xml

 			<link>index.php?page=ShoutboxMessageList</link>
 			<permissions>admin.shoutbox.canManageMessages</permissions>
 		</acpmenuitem>
+		
+		<acpmenuitem name="wcf.acp.menu.link.content.shoutbox.deleteMessages">
+			<parent>wcf.acp.menu.link.content.shoutbox</parent>
+			<icon>icon/shoutboxIcon24x24.png</icon>
+			<showorder>2</showorder>
+			<link>index.php?page=ShoutboxDeleteMessages</link>
+			<permissions>admin.shoutbox.canManageMessages</permissions>
+		</acpmenuitem>
 	</import>
 </data>

shoutbox/templates/shoutboxBox.tpl

     <div class="containerHead">
 		<div class="containerIcon">
     		<a href="javascript: void(0)" onclick="return !openList('shoutboxBox', true)">
-        	<img id="shoutboxBoxImage" src="{@RELATIVE_WCF_DIR}/icon/minusS.png" id="lastthreadsboxImage" alt="" /></a>
+        	<img id="shoutboxBoxImage" src="{@RELATIVE_WCF_DIR}icon/minusS.png" alt="" /></a>
         </div>
         <img src="{@RELATIVE_WCF_DIR}/icon/shoutboxIcon16x24.png" alt="" /> {lang}net.northshirebund.wbb.shoutbox.title{/lang}
     </div>

shoutbox/templates/shoutboxCore.tpl

 <div id="shoutboxcontent" style="margin:5px; padding:0px;">
-	<noscript><iframe name="chat" src="index.php?page=ShoutboxContent" scrolling="yes" frameborder="0" allowtransparency="true" style="width:100%; height:{if $height|isset}{@$height}{else}{SHOUTBOX_DEFAULTHEIGHT}{/if}; border:0px;"></iframe></noscript>
+	<noscript><div style="margin:0px; padding:0px;"><iframe name="chat" src="index.php?page=ShoutboxContent" scrolling="yes" frameborder="0" allowtransparency="true" style="width:100%; height:{if $height|isset}{@$height}{else}{SHOUTBOX_DEFAULTHEIGHT}{/if}; border:0px;"></iframe></div></noscript>
 </div>
-<script language="javascript" type="text/javascript">
+<script type="text/javascript">
 //<![CDATA[
 
 	var shoutboxAjaxRequest = null;
 	
 	// prepare div element
 	sbcontent.innerHTML = '<iframe src="about:blank" id="shoutboxcontentframe" name="shoutboxcontentframe" scrolling="auto" frameborder="0" allowtransparency="true" style="background-color:transparent; width:100%; height:{if $height|isset}{@$height}{else}{SHOUTBOX_DEFAULTHEIGHT}{/if}; 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:100%; height:100%;"><div id="shoutboxcontent" class="shoutboxFrameInner container-2 smallFont" style="text-align:left; margin:0px; padding:0px;"></div></div></body></html>');
+	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="shoutboxMessageFrame shoutboxFrameInner container-2" style="margin:0px; padding:0px; position:absolute; top:0px; left:0px; width:100%; height:100%;"><div id="shoutboxcontent" class="shoutboxMessageFrame shoutboxFrameInner container-2 smallFont" style="text-align:left; margin:0px; padding:0px;"></div></div></body></html>');
 	frames.shoutboxcontentframe.document.close();
 	sbcontent = null;
 	
 	}
 	
 	function sendShoutboxMessage() {
-		this.queuedmessage = document.shoutboxInputform.message.value;
-		document.shoutboxInputform.message.value='';
+		this.queuedmessage = document.getElementById('shoutboxMessage').value;
+		document.getElementById('shoutboxMessage').value='';
 		return !sendShoutboxAjaxRequest();
 	}
 	
 	}
 	
 	function sbWhisperTo(name) {
-		document.shoutboxInputform.message.value = '/w "' + name + '" ' + document.shoutboxInputform.message.value;
+		document.getElementById('shoutboxMessage').value = '/w "' + name + '" ' + document.getElementById('shoutboxMessage').value;
 		return;
 	}
 	

shoutbox/templates/shoutboxFrame.tpl

 {if $this->getUser()->getPermission('user.shoutbox.canRead')}
-<table class="shoutboxFrame container-1" cellpadding="0" cellspacing="0" border="0" style="width:{if $width|isset}{$width}{else}{SHOUTBOX_DEFAULTWIDTH}{/if}; height:100%;">
+<table class="shoutboxFrame container-1" cellpadding="0" cellspacing="0" border="0" style="width:{if $width|isset}{$width}{else}{SHOUTBOX_DEFAULTWIDTH}{/if};">
 <tr style="height:100%;"><td>
 	<table cellpadding="4" cellspacing="4" border="0" style="width:100%; height:100%;">
 	<tr>
 	{if SHOUTBOX_SMILEYBOX_ORIENTATION == 'l'}
-		<td class="border shoutboxFrameInner container-2" id="shoutboxsmileys" style="display:none;">{include file="smileybox" cols=SHOUTBOX_SMILEYBOX_COLS rows=SHOUTBOX_SMILEYBOX_ROWS target="message"}</td>
+		<td class="border shoutboxFrameInner container-2" id="shoutboxsmileys" style="display:none;">{include file="smileybox" cols=SHOUTBOX_SMILEYBOX_COLS rows=SHOUTBOX_SMILEYBOX_ROWS width=SHOUTBOX_SMILEYBOX_WIDTH height=SHOUTBOX_SMILEYBOX_HEIGHT target="shoutboxMessage"}</td>
 	{/if}
-		<td class="border shoutboxFrameInner container-2" style="width:100%; height:100%;">{include file="shoutboxCore"}</td>
+		<td class="border shoutboxMessageFrame shoutboxFrameInner container-2" id="shoutboxcontainer" style="width:100%; height:100%;">{include file="shoutboxCore"}</td>
 	{if SHOUTBOX_SMILEYBOX_ORIENTATION == 'r'}
-		<td class="border shoutboxFrameInner container-2" id="shoutboxsmileys" style="display:none;">{include file="smileybox" cols=SHOUTBOX_SMILEYBOX_COLS rows=SHOUTBOX_SMILEYBOX_ROWS target="message"}</td>
+		<td class="border shoutboxFrameInner container-2" id="shoutboxsmileys" style="display:none;">{include file="smileybox" cols=SHOUTBOX_SMILEYBOX_COLS rows=SHOUTBOX_SMILEYBOX_ROWS width=SHOUTBOX_SMILEYBOX_WIDTH height=SHOUTBOX_SMILEYBOX_HEIGHT target="shoutboxMessage"}</td>
 	{/if}
 	</tr>
 	</table>
 </td></tr>
 <tr><td>
 {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"/>
-		<input type="hidden" name="s" value="{SID}"/>
+	<form action="index.php" method="post" target="chat" onsubmit="return sendShoutboxMessage();">
 		<table style="width:80%;">
 		<tr>
-			<td><noscript>[<a href="index.php?page=ShoutboxContent" target="chat">{lang}net.northshirebund.wbb.shoutbox.refresh{/lang}</a>]</noscript></td>
+			<td><noscript><div style="margin:0px; padding:0px;">[<a href="index.php?page=ShoutboxContent" target="chat">{lang}net.northshirebund.wbb.shoutbox.refresh{/lang}</a>]</div></noscript></td>
 			{if $this->getUser()->userID}
 			<td><b>{if $this->getUser()->userID}{$this->getUser()->username}{else}{lang}net.northshirebund.wbb.shoutbox.guest{/lang}{/if}</b>&nbsp;&raquo;</td>
 			{else}
 			<td style="width:75px;"><input type="text" id="shoutboxGuestName" name="shoutboxGuestName" size="25" value="{if $this->getSession()->username}{$this->getSession()->username}{else}{lang}net.northshirebund.wbb.shoutbox.guest{/lang}{/if}" class="inputText" style="width:75px;"/></td>
 			{/if}
-			<td style="width:100%;"><input type="text" name="message" id="message" size="60" class="inputText"/></td>
-			<td><input type="submit" value="{lang}net.northshirebund.wbb.shoutbox.send{/lang}" class="input"/></td>
+			<td style="width:100%;"><input type="text" id="shoutboxMessage" name="message" size="60" class="inputText"/></td>
+			<td>
+				<input type="hidden" name="page" value="ShoutboxContent"/>
+				<input type="hidden" name="s" value="{SID}"/>
+				<input type="submit" value="{lang}net.northshirebund.wbb.shoutbox.send{/lang}" class="input"/>
+			</td>
 		</tr>
 		</table>
 	</form>
 {/if}
 </td></tr>
 {if SHOUTBOX_SMILEYBOX_ORIENTATION == 'b'}
-	<tr><td><div class="border shoutboxFrameInner container-2" style="margin:4px;">{include file="smileybox" cols=SHOUTBOX_SMILEYBOX_COLS rows=SHOUTBOX_SMILEYBOX_ROWS target="message"}</div></td></tr>
+	<tr><td><div class="border shoutboxFrameInner container-2" style="margin:4px;">{include file="smileybox" cols=SHOUTBOX_SMILEYBOX_COLS rows=SHOUTBOX_SMILEYBOX_ROWS width=SHOUTBOX_SMILEYBOX_WIDTH height=SHOUTBOX_SMILEYBOX_HEIGHT target="shoutboxMessage"}</div></td></tr>
 {/if}
 </table>
-<script language="javascript" type="text/javascript">
-//<![CDATA[</td></tr>
+{if SHOUTBOX_SMILEYBOX_ORIENTATION != 'n'}
+<script type="text/javascript">
+//<![CDATA[
 	// the smiley box should be visible only if javascript is available
 	document.getElementById('shoutboxsmileys').style.display = '';
+	
+	// a hack required for opera
+	document.getElementById('shoutboxcontainer').style.display = 'none';
+	document.getElementById('shoutboxcontainer').style.display = '';
 //]]>
 </script>
+{/if}
 {/if}

shoutbox/templates/shoutboxSmallBox.tpl

     <div class="containerHead">
 		<div class="containerIcon">
     		<a href="javascript: void(0)" onclick="return !openList('shoutboxBox', true)">
-        	<img id="shoutboxBoxImage" src="{@RELATIVE_WCF_DIR}/icon/minusS.png" id="lastthreadsboxImage" alt="" /></a>
+        	<img id="shoutboxBoxImage" src="{@RELATIVE_WCF_DIR}icon/minusS.png" alt="" /></a>
         </div>
         <img src="{@RELATIVE_WCF_DIR}/icon/shoutboxIcon16x24.png" alt="" /> {lang}net.northshirebund.wbb.shoutbox.title{/lang}
     </div>

shoutbox/templates/shoutboxSmallFrame.tpl

 </td></tr>
 <tr><td>
 {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"/>
+	<form action="index.php" method="post" target="chat" onsubmit="return sendShoutboxMessage();">
 		<table style="width:100%;">
 		{if $this->getUser()->userID}{else}
 		<tr>
 		</tr>
 		{/if}
 		<tr>
-			<td style="width:100%;"><input type="text" name="message" id="message" size="18" class="inputText"/></td>
-			<td><input type="submit" value="s&raquo;" class="input"/></td>
+			<td style="width:100%;"><input type="text" id="shoutboxMessage" name="message" size="18" class="inputText"/></td>
+			<td>
+				<input type="hidden" name="page" value="ShoutboxContent"/>
+				<input type="submit" value="&raquo;" class="input"/>
+			</td>
 		</tr>
 		</table>
 	</form>

wbb3page/dist/net.northshirebund.wbb.shoutbox.page-0.7.tar

Binary file added.

wbb3page/dist/net.northshirebund.wbb.shoutbox.page-0.7.tar.gz

Binary file added.

wbb3page/dist/net.northshirebund.wbb.shoutbox.page-0.7.zip

Binary file added.

wbb3page/files/lib/page/ShoutboxPage.class.php

 	 */
 	public function assignVariables() {
 		parent::assignVariables();
-	}
-	
-	/**
-	 * @see Page::show()
-	 */
-	public function show() {
-		// assign variables
-		$this->assignVariables();
-		
 		$this->renderOnlineList();
-		
-		// call show event
-		EventHandler::fireAction($this, 'show');
-		
-		// show template
-		if (!empty($this->templateName)) {
-			WCF::getTPL()->display($this->templateName);
-		}
 	}
 	
 	

wbb3page/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="206.1921"/><Column ss:StyleID="Default" ss:Width="122.7118"/><Column ss:StyleID="Default" ss:Width="136.8567"/><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.page.title</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

wbb3page/lang/shoutbox.wbb3page.lang.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>#000000</RGB></Color><Color><Index>4</Index><RGB>#c0c0c0</RGB></Color><Color><Index>5</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="Normal" ss:Name="Normal"><Alignment ss:Vertical="Bottom"/><Font ss:Color="#000000" ss:FontName="Calibri" ss:Size="11"/></Style><Style ss:ID="co1"/><Style ss:ID="co2"/><Style ss:ID="co3"/><Style ss:ID="co4"/><Style ss:ID="co5"/><Style ss:ID="co6"/><Style ss:ID="ta1"/><Style ss:ID="ce1"><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="Default" ss:Width="188.7024"/><Column ss:StyleID="ce1" ss:Width="361.4456"/><Column ss:StyleID="Default" ss:Span="1" ss:Width="229.011"/><Column ss:StyleID="Default" ss:Index="5" ss:Width="183.4016"/><Column ss:StyleID="Default" ss:Width="228.7559"/><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell ss:Index="2" ss:StyleID="Default"/><Cell><Data ss:Type="String">De</Data></Cell><Cell><Data ss:Type="String">De-informal</Data></Cell><Cell><Data ss:Type="String">En</Data></Cell><Cell><Data ss:Type="String">It</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">net.northshirebund.wbb.shoutbox</Data></Cell><Cell ss:StyleID="Default"><Data ss:Type="String">net.northshirebund.wbb.shoutbox.page.title</Data></Cell><Cell><Data ss:Type="String">Shoutbox</Data></Cell><Cell><Data ss:Type="String">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:Index="2" ss:StyleID="Default"/><Cell ss:Index="6"/></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.wbbpage</Data></Cell><Cell><Data ss:Type="String">Shoutbox [WBB3 Page]</Data></Cell><Cell><Data ss:Type="String">Shoutbox [WBB3 Page]</Data></Cell><Cell><Data ss:Type="String">Shoutbox [WBB3 Page]</Data></Cell><Cell><Data ss:Type="String">Shoutbox [WBB3 Page]</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.wbbpage.description </Data></Cell><Cell><Data ss:Type="String"> </Data></Cell><Cell><Data ss:Type="String"> </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</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_page_reloaduseronline</Data></Cell><Cell><Data ss:Type="String">User-Online-Liste aktualisieren</Data></Cell><Cell><Data ss:Type="String">User-Online-Liste aktualisieren</Data></Cell><Cell><Data ss:Type="String">Refresh user-online-list</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Rinfrescare la utente-in linea-lista</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option</Data></Cell><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_page_reloaduseronline.description </Data></Cell><Cell><Data ss:Type="String">Aktualisiert die User-Online-Liste jedes Mal, wenn neue Nachrichten abgerufen werden.&lt;br/&gt;Funktioniert nur, wenn JavaScript aktiviert ist.&lt;br/&gt;&lt;b&gt;Achtung:&lt;/b&gt; Diese Funktion kostet je nach Besucherzahl zusätzlichen Traffic.</Data></Cell><Cell><Data ss:Type="String">Aktualisiert die User-Online-Liste jedes Mal, wenn neue Nachrichten abgerufen werden.&lt;br/&gt;Funktioniert nur, wenn JavaScript aktiviert ist.&lt;br/&gt;&lt;b&gt;Achtung:&lt;/b&gt; Diese Funktion kostet je nach Besucherzahl zusätzlichen Traffic.</Data></Cell><Cell><Data ss:Type="String">Reload the user-online-list when new messages are polled.&lt;br/&gt;Only works if JavaScript is enabled.</Data></Cell><Cell ss:StyleID="Normal"><Data ss:Type="String">Ricaricare la utente-in linea-lista quando i nuovi messaggi sono votati. impianti di &lt;br/&gt;Only se il Javascript è permesso.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="9" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="12" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="65499" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="65503" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Height="12.1039"><Cell ss:Index="6"/></Row><Row ss:Index="65536" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="6"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>

wbb3page/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 Roman11" ss:Size="10"/></Style></Styles><ss:Worksheet ss:Name="Tabelle1"><Table ss:StyleID="ta1"><Column ss:StyleID="ce1" ss:Width="361.4456"/><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><Data ss:Type="String">wcf.acp.option.category.shoutbox.wbbpage</Data></Cell><Cell><Data ss:Type="String">Shoutbox [WBB3 Page]</Data></Cell><Cell><Data ss:Type="String">Shoutbox [WBB3 Page]</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.category.shoutbox.wbbpage.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_page_reloaduseronline</Data></Cell><Cell><Data ss:Type="String">User-Online-Liste aktualisieren</Data></Cell><Cell><Data ss:Type="String">Refresh user-online-list</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="13.4079"><Cell><Data ss:Type="String">wcf.acp.option.shoutbox_page_reloaduseronline.description </Data></Cell><Cell><Data ss:Type="String">Aktualisiert die User-Online-Liste jedes Mal, wenn neue Nachrichten abgerufen werden.&lt;br/&gt;Funktioniert nur, wenn JavaScript aktiviert ist.&lt;br/&gt;&lt;b&gt;Achtung:&lt;/b&gt; Diese Funktion kostet je nach Besucherzahl zusätzlichen Traffic.</Data></Cell><Cell><Data ss:Type="String">Reload the user-online-list when new messages are polled.&lt;br/&gt;Only works if JavaScript is enabled.</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="8" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65497" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65499" ss:Height="12.1039"><Cell ss:Index="3"/></Row><Row ss:Index="65536" ss:AutoFitHeight="0" ss:Height="12.1039"><Cell ss:Index="3"/></Row></Table><x:WorksheetOptions/></ss:Worksheet></Workbook>
     <packageInformation>
         <packageName><![CDATA[Shoutbox [WBB3 Page]]]></packageName>
         <packageDescription><![CDATA[Erstellt eine neue Seite im Headermenue des WBB]]></packageDescription>
-        <version>0.6</version>
+        <version>0.7</version>
         <promptParent>com.woltlab.wbb</promptParent>
         <standalone>0</standalone>
         <isUnique>1</isUnique>
     </authorInformation>
     
     <requiredPackages>
-        <requiredPackage minversion="3.0.0 RC4">com.woltlab.wbb</requiredPackage>
-        <requiredPackage minversion="1.0.0 RC4">com.woltlab.wcf</requiredPackage>
-        <requiredPackage minversion="0.6">net.northshirebund.wbb.shoutbox</requiredPackage>
+        <requiredPackage minversion="3.0.0 RC6">com.woltlab.wbb</requiredPackage>
+        <requiredPackage minversion="1.0.0 RC6">com.woltlab.wcf</requiredPackage>
+        <requiredPackage minversion="0.7">net.northshirebund.wbb.shoutbox</requiredPackage>
     </requiredPackages>
     
 	<addfiles>
 	<instructions type="update"	fromversion="0.5.1"	/>
 	<instructions type="update"	fromversion="0.6 Beta1"	/>
 	<instructions type="update"	fromversion="0.6 Beta2"	/>
+	<instructions type="update"	fromversion="0.6"	/>
+	<instructions type="update"	fromversion="0.7 Beta1"	/>
     
 </package>

wbb3page/templates/shoutboxPage.tpl

 	{include file="headInclude"}
 </head>
 <body>
-{include file="header"}
+{include file="header" sandbox=false}
 
-{if $userMessages|isset}{@$userMessages}{/if}
-
-<div class="border">
-    <div class="containerHead">
-        <img src="{@RELATIVE_WCF_DIR}/icon/shoutboxIcon16x24.png" alt=""/> {lang}net.northshirebund.wbb.shoutbox.title{/lang}
-    </div>
-    <div class="container-1">
-		{include file="shoutboxFrame"}
-    </div>
-</div>
-
-{if SHOUTBOX_PAGE_RELOADUSERONLINE}
-<script language="javascript" type="text/javascript">
-//<![CDATA[
+<div id="main">
 	
-	sbRequestParams = 'getOnlineList=true';
+	<ul class="breadCrumbs">
+		<li><a href="index.php{@SID_ARG_1ST}"><img src="icon/indexS.png" alt="" /> <span>{PAGE_TITLE}</span></a> &raquo;</li>
+	</ul>
 	
-	setShoutboxCallback(
- 		function(content) {
-			for(var i=0; i<content.childNodes.length; i++) {
-				var line = content.childNodes[i];
-				
-				if(line.childNodes.length > 0) {
-					var node = line.childNodes[0];
+	<div class="mainHeadline">
+		<img src="{@RELATIVE_WCF_DIR}icon/shoutboxIcon48x48.png" alt="" />
+		<div class="headlineContainer">
+			<h2> {lang}net.northshirebund.wbb.shoutbox.title{/lang}</h2>
+		</div>
+	</div>
+	
+	{if $userMessages|isset}{@$userMessages}{/if}
+	
+	<div class="border">
+		<!--div class="containerHead">
+			<img src="{@RELATIVE_WCF_DIR}/icon/shoutboxIcon16x24.png" alt=""/> {lang}net.northshirebund.wbb.shoutbox.title{/lang}
+		</div-->
+		<div class="container-1">
+			{include file="shoutboxFrame" height="300px"}
+		</div>
+	</div>
+	
+	{if SHOUTBOX_PAGE_RELOADUSERONLINE}
+	<script language="javascript" type="text/javascript">
+	//<![CDATA[
+		
+		sbRequestParams = 'getOnlineList=true';
+		
+		setShoutboxCallback(
+			function(content) {
+				for(var i=0; i<content.childNodes.length; i++) {
+					var line = content.childNodes[i];