* Added global disable switch for languages.
* Overhauled page tracking in sessions / user online locations
* Overhauled language import form
+* Removed sitemap function/overlay
#### CMS
* Option `message_sidebar_enable_avatar` removed.
* Removed obsolete `$activeMenuItem` in frontend forms/pages
* Obsolete interface `wcf\page\ITrackablePage` deprecated.
+* PIP `wcf\system\package\plugin\SitemapPackageInstallationPlugin` removed.
#### Documentation
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- This file is used for xml-files which install, update or delete templatelisteners. -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
- <!-- include types -->
- <xs:include schemaLocation="types.xsd" />
-
- <!-- data element -->
- <xs:element name="data">
- <xs:complexType>
- <xs:all>
- <xs:element name="import" type="import" minOccurs="0" />
- <xs:element name="delete" type="delete" minOccurs="0" />
- </xs:all>
- </xs:complexType>
- </xs:element>
-
- <!-- import element -->
- <xs:complexType name="import">
- <xs:sequence>
- <xs:element name="sitemap" type="sitemap_import" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
-
- <!-- delete element -->
- <xs:complexType name="delete">
- <xs:sequence>
- <xs:element name="sitemap" type="sitemap_delete" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
-
- <!-- deleted templatelisteners -->
- <xs:complexType name="sitemap_delete">
- <xs:attribute name="name" type="woltlab_varchar" use="required" />
- </xs:complexType>
-
- <!-- imported/updated templatelisteners -->
- <xs:complexType name="sitemap_import">
- <xs:complexContent>
- <xs:extension base="sitemap_delete">
- <xs:all>
- <xs:element name="classname" type="xs:string" minOccurs="0" />
- <xs:element name="options" type="xs:string" minOccurs="0" />
- </xs:all>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
-</xs:schema>
\ No newline at end of file
<instruction type="userOption" />
<instruction type="bbcode" />
<instruction type="smiley" />
- <instruction type="sitemap" />
<instruction type="userProfileMenu" />
<instruction type="userMenu" />
<instruction type="userNotificationEvent" />
<pip name="template">wcf\system\package\plugin\TemplatePackageInstallationPlugin</pip>
<pip name="userGroupOption">wcf\system\package\plugin\UserGroupOptionPackageInstallationPlugin</pip>
<pip name="userOption">wcf\system\package\plugin\UserOptionPackageInstallationPlugin</pip>
- <pip name="sitemap">wcf\system\package\plugin\SitemapPackageInstallationPlugin</pip>
<pip name="acpSearchProvider">wcf\system\package\plugin\ACPSearchProviderPackageInstallationPlugin</pip>
<pip name="style">wcf\system\package\plugin\StylePackageInstallationPlugin</pip>
<pip name="bbcode">wcf\system\package\plugin\BBCodePackageInstallationPlugin</pip>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/sitemap.xsd">
- <import>
- <sitemap name="userAccount">
- <classname><![CDATA[wcf\system\sitemap\UserAccountSitemapProvider]]></classname>
- </sitemap>
- </import>
-</data>
'wcf.global.success.edit': '{lang}wcf.global.success.edit{/lang}',
'wcf.global.thousandsSeparator': '{capture assign=thousandsSeparator}{lang}wcf.global.thousandsSeparator{/lang}{/capture}{@$thousandsSeparator|encodeJS}',
'wcf.page.pagePosition': '{lang __literal=true}wcf.page.pagePosition{/lang}',
- 'wcf.page.sitemap': '{lang}wcf.page.sitemap{/lang}',
'wcf.style.changeStyle': '{lang}wcf.style.changeStyle{/lang}',
'wcf.user.activityPoint': '{lang}wcf.user.activityPoint{/lang}',
'wcf.user.panel.markAllAsRead': '{lang}wcf.user.panel.markAllAsRead{/lang}',
{if $skipBreadcrumbs|empty}{include file='breadcrumbs'}{/if}
<ul class="pageNavigationIcons">
- <li id="sitemap" class="jsOnly"><a href="#" title="{lang}wcf.page.sitemap{/lang}" class="jsTooltip"><span class="icon icon16 fa-sitemap"></span> <span class="invisible">{lang}wcf.page.sitemap{/lang}</span></a></li>
{if $headerNavigation|isset}{@$headerNavigation}{/if}
{event name='navigationIcons'}
</ul>
+++ /dev/null
-<div class="sitemap">
- {hascontent}
- <div class="section tabMenuContainer" data-active="sitemap_{@$defaultSitemapName}">
- <nav class="tabMenu">
- <ul>
- {content}
- {foreach from=$tree item=sitemapName}
- <li><a href="#sitemap_{$sitemapName}" class="sitemapNavigation" data-sitemap-name="{$sitemapName}">{lang}wcf.page.sitemap.{$sitemapName}{/lang}</a></li>
- {/foreach}
- {/content}
- </ul>
- </nav>
-
- {foreach from=$tree item=sitemapName}
- <div id="sitemap_{$sitemapName}" class="tabMenuContent hidden">
- <div class="section">{if $sitemapName == $defaultSitemapName}{@$sitemap}{/if}</div>
- </div>
- {/foreach}
- </div>
- {hascontentelse}
- {@$sitemap}
- {/hascontent}
-</div>
\ No newline at end of file
+++ /dev/null
-<ul class="sitemapList">
- {if $__wcf->getUser()->userID}
- {foreach from=$__wcf->getUserMenu()->getMenuItems('') item=menuCategory}
- <li>
- <h3>{lang}{$menuCategory->menuItem}{/lang}</h3>
- <ul>
- {foreach from=$__wcf->getUserMenu()->getMenuItems($menuCategory->menuItem) item=menuItem}
- <li><a href="{$menuItem->getLink()}">{lang}{$menuItem->menuItem}{/lang}</a></li>
- {/foreach}
- </ul>
- </li>
- {/foreach}
- {else}
- <li>
- <a href="{link controller='Login'}{/link}">{lang}wcf.user.login{/lang}</a>
- </li>
- {if !REGISTER_DISABLED}
- <li>
- <a href="{link controller='Register'}{/link}">{lang}wcf.user.register{/lang}</a>
- </li>
- {/if}
- {/if}
-</ul>
*/
define(
[
- 'Ajax', 'WoltLab/WCF/Bootstrap', 'WoltLab/WCF/Controller/Sitemap', 'WoltLab/WCF/Controller/Style/Changer',
+ 'Ajax', 'WoltLab/WCF/Bootstrap', 'WoltLab/WCF/Controller/Style/Changer',
'WoltLab/WCF/Controller/Popover', 'WoltLab/WCF/Ui/User/Ignore'
],
function(
- Ajax, Bootstrap, ControllerSitemap, ControllerStyleChanger,
+ Ajax, Bootstrap, ControllerStyleChanger,
ControllerPopover, UiUserIgnore
)
{
setup: function(options) {
Bootstrap.setup();
- ControllerSitemap.setup();
-
if (options.styleChanger) {
//ControllerStyleChanger.setup();
}
+++ /dev/null
-/**
- * Provides the sitemap dialog.
- *
- * @author Alexander Ebert
- * @copyright 2001-2015 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @module WoltLab/WCF/Controller/Sitemap
- */
-define(['Ajax', 'EventHandler', 'Language', 'Dom/Util', 'Ui/Dialog', 'Ui/TabMenu'], function(Ajax, EventHandler, Language, DomUtil, UiDialog, UiTabMenu) {
- "use strict";
-
- var _cache = [];
-
- /**
- * @exports WoltLab/WCF/Controller/Sitemap
- */
- return {
- /**
- * Binds click handler.
- */
- setup: function() {
- elBySel('#sitemap > a').addEventListener(WCF_CLICK_EVENT, this.open.bind(this));
- },
-
- /**
- * Handles clicks on the sitemap button.
- *
- * @param {Event} event event object
- */
- open: function(event) {
- event.preventDefault();
-
- UiDialog.open(this);
- },
-
- _ajaxSetup: function() {
- return {
- data: {
- actionName: 'getSitemap',
- className: 'wcf\\data\\sitemap\\SitemapAction'
- }
- };
- },
-
- _ajaxSuccess: function(data) {
- _cache.push(data.returnValues.sitemapName);
-
- elById('sitemap_' + data.returnValues.sitemapName).children[0].innerHTML = data.returnValues.template;
- },
-
- _dialogSetup: function() {
- return {
- id: 'sitemapDialog',
- options: {
- title: Language.get('wcf.page.sitemap')
- },
- source: {
- data: {
- actionName: 'getSitemap',
- className: 'wcf\\data\\sitemap\\SitemapAction'
- },
- after: (function(content, data) {
- _cache.push(data.returnValues.sitemapName);
-
- var tabMenuContainer = elBySel('.tabMenuContainer', content);
- var menuId = DomUtil.identify(tabMenuContainer);
-
- UiTabMenu.getTabMenu(menuId).select('sitemap_' + data.returnValues.sitemapName);
-
- EventHandler.add('com.woltlab.wcf.simpleTabMenu_' + menuId, 'select', this.showTab.bind(this));
- }).bind(this)
- }
- };
- },
-
- /**
- * Callback for tab links, lazy loads content.
- *
- * @param {object<string, Element>} tabData tab data
- */
- showTab: function(tabData) {
- var name = elAttr(tabData.active, 'data-name').replace(/^sitemap_/, '');
-
- if (_cache.indexOf(name) === -1) {
- Ajax.api(this, {
- parameters: {
- sitemapName: name
- }
- });
- }
- }
- };
-});
+++ /dev/null
-<?php
-namespace wcf\data\sitemap;
-use wcf\data\DatabaseObject;
-use wcf\data\TDatabaseObjectOptions;
-use wcf\data\TDatabaseObjectPermissions;
-use wcf\system\exception\ImplementationException;
-use wcf\system\exception\SystemException;
-use wcf\system\sitemap\ISitemapProvider;
-
-/**
- * Represents a sitemap entry.
- *
- * @author Alexander Ebert
- * @copyright 2001-2016 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package com.woltlab.wcf
- * @subpackage data.sitemap
- * @category Community Framework
- *
- * @property-read integer $sitemapID
- * @property-read integer $packageID
- * @property-read string $sitemapName
- * @property-read string $className
- * @property-read integer $showOrder
- * @property-read string $permissions
- * @property-read string $options
- */
-class Sitemap extends DatabaseObject {
- use TDatabaseObjectOptions;
- use TDatabaseObjectPermissions;
-
- /**
- * ISitemapProvider object
- * @var \wcf\system\sitemap\ISitemapProvider
- */
- protected $sitemapObj = null;
-
- /**
- * database table for this object
- * @var string
- */
- protected static $databaseTableName = 'sitemap';
-
- /**
- * @inheritDoc
- */
- protected static $databaseTableIndexName = 'sitemapID';
-
- /**
- * Returns parsed template for current sitemap.
- *
- * @return string
- * @throws SystemException
- */
- public function getTemplate() {
- if ($this->sitemapObj === null) {
- if (empty($this->className) || !class_exists($this->className)) {
- throw new SystemException("Unable to find class '".$this->className."' for sitemap '".$this->sitemapName."'");
- }
-
- if (!is_subclass_of($this->className, ISitemapProvider::class)) {
- throw new ImplementationException($this->className, ISitemapProvider::class);
- }
-
- $this->sitemapObj = new $this->className();
- }
-
- return $this->sitemapObj->getTemplate();
- }
-
- /**
- * Returns true, if the active user has access to this sitemap.
- *
- * @return boolean
- */
- public function isAccessible() {
- return $this->validateOptions() && $this->validatePermissions();
- }
-}
+++ /dev/null
-<?php
-namespace wcf\data\sitemap;
-use wcf\data\AbstractDatabaseObjectAction;
-use wcf\system\sitemap\SitemapHandler;
-use wcf\system\WCF;
-
-/**
- * Executes sitemap-related actions.
- *
- * @author Alexander Ebert
- * @copyright 2001-2016 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package com.woltlab.wcf
- * @subpackage data.sitemap
- * @category Community Framework
- *
- * @method Sitemap create()
- * @method SitemapEditor[] getObjects()
- * @method SitemapEditor getSingleObject()
- */
-class SitemapAction extends AbstractDatabaseObjectAction {
- /**
- * @inheritDoc
- */
- protected $allowGuestAccess = ['getSitemap'];
-
- /**
- * Validates the 'getSitemap' action.
- */
- public function validateGetSitemap() {
- if (isset($this->parameters['sitemapName'])) {
- SitemapHandler::getInstance()->validateSitemapName($this->parameters['sitemapName']);
- }
- }
-
- /**
- * Returns sitemap for active application group.
- *
- * @return array
- */
- public function getSitemap() {
- if (isset($this->parameters['sitemapName'])) {
- return [
- 'sitemapName' => $this->parameters['sitemapName'],
- 'template' => SitemapHandler::getInstance()->getSitemap($this->parameters['sitemapName'])
- ];
- }
- else {
- $sitemapName = SitemapHandler::getInstance()->getDefaultSitemapName();
-
- WCF::getTPL()->assign([
- 'defaultSitemapName' => $sitemapName,
- 'sitemap' => SitemapHandler::getInstance()->getSitemap($sitemapName),
- 'tree' => SitemapHandler::getInstance()->getTree()
- ]);
-
- return [
- 'sitemapName' => $sitemapName,
- 'template' => WCF::getTPL()->fetch('sitemap')
- ];
- }
- }
-}
+++ /dev/null
-<?php
-namespace wcf\data\sitemap;
-use wcf\data\DatabaseObjectEditor;
-
-/**
- * Provides functions to edit sitemap entries.
- *
- * @author Alexander Ebert
- * @copyright 2001-2016 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package com.woltlab.wcf
- * @subpackage data.sitemap
- * @category Community Framework
- *
- * @method Sitemap getDecoratedObject()
- * @mixin Sitemap
- */
-class SitemapEditor extends DatabaseObjectEditor {
- /**
- * @inheritDoc
- */
- protected static $baseClass = Sitemap::class;
-}
+++ /dev/null
-<?php
-namespace wcf\data\sitemap;
-use wcf\data\DatabaseObjectList;
-
-/**
- * Represents a list of sitemap entries.
- *
- * @author Alexander Ebert
- * @copyright 2001-2016 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package com.woltlab.wcf
- * @subpackage data.sitemap
- * @category Community Framework
- *
- * @method Sitemap current()
- * @method Sitemap[] getObjects()
- * @method Sitemap|null search($objectID)
- * @property Sitemap[] $objects
- */
-class SitemapList extends DatabaseObjectList { }
+++ /dev/null
-<?php
-namespace wcf\system\cache\builder;
-use wcf\data\sitemap\SitemapList;
-
-/**
- * Caches sitemap structure.
- *
- * @author Alexander Ebert
- * @copyright 2001-2016 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package com.woltlab.wcf
- * @subpackage system.cache.builder
- * @category Community Framework
- */
-class SitemapCacheBuilder extends AbstractCacheBuilder {
- /**
- * @inheritDoc
- */
- public function rebuild(array $parameters) {
- $sitemapList = new SitemapList();
- $sitemapList->sqlOrderBy = "sitemap.showOrder ASC";
- $sitemapList->readObjects();
-
- return $sitemapList->getObjects();
- }
-}
+++ /dev/null
-<?php
-namespace wcf\system\package\plugin;
-use wcf\data\sitemap\SitemapEditor;
-use wcf\system\cache\builder\SitemapCacheBuilder;
-use wcf\system\WCF;
-
-/**
- * Installs, updates and deletes sitemaps.
- *
- * @author Alexander Ebert
- * @copyright 2001-2016 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package com.woltlab.wcf
- * @subpackage system.package.plugin
- * @category Community Framework
- */
-class SitemapPackageInstallationPlugin extends AbstractXMLPackageInstallationPlugin {
- /**
- * @inheritDoc
- */
- public $className = SitemapEditor::class;
-
- /**
- * @inheritDoc
- */
- protected function handleDelete(array $items) {
- $sql = "DELETE FROM wcf".WCF_N."_".$this->tableName."
- WHERE sitemapName = ?
- AND packageID = ?";
- $statement = WCF::getDB()->prepareStatement($sql);
- foreach ($items as $item) {
- $statement->execute([
- $item['attributes']['name'],
- $this->installation->getPackageID()
- ]);
- }
- }
-
- /**
- * @inheritDoc
- */
- protected function prepareImport(array $data) {
- $showOrder = (isset($data['elements']['showOrder'])) ? intval($data['elements']['showOrder']) : null;
- $showOrder = $this->getShowOrder($showOrder, null, 'showOrder');
-
- return [
- 'sitemapName' => $data['attributes']['name'],
- 'className' => $data['elements']['classname'],
- 'showOrder' => $showOrder,
- 'options' => (isset($data['elements']['options'])) ? $data['elements']['options'] : '',
- 'permissions' => (isset($data['elements']['permissions'])) ? $data['elements']['permissions'] : ''
- ];
- }
-
- /**
- * @inheritDoc
- */
- protected function findExistingItem(array $data) {
- $sql = "SELECT *
- FROM wcf".WCF_N."_".$this->tableName."
- WHERE sitemapName = ?
- AND packageID = ?";
- $parameters = [
- $data['sitemapName'],
- $this->installation->getPackageID()
- ];
-
- return [
- 'sql' => $sql,
- 'parameters' => $parameters
- ];
- }
-
- /**
- * @inheritDoc
- */
- protected function cleanup() {
- SitemapCacheBuilder::getInstance()->reset();
- }
-}
+++ /dev/null
-<?php
-namespace wcf\system\sitemap;
-
-/**
- * Provides a general interface for all sitemap entries.
- *
- * @author Alexander Ebert
- * @copyright 2001-2016 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package com.woltlab.wcf
- * @subpackage system.sitemap
- * @category Community Framework
- */
-interface ISitemapProvider {
- /**
- * Returns the parsed sitemap template.
- *
- * @return string
- */
- public function getTemplate();
-}
+++ /dev/null
-<?php
-namespace wcf\system\sitemap;
-use wcf\data\sitemap\Sitemap;
-use wcf\system\cache\builder\SitemapCacheBuilder;
-use wcf\system\exception\SystemException;
-use wcf\system\SingletonFactory;
-
-/**
- * Handles sitemap interactions.
- *
- * @author Alexander Ebert
- * @copyright 2001-2016 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package com.woltlab.wcf
- * @subpackage sitemap.sitemap
- * @category Community Framework
- */
-class SitemapHandler extends SingletonFactory {
- /**
- * sitemap cache
- * @var Sitemap[]
- */
- protected $cache = null;
-
- /**
- * @inheritDoc
- */
- protected function init() {
- $this->cache = SitemapCacheBuilder::getInstance()->getData();
- }
-
- /**
- * Returns array of tree items or an empty array if only one sitemap is registered.
- *
- * @return Sitemap[]
- */
- public function getTree() {
- $tree = [];
-
- if (!empty($this->cache)) {
- foreach ($this->cache as $sitemap) {
- if ($sitemap->isAccessible()) $tree[] = $sitemap->sitemapName;
- }
- }
-
- return $tree;
- }
-
- /**
- * Returns default sitemap name.
- *
- * @return string
- */
- public function getDefaultSitemapName() {
- foreach ($this->cache as $sitemap) {
- if ($sitemap->packageID == PACKAGE_ID && $sitemap->isAccessible()) {
- return $sitemap->sitemapName;
- }
- }
-
- foreach ($this->cache as $sitemap) {
- if ($sitemap->isAccessible()) return $sitemap->sitemapName;
- }
-
- return '';
- }
-
- /**
- * Returns sitemap for given sitemap name.
- *
- * @param string $sitemapName
- * @return \wcf\data\sitemap\Sitemap
- */
- public function getSitemap($sitemapName) {
- foreach ($this->cache as $sitemap) {
- if ($sitemap->sitemapName == $sitemapName) {
- return $sitemap->getTemplate();
- }
- }
-
- return null;
- }
-
- /**
- * Validates sitemap name.
- *
- * @param string $sitemapName
- * @throws SystemException
- */
- public function validateSitemapName($sitemapName) {
- if (empty($sitemapName)) {
- throw new SystemException("Empty sitemap name provided");
- }
-
- $isValid = false;
- foreach ($this->cache as $sitemap) {
- if ($sitemap->sitemapName == $sitemapName) {
- $isValid = true;
- }
- }
-
- if (!$isValid) {
- throw new SystemException("Sitemap name '".$sitemapName."' is unknown");
- }
- }
-}
+++ /dev/null
-<?php
-namespace wcf\system\sitemap;
-use wcf\system\WCF;
-
-/**
- * Provides a sitemap for user account.
- *
- * @author Alexander Ebert
- * @copyright 2001-2016 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package com.woltlab.wcf
- * @subpackage system.sitemap
- * @category Community Framework
- */
-class UserAccountSitemapProvider implements ISitemapProvider {
- /**
- * @inheritDoc
- */
- public function getTemplate() {
- return WCF::getTPL()->fetch('sitemapUserAccount');
- }
-}
+++ /dev/null
-.sitemapList {
- h3 {
- padding-bottom: 5px;
-
- @include wcfFontHeadline;
- }
-
- a {
- display: block;
- padding: 2px 10px;
-
- &:hover {
- background-color: $wcfTabularBoxBackgroundActive;
- }
- }
-
- > li {
- &:not(:first-child) {
- border-top: 1px solid $wcfContentBorderInner;
- margin-top: 15px;
- padding-top: 15px;
- }
-
- > ul > li {
- > a {
- padding-left: 20px;
- }
-
- > ul > li > a {
- padding-left: 40px;
- }
- }
- }
-}
<category name="wcf.page">
<item name="wcf.page.pageNo"><![CDATA[Seite {#$pageNo}]]></item>
<item name="wcf.page.offline"><![CDATA[Die Seite befindet sich zurzeit {if OFFLINE_MESSAGE != ''}aus folgenden Gründen im Wartungsmodus:{else}im Wartungsmodus.{/if}]]></item>
- <item name="wcf.page.sitemap"><![CDATA[Schnellnavigation]]></item>
<item name="wcf.page.mainMenu"><![CDATA[Navigation]]></item>
<item name="wcf.page.pagePosition"><![CDATA[Seite {#$pageNo} von {#$pages}]]></item>
- <item name="wcf.page.sitemap.userAccount"><![CDATA[Benutzerkonto]]></item>
<item name="wcf.page.javascriptDisabled"><![CDATA[In Ihrem Webbrowser ist JavaScript deaktiviert. Um alle Funktionen dieser Website nutzen zu können, muss JavaScript aktiviert sein.]]></item>
<item name="wcf.page.requestedPage"><![CDATA[Aufgerufene Seite]]></item>
<item name="wcf.page.cookiePolicy.info"><![CDATA[Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. <a href="{page}com.woltlab.wcf.CookiePolicy{/page}">Weitere Informationen</a>]]></item>
<category name="wcf.page">
<item name="wcf.page.pageNo"><![CDATA[Page {#$pageNo}]]></item>
<item name="wcf.page.offline"><![CDATA[Page is currently in maintenance mode{if OFFLINE_MESSAGE != ''}:{else}.{/if}]]></item>
- <item name="wcf.page.sitemap"><![CDATA[Sitemap]]></item>
<item name="wcf.page.mainMenu"><![CDATA[Navigation]]></item>
<item name="wcf.page.pagePosition"><![CDATA[Page {#$pageNo} of {#$pages}]]></item>
- <item name="wcf.page.sitemap.userAccount"><![CDATA[User Account]]></item>
<item name="wcf.page.javascriptDisabled"><![CDATA[Your browser has JavaScript disabled. If you would like to use all features of this site, it is mandatory to enable JavaScript.]]></item>
<item name="wcf.page.requestedPage"><![CDATA[Requested Page]]></item>
<item name="wcf.page.cookiePolicy.info"><![CDATA[This site uses cookies. By continuing to browse this site, you are agreeing to our use of cookies. <a href="{page}com.woltlab.wcf.CookiePolicy{/page}">More details</a>]]></item>
UNIQUE KEY (sessionID, ipAddress, userAgent)
);
-DROP TABLE IF EXISTS wcf1_sitemap;
-CREATE TABLE wcf1_sitemap (
- sitemapID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
- packageID INT(10) NOT NULL,
- sitemapName VARCHAR(80) NOT NULL DEFAULT '',
- className VARCHAR(255) NOT NULL DEFAULT '',
- showOrder INT(10) NOT NULL DEFAULT 0,
- permissions TEXT NULL,
- options TEXT NULL,
- UNIQUE KEY sitemapName (packageID, sitemapName)
-);
-
DROP TABLE IF EXISTS wcf1_smiley;
CREATE TABLE wcf1_smiley (
smileyID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
ALTER TABLE wcf1_session_virtual ADD FOREIGN KEY (sessionID) REFERENCES wcf1_session (sessionID) ON DELETE CASCADE ON UPDATE CASCADE;
-ALTER TABLE wcf1_sitemap ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE;
-
ALTER TABLE wcf1_smiley ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE;
ALTER TABLE wcf1_smiley ADD FOREIGN KEY (categoryID) REFERENCES wcf1_category (categoryID) ON DELETE SET NULL;