Overhauled ACP layout, menu and permissions
authorAlexander Ebert <ebert@woltlab.com>
Tue, 1 Mar 2016 17:28:38 +0000 (18:28 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Tue, 1 Mar 2016 17:28:38 +0000 (18:28 +0100)
68 files changed:
com.woltlab.wcf/acpMenu.xml
com.woltlab.wcf/templates/userNotice.tpl
com.woltlab.wcf/userGroupOption.xml
wcfsetup/install/files/acp/images/wcfLogo-small.png [new file with mode: 0644]
wcfsetup/install/files/acp/images/wcfLogo.png
wcfsetup/install/files/acp/js/WCF.ACP.js
wcfsetup/install/files/acp/style/layout.scss [new file with mode: 0644]
wcfsetup/install/files/acp/style/mainMenu.scss [deleted file]
wcfsetup/install/files/acp/style/pageMenu.scss [new file with mode: 0644]
wcfsetup/install/files/acp/templates/footer.tpl
wcfsetup/install/files/acp/templates/header.tpl
wcfsetup/install/files/acp/templates/index.tpl
wcfsetup/install/files/acp/templates/packageList.tpl
wcfsetup/install/files/acp/templates/pageHeader.tpl
wcfsetup/install/files/acp/templates/pageHeaderLogo.tpl
wcfsetup/install/files/acp/templates/pageHeaderMenu.tpl
wcfsetup/install/files/acp/templates/pageHeaderSearch.tpl
wcfsetup/install/files/acp/templates/pageHeaderUser.tpl
wcfsetup/install/files/acp/templates/pageMenu.tpl [new file with mode: 0644]
wcfsetup/install/files/js/WoltLab/WCF/Acp/Bootstrap.js
wcfsetup/install/files/js/WoltLab/WCF/Acp/Ui/Page/Menu.js [new file with mode: 0644]
wcfsetup/install/files/lib/acp/action/CacheClearAction.class.php
wcfsetup/install/files/lib/acp/form/ApplicationEditForm.class.php
wcfsetup/install/files/lib/acp/form/CronjobAddForm.class.php
wcfsetup/install/files/lib/acp/form/DataImportForm.class.php
wcfsetup/install/files/lib/acp/form/OptionForm.class.php
wcfsetup/install/files/lib/acp/form/PackageStartInstallForm.class.php
wcfsetup/install/files/lib/acp/form/PackageUpdateServerAddForm.class.php
wcfsetup/install/files/lib/acp/form/RescueModeForm.class.php
wcfsetup/install/files/lib/acp/page/ACPSessionLogListPage.class.php
wcfsetup/install/files/lib/acp/page/ACPSessionLogPage.class.php
wcfsetup/install/files/lib/acp/page/ApplicationManagementPage.class.php
wcfsetup/install/files/lib/acp/page/CacheListPage.class.php
wcfsetup/install/files/lib/acp/page/CronjobListPage.class.php
wcfsetup/install/files/lib/acp/page/CronjobLogListPage.class.php
wcfsetup/install/files/lib/acp/page/ExceptionLogViewPage.class.php
wcfsetup/install/files/lib/acp/page/PHPInfoPage.class.php
wcfsetup/install/files/lib/acp/page/PackageInstallationConfirmPage.class.php
wcfsetup/install/files/lib/acp/page/PackageListPage.class.php
wcfsetup/install/files/lib/acp/page/PackagePage.class.php
wcfsetup/install/files/lib/acp/page/PackageUpdatePage.class.php
wcfsetup/install/files/lib/acp/page/PackageUpdateServerListPage.class.php
wcfsetup/install/files/lib/acp/page/PluginStorePurchasedItemsPage.class.php
wcfsetup/install/files/lib/acp/page/RebuildDataPage.class.php
wcfsetup/install/files/lib/acp/page/StatPage.class.php
wcfsetup/install/files/lib/acp/page/UserAuthenticationFailureListPage.class.php
wcfsetup/install/files/lib/data/cronjob/CronjobAction.class.php
wcfsetup/install/files/lib/data/cronjob/log/CronjobLogAction.class.php
wcfsetup/install/files/lib/data/option/OptionAction.class.php
wcfsetup/install/files/lib/data/option/category/OptionCategoryAction.class.php
wcfsetup/install/files/lib/data/package/Package.class.php
wcfsetup/install/files/lib/data/package/PackageAction.class.php
wcfsetup/install/files/lib/data/package/installation/queue/PackageInstallationQueueAction.class.php
wcfsetup/install/files/lib/data/package/update/PackageUpdateAction.class.php
wcfsetup/install/files/lib/data/package/update/server/PackageUpdateServerAction.class.php
wcfsetup/install/files/lib/data/stat/daily/StatDailyAction.class.php
wcfsetup/install/files/lib/system/CLIWCF.class.php
wcfsetup/install/files/lib/system/cli/command/ImportCLICommand.class.php
wcfsetup/install/files/lib/system/cli/command/PackageCLICommand.class.php
wcfsetup/install/files/lib/system/importer/ImportHandler.class.php
wcfsetup/install/files/lib/system/search/acp/PackageACPSearchResultProvider.class.php
wcfsetup/install/files/lib/system/style/StyleCompiler.class.php
wcfsetup/install/files/lib/system/worker/AbstractRebuildDataWorker.class.php
wcfsetup/install/files/lib/system/worker/ImportWorker.class.php
wcfsetup/install/files/style/layout/pageFooter.scss
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml
wcfsetup/setup/db/install.sql

index 29818e763c0b235f8b8539759802e1ae55b10f14..3d3f75b860b84c7bf4d06e6fcacd5bffee800428 100644 (file)
 <?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/acpMenu.xsd">
        <import>
-               <acpmenuitem name="wcf.acp.menu.link.system">
+               <!-- configuration -->
+               <acpmenuitem name="wcf.acp.menu.link.configuration">
                        <showorder>1</showorder>
-               </acpmenuitem>
-               
-               <!-- options -->
-               <acpmenuitem name="wcf.acp.menu.link.option">
-                       <parent>wcf.acp.menu.link.system</parent>
-                       <showorder>1</showorder>
-                       <permissions>admin.system.canEditOption</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.option.category">
-                       <parent>wcf.acp.menu.link.option</parent>
-                       <showorder>1</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.option.management">
-                       <parent>wcf.acp.menu.link.option</parent>
-                       <showorder>2</showorder>
-               </acpmenuitem>
-               <!-- /options -->
-               
-               <!-- packages -->
-               <acpmenuitem name="wcf.acp.menu.link.package">
-                       <parent>wcf.acp.menu.link.system</parent>
-                       <showorder>2</showorder>
-                       <permissions>admin.system.package.canInstallPackage,admin.system.package.canUpdatePackage,admin.system.package.canUninstallPackage,admin.system.package.canEditServer</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.application.management">
-                       <controller><![CDATA[wcf\acp\page\ApplicationManagementPage]]></controller>
-                       <parent>wcf.acp.menu.link.package</parent>
-                       <permissions>admin.system.canManageApplication</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.package.list">
-                       <controller><![CDATA[wcf\acp\page\PackageListPage]]></controller>
-                       <parent>wcf.acp.menu.link.package</parent>
-                       <permissions>admin.system.package.canUpdatePackage,admin.system.package.canUninstallPackage</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.package.install">
-                       <controller><![CDATA[wcf\acp\form\PackageStartInstallForm]]></controller>
-                       <parent>wcf.acp.menu.link.package.list</parent>
-                       <permissions>admin.system.package.canInstallPackage</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.package.server.list">
-                       <controller><![CDATA[wcf\acp\page\PackageUpdateServerListPage]]></controller>
-                       <parent>wcf.acp.menu.link.package</parent>
-                       <permissions>admin.system.package.canEditServer</permissions>
-               </acpmenuitem>
-               <!-- /packages -->
-               
-               <!-- cronjobs -->
-               <acpmenuitem name="wcf.acp.menu.link.cronjob">
-                       <parent>wcf.acp.menu.link.system</parent>
-                       <showorder>3</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.cronjob.list">
-                       <controller><![CDATA[wcf\acp\page\CronjobListPage]]></controller>
-                       <parent>wcf.acp.menu.link.cronjob</parent>
-                       <permissions>admin.system.canManageCronjob</permissions>
-                       <showorder>1</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.cronjob.add">
-                       <controller><![CDATA[wcf\acp\form\CronjobAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.cronjob.list</parent>
-                       <permissions>admin.system.canManageCronjob</permissions>
-                       <showorder>2</showorder>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               <!-- /cronjobs -->
-               
-               <acpmenuitem name="wcf.acp.menu.link.captcha">
-                       <parent>wcf.acp.menu.link.system</parent>
-                       <showorder>4</showorder>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.captcha.question.list">
-                       <parent>wcf.acp.menu.link.captcha</parent>
-                       <controller><![CDATA[wcf\acp\page\CaptchaQuestionListPage]]></controller>
-                       <permissions>admin.captcha.canManageCaptchaQuestion</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.captcha.question.add">
-                       <parent>wcf.acp.menu.link.captcha.question.list</parent>
-                       <controller><![CDATA[wcf\acp\form\CaptchaQuestionAddForm]]></controller>
-                       <permissions>admin.captcha.canManageCaptchaQuestion</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <!-- maintenance -->
-               <acpmenuitem name="wcf.acp.menu.link.maintenance">
-                       <parent>wcf.acp.menu.link.system</parent>
-                       <showorder>5</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.maintenance.cache">
-                       <controller><![CDATA[wcf\acp\page\CacheListPage]]></controller>
-                       <parent>wcf.acp.menu.link.maintenance</parent>
-                       <permissions>admin.system.canManageApplication</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.maintenance.rebuildData">
-                       <controller><![CDATA[wcf\acp\page\RebuildDataPage]]></controller>
-                       <parent>wcf.acp.menu.link.maintenance</parent>
-                       <permissions>admin.system.canRebuildData</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.maintenance.import">
-                       <controller><![CDATA[wcf\acp\form\DataImportForm]]></controller>
-                       <parent>wcf.acp.menu.link.maintenance</parent>
-                       <permissions>admin.system.canImportData</permissions>
-               </acpmenuitem>
-               <!-- /maintenance -->
-               
-               <!-- log -->
-               <acpmenuitem name="wcf.acp.menu.link.log">
-                       <parent>wcf.acp.menu.link.system</parent>
-                       <showorder>6</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.log.session">
-                       <controller><![CDATA[wcf\acp\page\ACPSessionLogListPage]]></controller>
-                       <parent>wcf.acp.menu.link.log</parent>
-                       <permissions>admin.system.canViewLog</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.log.cronjob">
-                       <controller><![CDATA[wcf\acp\page\CronjobLogListPage]]></controller>
-                       <parent>wcf.acp.menu.link.log</parent>
-                       <permissions>admin.system.canManageCronjob</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.log.exception">
-                       <controller><![CDATA[wcf\acp\page\ExceptionLogViewPage]]></controller>
-                       <parent>wcf.acp.menu.link.log</parent>
-                       <permissions>admin.system.canViewLog</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.log.stat">
-                       <controller><![CDATA[wcf\acp\page\StatPage]]></controller>
-                       <parent>wcf.acp.menu.link.log</parent>
-                       <permissions>admin.system.canViewLog</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.log.authentication.failure">
-                       <controller><![CDATA[wcf\acp\page\UserAuthenticationFailureListPage]]></controller>
-                       <parent>wcf.acp.menu.link.log</parent>
-                       <permissions>admin.system.canViewLog</permissions>
-                       <options>enable_user_authentication_failure</options>
-               </acpmenuitem>
-               <!-- /log -->
-               
+                       <icon>fa-wrench</icon>
+               </acpmenuitem>
+               
+                       <!-- option -->
+                       <acpmenuitem name="wcf.acp.menu.link.option">
+                               <parent>wcf.acp.menu.link.configuration</parent>
+                               <showorder>1</showorder>
+                               <permissions>admin.configuration.canEditOption</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.option.category">
+                               <parent>wcf.acp.menu.link.option</parent>
+                               <showorder>1</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.option.management">
+                               <parent>wcf.acp.menu.link.option</parent>
+                               <showorder>2</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.activityPoint">
+                               <parent>wcf.acp.menu.link.option</parent>
+                               <controller><![CDATA[wcf\acp\form\UserActivityPointOptionForm]]></controller>
+                               <permissions>admin.user.canEditActivityPoints</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.notificationPresetSettings">
+                               <parent>wcf.acp.menu.link.option</parent>
+                               <controller><![CDATA[wcf\acp\form\NotificationPresetSettingsForm]]></controller>
+                               <permissions>admin.user.canEditUser</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.userOptionDefaults">
+                               <controller><![CDATA[wcf\acp\form\UserOptionSetDefaultsForm]]></controller>
+                               <parent>wcf.acp.menu.link.option</parent>
+                               <permissions>admin.user.canManageUserOption</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.captcha.question.list">
+                               <parent>wcf.acp.menu.link.option</parent>
+                               <controller><![CDATA[wcf\acp\page\CaptchaQuestionListPage]]></controller>
+                               <permissions>admin.captcha.canManageCaptchaQuestion</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.captcha.question.add">
+                               <parent>wcf.acp.menu.link.captcha.question.list</parent>
+                               <controller><![CDATA[wcf\acp\form\CaptchaQuestionAddForm]]></controller>
+                               <permissions>admin.captcha.canManageCaptchaQuestion</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /option -->
+                       
+                       <!-- package -->
+                       <acpmenuitem name="wcf.acp.menu.link.package">
+                               <parent>wcf.acp.menu.link.configuration</parent>
+                               <showorder>2</showorder>
+                               <permissions>admin.configuration.package.canInstallPackage,admin.configuration.package.canUpdatePackage,admin.configuration.package.canUninstallPackage,admin.configuration.package.canEditServer</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.application.management">
+                               <controller><![CDATA[wcf\acp\page\ApplicationManagementPage]]></controller>
+                               <parent>wcf.acp.menu.link.package</parent>
+                               <permissions>admin.configuration.canManageApplication</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.package.list">
+                               <controller><![CDATA[wcf\acp\page\PackageListPage]]></controller>
+                               <parent>wcf.acp.menu.link.package</parent>
+                               <permissions>admin.configuration.package.canUpdatePackage,admin.configuration.package.canUninstallPackage</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.package.install">
+                               <controller><![CDATA[wcf\acp\form\PackageStartInstallForm]]></controller>
+                               <parent>wcf.acp.menu.link.package.list</parent>
+                               <permissions>admin.configuration.package.canInstallPackage</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.package.server.list">
+                               <controller><![CDATA[wcf\acp\page\PackageUpdateServerListPage]]></controller>
+                               <parent>wcf.acp.menu.link.package</parent>
+                               <permissions>admin.configuration.package.canEditServer</permissions>
+                       </acpmenuitem>
+                       <!-- /package -->
+               
+               <!-- /configuration -->
+               
+               <!-- user -->
                <acpmenuitem name="wcf.acp.menu.link.user">
                        <showorder>2</showorder>
-               </acpmenuitem>
-               
-               <!-- users -->
-               <acpmenuitem name="wcf.acp.menu.link.user.management">
-                       <parent>wcf.acp.menu.link.user</parent>
-                       <showorder>1</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.user.list">
-                       <controller><![CDATA[wcf\acp\page\UserListPage]]></controller>
-                       <parent>wcf.acp.menu.link.user.management</parent>
-                       <permissions>admin.user.canSearchUser</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.user.search">
-                       <controller><![CDATA[wcf\acp\form\UserSearchForm]]></controller>
-                       <parent>wcf.acp.menu.link.user.list</parent>
-                       <permissions>admin.user.canSearchUser</permissions>
-                       <icon>fa-search</icon>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.user.add">
-                       <controller><![CDATA[wcf\acp\form\UserAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.user.list</parent>
-                       <permissions>admin.user.canAddUser</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.user.bulkProcessing">
-                       <controller><![CDATA[wcf\acp\form\UserBulkProcessingForm]]></controller>
-                       <parent>wcf.acp.menu.link.user.management</parent>
-                       <permissions>admin.user.canEditUser,admin.user.canDeleteUser,admin.user.canMailUser</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.user.mail">
-                       <controller><![CDATA[wcf\acp\form\UserMailForm]]></controller>
-                       <link><![CDATA[action=all]]></link>
-                       <parent>wcf.acp.menu.link.user.management</parent>
-                       <permissions>admin.user.canMailUser</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.activityPoint">
-                       <parent>wcf.acp.menu.link.user.management</parent>
-                       <controller><![CDATA[wcf\acp\form\UserActivityPointOptionForm]]></controller>
-                       <permissions>admin.user.canEditActivityPoints</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.notificationPresetSettings">
-                       <parent>wcf.acp.menu.link.user.management</parent>
-                       <controller><![CDATA[wcf\acp\form\NotificationPresetSettingsForm]]></controller>
-                       <permissions>admin.user.canEditUser</permissions>
-               </acpmenuitem>
-               <!-- /users -->
-               
-               <!-- user groups -->
-               <acpmenuitem name="wcf.acp.menu.link.group">
-                       <parent>wcf.acp.menu.link.user</parent>
-                       <showorder>2</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.group.list">
-                       <controller><![CDATA[wcf\acp\page\UserGroupListPage]]></controller>
-                       <parent>wcf.acp.menu.link.group</parent>
-                       <permissions>admin.user.canEditGroup,admin.user.canDeleteGroup</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.group.add">
-                       <controller><![CDATA[wcf\acp\form\UserGroupAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.group.list</parent>
-                       <permissions>admin.user.canAddGroup</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.group.mail">
-                       <controller><![CDATA[wcf\acp\form\UserMailForm]]></controller>
-                       <link><![CDATA[action=group]]></link>
-                       <parent>wcf.acp.menu.link.group</parent>
-                       <permissions>admin.user.canMailUser</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.group.assignment">
-                       <controller><![CDATA[wcf\acp\page\UserGroupAssignmentListPage]]></controller>
-                       <parent>wcf.acp.menu.link.group</parent>
-                       <permissions>admin.user.canManageGroupAssignment</permissions>
-               </acpmenuitem>
-               <!-- user groups -->
-               
-               <acpmenuitem name="wcf.acp.menu.link.user.rank">
-                       <parent>wcf.acp.menu.link.user</parent>
-                       <options>module_user_rank</options>
-                       <showorder>3</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.user.rank.list">
-                       <parent>wcf.acp.menu.link.user.rank</parent>
-                       <controller><![CDATA[wcf\acp\page\UserRankListPage]]></controller>
-                       <permissions>admin.user.rank.canManageRank</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.user.rank.add">
-                       <parent>wcf.acp.menu.link.user.rank.list</parent>
-                       <controller><![CDATA[wcf\acp\form\UserRankAddForm]]></controller>
-                       <permissions>admin.user.rank.canManageRank</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <!-- user options -->
-               <acpmenuitem name="wcf.acp.menu.link.user.option">
-                       <parent>wcf.acp.menu.link.user</parent>
-                       <showorder>4</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.user.option.list">
-                       <controller><![CDATA[wcf\acp\page\UserOptionListPage]]></controller>
-                       <parent>wcf.acp.menu.link.user.option</parent>
-                       <permissions>admin.user.canManageUserOption</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.user.option.add">
-                       <controller><![CDATA[wcf\acp\form\UserOptionAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.user.option.list</parent>
-                       <permissions>admin.user.canManageUserOption</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.user.option.category.list">
-                       <controller><![CDATA[wcf\acp\page\UserOptionCategoryListPage]]></controller>
-                       <parent>wcf.acp.menu.link.user.option</parent>
-                       <permissions>admin.user.canManageUserOption</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.user.option.category.add">
-                       <controller><![CDATA[wcf\acp\form\UserOptionCategoryAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.user.option.category.list</parent>
-                       <permissions>admin.user.canManageUserOption</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.user.option.setDefaults">
-                       <controller><![CDATA[wcf\acp\form\UserOptionSetDefaultsForm]]></controller>
-                       <parent>wcf.acp.menu.link.user.option</parent>
-                       <permissions>admin.user.canManageUserOption</permissions>
-               </acpmenuitem>
-               <!-- /user options -->
-               
-               <acpmenuitem name="wcf.acp.menu.link.notice">
-                       <parent>wcf.acp.menu.link.user</parent>
-                       <showorder>5</showorder>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.notice.list">
-                       <controller><![CDATA[wcf\acp\page\NoticeListPage]]></controller>
-                       <parent>wcf.acp.menu.link.notice</parent>
-                       <permissions>admin.notice.canManageNotice</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.notice.add">
-                       <controller><![CDATA[wcf\acp\form\NoticeAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.notice.list</parent>
-                       <permissions>admin.notice.canManageNotice</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.paidSubscription">
-                       <parent>wcf.acp.menu.link.user</parent>
-                       <showorder>6</showorder>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.paidSubscription.list">
-                       <controller><![CDATA[wcf\acp\page\PaidSubscriptionListPage]]></controller>
-                       <parent>wcf.acp.menu.link.paidSubscription</parent>
-                       <permissions>admin.paidSubscription.canManageSubscription</permissions>
-                       <options>module_paid_subscription</options>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.paidSubscription.user.list">
-                       <controller><![CDATA[wcf\acp\page\PaidSubscriptionUserListPage]]></controller>
-                       <parent>wcf.acp.menu.link.paidSubscription</parent>
-                       <permissions>admin.paidSubscription.canManageSubscription</permissions>
-                       <options>module_paid_subscription</options>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.paidSubscription.transactionLog.list">
-                       <controller><![CDATA[wcf\acp\page\PaidSubscriptionTransactionLogListPage]]></controller>
-                       <parent>wcf.acp.menu.link.paidSubscription</parent>
-                       <permissions>admin.paidSubscription.canManageSubscription</permissions>
-                       <options>module_paid_subscription</options>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.display">
-                       <showorder>3</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.dashboard">
-                       <parent>wcf.acp.menu.link.display</parent>
-                       <showorder>1</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.dashboard.list">
-                       <parent>wcf.acp.menu.link.dashboard</parent>
-                       <controller><![CDATA[wcf\acp\page\DashboardListPage]]></controller>
-                       <permissions>admin.content.dashboard.canEditDashboard</permissions>
-               </acpmenuitem>
-               
-               <!-- style -->
-               <acpmenuitem name="wcf.acp.menu.link.style">
-                       <parent>wcf.acp.menu.link.display</parent>
-                       <showorder>2</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.style.list">
-                       <controller><![CDATA[wcf\acp\page\StyleListPage]]></controller>
-                       <parent>wcf.acp.menu.link.style</parent>
-                       <permissions>admin.style.canManageStyle</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.style.import">
-                       <controller><![CDATA[wcf\acp\form\StyleImportForm]]></controller>
-                       <parent>wcf.acp.menu.link.style.list</parent>
-                       <permissions>admin.style.canManageStyle</permissions>
-                       <icon>fa-upload</icon>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.style.add">
-                       <controller><![CDATA[wcf\acp\form\StyleAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.style.list</parent>
-                       <permissions>admin.style.canManageStyle</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               <!-- /style -->
-               
-               <!-- page menu -->
-               <acpmenuitem name="wcf.acp.menu.link.pageMenu">
-                       <parent>wcf.acp.menu.link.display</parent>
-                       <showorder>3</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.pageMenu.list">
-                       <controller><![CDATA[wcf\acp\page\PageMenuItemListPage]]></controller>
-                       <parent>wcf.acp.menu.link.pageMenu</parent>
-                       <permissions>admin.display.canManagePageMenu</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.pageMenu.add">
-                       <controller><![CDATA[wcf\acp\form\PageMenuItemAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.pageMenu.list</parent>
-                       <permissions>admin.display.canManagePageMenu</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               <!-- /page menu -->
-               
-               <!-- template -->
-               <acpmenuitem name="wcf.acp.menu.link.template">
-                       <parent>wcf.acp.menu.link.display</parent>
-                       <showorder>4</showorder>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.template.list">
-                       <controller><![CDATA[wcf\acp\page\TemplateListPage]]></controller>
-                       <parent>wcf.acp.menu.link.template</parent>
-                       <permissions>admin.template.canManageTemplate</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.template.add">
-                       <controller><![CDATA[wcf\acp\form\TemplateAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.template.list</parent>
-                       <permissions>admin.template.canManageTemplate</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.template.group.list">
-                       <controller><![CDATA[wcf\acp\page\TemplateGroupListPage]]></controller>
-                       <parent>wcf.acp.menu.link.template</parent>
-                       <permissions>admin.template.canManageTemplate</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.template.group.add">
-                       <controller><![CDATA[wcf\acp\form\TemplateGroupAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.template.group.list</parent>
-                       <permissions>admin.template.canManageTemplate</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               <!-- /template -->
-               
-               <!-- language -->
-               <acpmenuitem name="wcf.acp.menu.link.language">
-                       <parent>wcf.acp.menu.link.display</parent>
-                       <showorder>5</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.language.list">
-                       <parent>wcf.acp.menu.link.language</parent>
-                       <controller><![CDATA[wcf\acp\page\LanguageListPage]]></controller>
-                       <permissions>admin.language.canManageLanguage</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.language.import">
-                       <parent>wcf.acp.menu.link.language.list</parent>
-                       <controller><![CDATA[wcf\acp\form\LanguageImportForm]]></controller>
-                       <permissions>admin.language.canManageLanguage</permissions>
-                       <icon>fa-upload</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.language.item.list">
-                       <parent>wcf.acp.menu.link.language</parent>
-                       <controller><![CDATA[wcf\acp\form\LanguageItemList]]></controller>
-                       <permissions>admin.language.canManageLanguage</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.language.multilingualism">
-                       <parent>wcf.acp.menu.link.language</parent>
-                       <controller><![CDATA[wcf\acp\form\LanguageMultilingualismForm]]></controller>
-                       <permissions>admin.language.canManageLanguage</permissions>
-               </acpmenuitem>
-               
-               <!-- <acpmenuitem name="wcf.acp.menu.link.language.server">
-                       <parent>wcf.acp.menu.link.language</parent>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.language.server.list">
-                       <controller><![CDATA[wcf\acp\page\LanguageServerListPage]]></controller>
-                       <parent>wcf.acp.menu.link.language.server</parent>
-                       <permissions>admin.language.canManageLanguage</permissions>
-               </acpmenuitem>-->
-               <!-- /language -->
-               
-               <acpmenuitem name="wcf.acp.menu.link.ad">
-                       <parent>wcf.acp.menu.link.display</parent>
-                       <!-- do NOT use 'module_ad', the ACP checkbox is incorrectly recognized by adblockers -->
-                       <options>module_wcf_ad</options>
-                       <showorder>6</showorder>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.ad.list">
-                       <controller><![CDATA[wcf\acp\page\AdListPage]]></controller>
-                       <parent>wcf.acp.menu.link.ad</parent>
-                       <permissions>admin.ad.canManageAd</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.ad.add">
-                       <controller><![CDATA[wcf\acp\form\AdAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.ad.list</parent>
-                       <permissions>admin.ad.canManageAd</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
+                       <icon>fa-users</icon>
+               </acpmenuitem>
+               
+                       <!-- management -->
+                       <acpmenuitem name="wcf.acp.menu.link.user.management">
+                               <parent>wcf.acp.menu.link.user</parent>
+                               <showorder>1</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.user.list">
+                               <controller><![CDATA[wcf\acp\page\UserListPage]]></controller>
+                               <parent>wcf.acp.menu.link.user.management</parent>
+                               <permissions>admin.user.canSearchUser</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.user.search">
+                               <controller><![CDATA[wcf\acp\form\UserSearchForm]]></controller>
+                               <parent>wcf.acp.menu.link.user.list</parent>
+                               <permissions>admin.user.canSearchUser</permissions>
+                               <icon>fa-search</icon>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.user.add">
+                               <controller><![CDATA[wcf\acp\form\UserAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.user.list</parent>
+                               <permissions>admin.user.canAddUser</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.user.bulkProcessing">
+                               <controller><![CDATA[wcf\acp\form\UserBulkProcessingForm]]></controller>
+                               <parent>wcf.acp.menu.link.user.management</parent>
+                               <permissions>admin.user.canEditUser,admin.user.canDeleteUser,admin.user.canMailUser</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.user.mail">
+                               <controller><![CDATA[wcf\acp\form\UserMailForm]]></controller>
+                               <link><![CDATA[action=all]]></link>
+                               <parent>wcf.acp.menu.link.user.management</parent>
+                               <permissions>admin.user.canMailUser</permissions>
+                       </acpmenuitem>
+                       <!-- /management -->
+                       
+                       <!-- group -->
+                       <acpmenuitem name="wcf.acp.menu.link.group">
+                               <parent>wcf.acp.menu.link.user</parent>
+                               <showorder>2</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.group.list">
+                               <controller><![CDATA[wcf\acp\page\UserGroupListPage]]></controller>
+                               <parent>wcf.acp.menu.link.group</parent>
+                               <permissions>admin.user.canEditGroup,admin.user.canDeleteGroup</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.group.add">
+                               <controller><![CDATA[wcf\acp\form\UserGroupAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.group.list</parent>
+                               <permissions>admin.user.canAddGroup</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.group.mail">
+                               <controller><![CDATA[wcf\acp\form\UserMailForm]]></controller>
+                               <link><![CDATA[action=group]]></link>
+                               <parent>wcf.acp.menu.link.group</parent>
+                               <permissions>admin.user.canMailUser</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.group.assignment">
+                               <controller><![CDATA[wcf\acp\page\UserGroupAssignmentListPage]]></controller>
+                               <parent>wcf.acp.menu.link.group</parent>
+                               <permissions>admin.user.canManageGroupAssignment</permissions>
+                       </acpmenuitem>
+                       <!-- /group -->
+                       
+                       <!-- rank -->
+                       <acpmenuitem name="wcf.acp.menu.link.user.rank">
+                               <parent>wcf.acp.menu.link.user</parent>
+                               <options>module_user_rank</options>
+                               <showorder>3</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.user.rank.list">
+                               <parent>wcf.acp.menu.link.user.rank</parent>
+                               <controller><![CDATA[wcf\acp\page\UserRankListPage]]></controller>
+                               <permissions>admin.user.rank.canManageRank</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.user.rank.add">
+                               <parent>wcf.acp.menu.link.user.rank.list</parent>
+                               <controller><![CDATA[wcf\acp\form\UserRankAddForm]]></controller>
+                               <permissions>admin.user.rank.canManageRank</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /rank -->
+                       
+                       <!-- option -->
+                       <acpmenuitem name="wcf.acp.menu.link.user.option">
+                               <parent>wcf.acp.menu.link.user</parent>
+                               <showorder>4</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.user.option.list">
+                               <controller><![CDATA[wcf\acp\page\UserOptionListPage]]></controller>
+                               <parent>wcf.acp.menu.link.user.option</parent>
+                               <permissions>admin.user.canManageUserOption</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.user.option.add">
+                               <controller><![CDATA[wcf\acp\form\UserOptionAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.user.option.list</parent>
+                               <permissions>admin.user.canManageUserOption</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.user.option.category.list">
+                               <controller><![CDATA[wcf\acp\page\UserOptionCategoryListPage]]></controller>
+                               <parent>wcf.acp.menu.link.user.option</parent>
+                               <permissions>admin.user.canManageUserOption</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.user.option.category.add">
+                               <controller><![CDATA[wcf\acp\form\UserOptionCategoryAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.user.option.category.list</parent>
+                               <permissions>admin.user.canManageUserOption</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /option -->
+                       
+                       <!-- notice -->
+                       <acpmenuitem name="wcf.acp.menu.link.notice">
+                               <parent>wcf.acp.menu.link.user</parent>
+                               <showorder>5</showorder>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.notice.list">
+                               <controller><![CDATA[wcf\acp\page\NoticeListPage]]></controller>
+                               <parent>wcf.acp.menu.link.notice</parent>
+                               <permissions>admin.notice.canManageNotice</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.notice.add">
+                               <controller><![CDATA[wcf\acp\form\NoticeAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.notice.list</parent>
+                               <permissions>admin.notice.canManageNotice</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /notice -->
+                       
+                       <!-- paid subscription -->
+                       <acpmenuitem name="wcf.acp.menu.link.paidSubscription">
+                               <parent>wcf.acp.menu.link.user</parent>
+                               <showorder>6</showorder>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.paidSubscription.list">
+                               <controller><![CDATA[wcf\acp\page\PaidSubscriptionListPage]]></controller>
+                               <parent>wcf.acp.menu.link.paidSubscription</parent>
+                               <permissions>admin.paidSubscription.canManageSubscription</permissions>
+                               <options>module_paid_subscription</options>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.paidSubscription.user.list">
+                               <controller><![CDATA[wcf\acp\page\PaidSubscriptionUserListPage]]></controller>
+                               <parent>wcf.acp.menu.link.paidSubscription</parent>
+                               <permissions>admin.paidSubscription.canManageSubscription</permissions>
+                               <options>module_paid_subscription</options>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.paidSubscription.transactionLog.list">
+                               <controller><![CDATA[wcf\acp\page\PaidSubscriptionTransactionLogListPage]]></controller>
+                               <parent>wcf.acp.menu.link.paidSubscription</parent>
+                               <permissions>admin.paidSubscription.canManageSubscription</permissions>
+                               <options>module_paid_subscription</options>
+                       </acpmenuitem>
+                       <!-- /paid subscription -->
+               
+               <!-- /user -->
+               
+               <!-- content -->
                <acpmenuitem name="wcf.acp.menu.link.content">
-                       <showorder>4</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.smiley">
-                       <parent>wcf.acp.menu.link.content</parent>
-                       <options>module_smiley</options>
-                       <showorder>1</showorder>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.smiley.list">
-                       <controller><![CDATA[wcf\acp\page\SmileyListPage]]></controller>
-                       <parent>wcf.acp.menu.link.smiley</parent>
-                       <permissions>admin.content.smiley.canManageSmiley</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.smiley.add">
-                       <controller><![CDATA[wcf\acp\form\SmileyAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.smiley.list</parent>
-                       <permissions>admin.content.smiley.canManageSmiley</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.smiley.category.list">
-                       <controller><![CDATA[wcf\acp\page\SmileyCategoryListPage]]></controller>
-                       <parent>wcf.acp.menu.link.smiley</parent>
-                       <permissions>admin.content.smiley.canManageSmiley</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.smiley.category.add">
-                       <controller><![CDATA[wcf\acp\form\SmileyCategoryAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.smiley.category.list</parent>
-                       <permissions>admin.content.smiley.canManageSmiley</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.label">
-                       <parent>wcf.acp.menu.link.content</parent>
-                       <showorder>2</showorder>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.label.list">
-                       <controller><![CDATA[wcf\acp\page\LabelListPage]]></controller>
-                       <parent>wcf.acp.menu.link.label</parent>
-                       <permissions>admin.content.label.canManageLabel</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.label.add">
-                       <controller><![CDATA[wcf\acp\form\LabelAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.label.list</parent>
-                       <permissions>admin.content.label.canManageLabel</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.label.group.list">
-                       <controller><![CDATA[wcf\acp\page\LabelGroupListPage]]></controller>
-                       <parent>wcf.acp.menu.link.label</parent>
-                       <permissions>admin.content.label.canManageLabel</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.label.group.add">
-                       <controller><![CDATA[wcf\acp\form\LabelGroupAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.label.group.list</parent>
-                       <permissions>admin.content.label.canManageLabel</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.bbcode">
-                       <parent>wcf.acp.menu.link.content</parent>
                        <showorder>3</showorder>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.bbcode.list">
-                       <controller><![CDATA[wcf\acp\page\BBCodeListPage]]></controller>
-                       <parent>wcf.acp.menu.link.bbcode</parent>
-                       <permissions>admin.content.bbcode.canManageBBCode</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.bbcode.add">
-                       <controller><![CDATA[wcf\acp\form\BBCodeAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.bbcode.list</parent>
-                       <permissions>admin.content.bbcode.canManageBBCode</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.bbcode.mediaProvider.list">
-                       <controller><![CDATA[wcf\acp\page\BBCodeMediaProviderListPage]]></controller>
-                       <parent>wcf.acp.menu.link.bbcode</parent>
-                       <permissions>admin.content.bbcode.canManageBBCode</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.bbcode.mediaProvider.add">
-                       <controller><![CDATA[wcf\acp\form\BBCodeMediaProviderAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.bbcode.mediaProvider.list</parent>
-                       <permissions>admin.content.bbcode.canManageBBCode</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.tag">
-                       <parent>wcf.acp.menu.link.content</parent>
-                       <options>module_tagging</options>
+                       <icon>fa-file-text</icon>
+               </acpmenuitem>
+               
+                       <!-- cms -->
+                       <acpmenuitem name="wcf.acp.menu.link.cms">
+                               <parent>wcf.acp.menu.link.content</parent>
+                               <showorder>1</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.cms.page.list">
+                               <controller><![CDATA[wcf\acp\page\PageListPage]]></controller>
+                               <parent>wcf.acp.menu.link.cms</parent>
+                               <permissions>admin.content.cms.canManagePage</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.cms.page.landing">
+                               <controller><![CDATA[wcf\acp\form\PageLandingForm]]></controller>
+                               <parent>wcf.acp.menu.link.cms.page.list</parent>
+                               <permissions>admin.content.cms.canManagePage</permissions>
+                               <icon>fa-home</icon>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.cms.page.add">
+                               <controller><![CDATA[wcf\acp\form\PageAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.cms.page.list</parent>
+                               <permissions>admin.content.cms.canManagePage</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.cms.menu.list">
+                               <controller><![CDATA[wcf\acp\page\MenuListPage]]></controller>
+                               <parent>wcf.acp.menu.link.cms</parent>
+                               <permissions>admin.content.cms.canManageMenu</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.cms.menu.add">
+                               <controller><![CDATA[wcf\acp\form\MenuAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.cms.menu.list</parent>
+                               <permissions>admin.content.cms.canManageMenu</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.cms.box.list">
+                               <controller><![CDATA[wcf\acp\page\BoxListPage]]></controller>
+                               <parent>wcf.acp.menu.link.cms</parent>
+                               <permissions>admin.content.cms.canManageBox</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.cms.box.add">
+                               <controller><![CDATA[wcf\acp\form\BoxAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.cms.box.list</parent>
+                               <permissions>admin.content.cms.canManageBox</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.cms.media.list">
+                               <controller><![CDATA[wcf\acp\page\MediaListPage]]></controller>
+                               <parent>wcf.acp.menu.link.cms</parent>
+                               <permissions>admin.content.cms.canManageMedia</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.cms.media.add">
+                               <controller><![CDATA[wcf\acp\form\MediaAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.cms.media.list</parent>
+                               <permissions>admin.content.cms.canManageMedia</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /cms -->
+                       
+                       <!-- label -->
+                       <acpmenuitem name="wcf.acp.menu.link.label">
+                               <parent>wcf.acp.menu.link.content</parent>
+                               <showorder>2</showorder>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.label.list">
+                               <controller><![CDATA[wcf\acp\page\LabelListPage]]></controller>
+                               <parent>wcf.acp.menu.link.label</parent>
+                               <permissions>admin.content.label.canManageLabel</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.label.add">
+                               <controller><![CDATA[wcf\acp\form\LabelAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.label.list</parent>
+                               <permissions>admin.content.label.canManageLabel</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.label.group.list">
+                               <controller><![CDATA[wcf\acp\page\LabelGroupListPage]]></controller>
+                               <parent>wcf.acp.menu.link.label</parent>
+                               <permissions>admin.content.label.canManageLabel</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.label.group.add">
+                               <controller><![CDATA[wcf\acp\form\LabelGroupAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.label.group.list</parent>
+                               <permissions>admin.content.label.canManageLabel</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /label -->
+                       
+                       <!-- bbcode -->
+                       <acpmenuitem name="wcf.acp.menu.link.bbcode">
+                               <parent>wcf.acp.menu.link.content</parent>
+                               <showorder>3</showorder>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.bbcode.list">
+                               <controller><![CDATA[wcf\acp\page\BBCodeListPage]]></controller>
+                               <parent>wcf.acp.menu.link.bbcode</parent>
+                               <permissions>admin.content.bbcode.canManageBBCode</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.bbcode.add">
+                               <controller><![CDATA[wcf\acp\form\BBCodeAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.bbcode.list</parent>
+                               <permissions>admin.content.bbcode.canManageBBCode</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.bbcode.mediaProvider.list">
+                               <controller><![CDATA[wcf\acp\page\BBCodeMediaProviderListPage]]></controller>
+                               <parent>wcf.acp.menu.link.bbcode</parent>
+                               <permissions>admin.content.bbcode.canManageBBCode</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.bbcode.mediaProvider.add">
+                               <controller><![CDATA[wcf\acp\form\BBCodeMediaProviderAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.bbcode.mediaProvider.list</parent>
+                               <permissions>admin.content.bbcode.canManageBBCode</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /bbcode -->
+                       
+                       <!-- tag -->
+                       <acpmenuitem name="wcf.acp.menu.link.tag">
+                               <parent>wcf.acp.menu.link.content</parent>
+                               <options>module_tagging</options>
+                               <showorder>4</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.tag.list">
+                               <controller><![CDATA[wcf\acp\page\TagListPage]]></controller>
+                               <parent>wcf.acp.menu.link.tag</parent>
+                               <permissions>admin.content.tag.canManageTag</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.tag.add">
+                               <controller><![CDATA[wcf\acp\form\TagAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.tag.list</parent>
+                               <permissions>admin.content.tag.canManageTag</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /tag -->
+                       
+                       <!-- attachment -->
+                       <acpmenuitem name="wcf.acp.menu.link.attachment">
+                               <parent>wcf.acp.menu.link.content</parent>
+                               <showorder>5</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.attachment.list">
+                               <controller><![CDATA[wcf\acp\page\AttachmentListPage]]></controller>
+                               <parent>wcf.acp.menu.link.attachment</parent>
+                               <permissions>admin.attachment.canManageAttachment</permissions>
+                       </acpmenuitem>
+                       <!-- /attachment -->
+               
+               <!-- /content -->
+               
+               <!-- application -->
+               <acpmenuitem name="wcf.acp.menu.link.application">
                        <showorder>4</showorder>
+                       <icon>fa-comments</icon>
                </acpmenuitem>
+               <!-- /application -->
                
-               <acpmenuitem name="wcf.acp.menu.link.tag.list">
-                       <controller><![CDATA[wcf\acp\page\TagListPage]]></controller>
-                       <parent>wcf.acp.menu.link.tag</parent>
-                       <permissions>admin.content.tag.canManageTag</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.tag.add">
-                       <controller><![CDATA[wcf\acp\form\TagAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.tag.list</parent>
-                       <permissions>admin.content.tag.canManageTag</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.attachment">
-                       <parent>wcf.acp.menu.link.content</parent>
+               <!-- customization -->
+               <acpmenuitem name="wcf.acp.menu.link.customization">
                        <showorder>5</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.attachment.list">
-                       <controller><![CDATA[wcf\acp\page\AttachmentListPage]]></controller>
-                       <parent>wcf.acp.menu.link.attachment</parent>
-                       <permissions>admin.attachment.canManageAttachment</permissions>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.community">
-                       <showorder>5</showorder>
-               </acpmenuitem>
-               
-               <!-- lantia -->
-               <acpmenuitem name="wcf.acp.menu.link.cms">
-                       <parent>wcf.acp.menu.link.content</parent>
-                       <showorder>1</showorder>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.cms.page.list">
-                       <controller><![CDATA[wcf\acp\page\PageListPage]]></controller>
-                       <parent>wcf.acp.menu.link.cms</parent>
-                       <permissions>admin.content.cms.canManagePage</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.cms.page.landing">
-                       <controller><![CDATA[wcf\acp\form\PageLandingForm]]></controller>
-                       <parent>wcf.acp.menu.link.cms.page.list</parent>
-                       <permissions>admin.content.cms.canManagePage</permissions>
-                       <icon>fa-home</icon>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.cms.page.add">
-                       <controller><![CDATA[wcf\acp\form\PageAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.cms.page.list</parent>
-                       <permissions>admin.content.cms.canManagePage</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.cms.menu.list">
-                       <controller><![CDATA[wcf\acp\page\MenuListPage]]></controller>
-                       <parent>wcf.acp.menu.link.cms</parent>
-                       <permissions>admin.content.cms.canManageMenu</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.cms.menu.add">
-                       <controller><![CDATA[wcf\acp\form\MenuAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.cms.menu.list</parent>
-                       <permissions>admin.content.cms.canManageMenu</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.cms.box.list">
-                       <controller><![CDATA[wcf\acp\page\BoxListPage]]></controller>
-                       <parent>wcf.acp.menu.link.cms</parent>
-                       <permissions>admin.content.cms.canManageBox</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.cms.box.add">
-                       <controller><![CDATA[wcf\acp\form\BoxAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.cms.box.list</parent>
-                       <permissions>admin.content.cms.canManageBox</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
-               
-               <acpmenuitem name="wcf.acp.menu.link.cms.media.list">
-                       <controller><![CDATA[wcf\acp\page\MediaListPage]]></controller>
-                       <parent>wcf.acp.menu.link.cms</parent>
-                       <permissions>admin.content.cms.canManageMedia</permissions>
-               </acpmenuitem>
-               <acpmenuitem name="wcf.acp.menu.link.cms.media.add">
-                       <controller><![CDATA[wcf\acp\form\MediaAddForm]]></controller>
-                       <parent>wcf.acp.menu.link.cms.media.list</parent>
-                       <permissions>admin.content.cms.canManageMedia</permissions>
-                       <icon>fa-plus</icon>
-               </acpmenuitem>
+                       <icon>fa-desktop</icon>
+               </acpmenuitem>
+               
+                       <!-- style -->
+                       <acpmenuitem name="wcf.acp.menu.link.style">
+                               <parent>wcf.acp.menu.link.customization</parent>
+                               <showorder>1</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.style.list">
+                               <controller><![CDATA[wcf\acp\page\StyleListPage]]></controller>
+                               <parent>wcf.acp.menu.link.style</parent>
+                               <permissions>admin.style.canManageStyle</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.style.import">
+                               <controller><![CDATA[wcf\acp\form\StyleImportForm]]></controller>
+                               <parent>wcf.acp.menu.link.style.list</parent>
+                               <permissions>admin.style.canManageStyle</permissions>
+                               <icon>fa-upload</icon>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.style.add">
+                               <controller><![CDATA[wcf\acp\form\StyleAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.style.list</parent>
+                               <permissions>admin.style.canManageStyle</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /style -->
+                       
+                       <!-- template -->
+                       <acpmenuitem name="wcf.acp.menu.link.template">
+                               <parent>wcf.acp.menu.link.customization</parent>
+                               <showorder>2</showorder>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.template.list">
+                               <controller><![CDATA[wcf\acp\page\TemplateListPage]]></controller>
+                               <parent>wcf.acp.menu.link.template</parent>
+                               <permissions>admin.template.canManageTemplate</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.template.add">
+                               <controller><![CDATA[wcf\acp\form\TemplateAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.template.list</parent>
+                               <permissions>admin.template.canManageTemplate</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.template.group.list">
+                               <controller><![CDATA[wcf\acp\page\TemplateGroupListPage]]></controller>
+                               <parent>wcf.acp.menu.link.template</parent>
+                               <permissions>admin.template.canManageTemplate</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.template.group.add">
+                               <controller><![CDATA[wcf\acp\form\TemplateGroupAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.template.group.list</parent>
+                               <permissions>admin.template.canManageTemplate</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /template -->
+                       
+                       <!-- language -->
+                       <acpmenuitem name="wcf.acp.menu.link.language">
+                               <parent>wcf.acp.menu.link.customization</parent>
+                               <showorder>3</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.language.list">
+                               <parent>wcf.acp.menu.link.language</parent>
+                               <controller><![CDATA[wcf\acp\page\LanguageListPage]]></controller>
+                               <permissions>admin.language.canManageLanguage</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.language.import">
+                               <parent>wcf.acp.menu.link.language.list</parent>
+                               <controller><![CDATA[wcf\acp\form\LanguageImportForm]]></controller>
+                               <permissions>admin.language.canManageLanguage</permissions>
+                               <icon>fa-upload</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.language.item.list">
+                               <parent>wcf.acp.menu.link.language</parent>
+                               <controller><![CDATA[wcf\acp\form\LanguageItemList]]></controller>
+                               <permissions>admin.language.canManageLanguage</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.language.multilingualism">
+                               <parent>wcf.acp.menu.link.language</parent>
+                               <controller><![CDATA[wcf\acp\form\LanguageMultilingualismForm]]></controller>
+                               <permissions>admin.language.canManageLanguage</permissions>
+                       </acpmenuitem>
+                       <!-- /language -->
+                       
+                       <!-- smiley -->
+                       <acpmenuitem name="wcf.acp.menu.link.smiley">
+                               <parent>wcf.acp.menu.link.customization</parent>
+                               <options>module_smiley</options>
+                               <showorder>4</showorder>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.smiley.list">
+                               <controller><![CDATA[wcf\acp\page\SmileyListPage]]></controller>
+                               <parent>wcf.acp.menu.link.smiley</parent>
+                               <permissions>admin.content.smiley.canManageSmiley</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.smiley.add">
+                               <controller><![CDATA[wcf\acp\form\SmileyAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.smiley.list</parent>
+                               <permissions>admin.content.smiley.canManageSmiley</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.smiley.category.list">
+                               <controller><![CDATA[wcf\acp\page\SmileyCategoryListPage]]></controller>
+                               <parent>wcf.acp.menu.link.smiley</parent>
+                               <permissions>admin.content.smiley.canManageSmiley</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.smiley.category.add">
+                               <controller><![CDATA[wcf\acp\form\SmileyCategoryAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.smiley.category.list</parent>
+                               <permissions>admin.content.smiley.canManageSmiley</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /smiley -->
+                       
+                       <!-- ad -->
+                       <acpmenuitem name="wcf.acp.menu.link.ad">
+                               <parent>wcf.acp.menu.link.customization</parent>
+                               <!-- do NOT use 'module_ad', the ACP checkbox is incorrectly recognized by adblockers -->
+                               <options>module_wcf_ad</options>
+                               <showorder>5</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.ad.list">
+                               <controller><![CDATA[wcf\acp\page\AdListPage]]></controller>
+                               <parent>wcf.acp.menu.link.ad</parent>
+                               <permissions>admin.ad.canManageAd</permissions>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.ad.add">
+                               <controller><![CDATA[wcf\acp\form\AdAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.ad.list</parent>
+                               <permissions>admin.ad.canManageAd</permissions>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       <!-- /ad -->
+               
+               <!-- /customization -->
+               
+               <!-- management -->
+               <acpmenuitem name="wcf.acp.menu.link.management">
+                       <showorder>6</showorder>
+                       <icon>fa-cog</icon>
+               </acpmenuitem>
+               
+                       <!-- maintenance -->
+                       <acpmenuitem name="wcf.acp.menu.link.maintenance">
+                               <parent>wcf.acp.menu.link.management</parent>
+                               <showorder>1</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.cronjob.list">
+                               <controller><![CDATA[wcf\acp\page\CronjobListPage]]></controller>
+                               <parent>wcf.acp.menu.link.maintenance</parent>
+                               <permissions>admin.management.canManageCronjob</permissions>
+                               <showorder>1</showorder>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.cronjob.add">
+                               <controller><![CDATA[wcf\acp\form\CronjobAddForm]]></controller>
+                               <parent>wcf.acp.menu.link.cronjob.list</parent>
+                               <permissions>admin.management.canManageCronjob</permissions>
+                               <showorder>2</showorder>
+                               <icon>fa-plus</icon>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.maintenance.cache">
+                               <controller><![CDATA[wcf\acp\page\CacheListPage]]></controller>
+                               <parent>wcf.acp.menu.link.maintenance</parent>
+                               <permissions>admin.configuration.canManageApplication</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.maintenance.rebuildData">
+                               <controller><![CDATA[wcf\acp\page\RebuildDataPage]]></controller>
+                               <parent>wcf.acp.menu.link.maintenance</parent>
+                               <permissions>admin.management.canRebuildData</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.maintenance.import">
+                               <controller><![CDATA[wcf\acp\form\DataImportForm]]></controller>
+                               <parent>wcf.acp.menu.link.maintenance</parent>
+                               <permissions>admin.management.canImportData</permissions>
+                       </acpmenuitem>
+                       <!-- /maintenance -->
+               
+                       <!-- stat -->
+                       <acpmenuitem name="wcf.acp.menu.link.stat">
+                               <parent>wcf.acp.menu.link.management</parent>
+                               <showorder>2</showorder>
+                       </acpmenuitem>
+                       <acpmenuitem name="wcf.acp.menu.link.stat.list">
+                               <controller><![CDATA[wcf\acp\page\StatPage]]></controller>
+                               <parent>wcf.acp.menu.link.stat</parent>
+                               <permissions>admin.management.canViewLog</permissions>
+                       </acpmenuitem>
+                       <!-- /stat -->
+                       
+                       <!-- log -->
+                       <acpmenuitem name="wcf.acp.menu.link.log">
+                               <parent>wcf.acp.menu.link.management</parent>
+                               <showorder>3</showorder>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.log.session">
+                               <controller><![CDATA[wcf\acp\page\ACPSessionLogListPage]]></controller>
+                               <parent>wcf.acp.menu.link.log</parent>
+                               <permissions>admin.management.canViewLog</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.log.cronjob">
+                               <controller><![CDATA[wcf\acp\page\CronjobLogListPage]]></controller>
+                               <parent>wcf.acp.menu.link.log</parent>
+                               <permissions>admin.management.canManageCronjob</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.log.exception">
+                               <controller><![CDATA[wcf\acp\page\ExceptionLogViewPage]]></controller>
+                               <parent>wcf.acp.menu.link.log</parent>
+                               <permissions>admin.management.canViewLog</permissions>
+                       </acpmenuitem>
+                       
+                       <acpmenuitem name="wcf.acp.menu.link.log.authentication.failure">
+                               <controller><![CDATA[wcf\acp\page\UserAuthenticationFailureListPage]]></controller>
+                               <parent>wcf.acp.menu.link.log</parent>
+                               <permissions>admin.management.canViewLog</permissions>
+                               <options>enable_user_authentication_failure</options>
+                       </acpmenuitem>
+                       <!-- /log -->
+               
+               <!-- /management -->
        </import>
 </data>
index 34c7e7d06fd9864ecaf7da2e973d91245aff7f7d..34f8e2fc639a51624254f0c747f667aa34f7bf32 100644 (file)
@@ -10,7 +10,7 @@
                <p class="info">{lang}wcf.page.cookiePolicy.info{/lang}</p>
        {/if}
        
-       {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage') && $__wcf->getAvailableUpdates()}
+       {if $__wcf->session->getPermission('admin.configuration.package.canUpdatePackage') && $__wcf->getAvailableUpdates()}
                <p class="info">{lang}wcf.global.availableUpdates{/lang}</p>
        {/if}
        
index 0209520d2523be5ff227cbec014029e155d7c846..eb6cc9cecc7bd183107c2a93b231c9666d1e7d01 100644 (file)
@@ -2,7 +2,7 @@
 <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/userGroupOption.xsd">
        <import>
                <categories>
-                       <category name="user"></category>
+                       <category name="user" />
                        <category name="user.profile">
                                <parent>user</parent>
                        </category>
@@ -29,7 +29,7 @@
                                <parent>user.message</parent>
                        </category>
                        
-                       <category name="mod"></category>
+                       <category name="mod" />
                        <category name="mod.general">
                                <parent>mod</parent>
                        </category>
                                <parent>mod.general</parent>
                        </category>
                        
-                       <category name="admin"></category>
+                       <category name="admin" />
+                       
                        <category name="admin.general">
                                <parent>admin</parent>
                        </category>
-                       <category name="admin.system">
+                       
+                       <!-- admin.configuration -->
+                       <category name="admin.configuration">
                                <parent>admin</parent>
                        </category>
-                       <category name="admin.system.package">
-                               <parent>admin.system</parent>
-                       </category>
-                       <category name="admin.maintenance">
-                               <parent>admin.system</parent>
+                       <category name="admin.configuration.package">
+                               <parent>admin.configuration</parent>
                        </category>
+                       <!-- /admin.configuration -->
+                       
+                       <!-- admin.user -->
                        <category name="admin.user">
                                <parent>admin</parent>
                        </category>
                        <category name="admin.user.group">
                                <parent>admin.user</parent>
                        </category>
-                       <category name="admin.user.option"><!-- @deprecated -->
-                               <parent>admin.user</parent>
-                       </category>
-                       <category name="admin.user.rank"><!-- @deprecated -->
-                               <parent>admin.user</parent>
-                       </category>
+                       <!-- /admin.user -->
                        
-                       <category name="admin.display">
+                       <!-- admin.content -->
+                       <category name="admin.content">
                                <parent>admin</parent>
                        </category>
-                       <category name="admin.style"><!-- @deprecated -->
-                               <parent>admin.display</parent>
-                       </category>
-                       <category name="admin.display.pageMenu"><!-- @deprecated -->
-                               <parent>admin.display</parent>
-                       </category>
-                       <category name="admin.template"><!-- @deprecated -->
-                               <parent>admin.display</parent>
-                       </category>
+                       <!-- /admin.content -->
                        
-                       <category name="admin.content">
+                       <!-- admin.application -->
+                       <category name="admin.application">
                                <parent>admin</parent>
                        </category>
-                       <category name="admin.attachment"><!-- @deprecated -->
-                               <parent>admin.content</parent>
-                       </category>
-                       <category name="admin.content.bbcode"><!-- @deprecated -->
-                               <parent>admin.content</parent>
-                       </category>
-                       <category name="admin.content.smiley"><!-- @deprecated -->
-                               <parent>admin.content</parent>
-                       </category>
-                       <category name="admin.content.dashboard"><!-- @deprecated -->
-                               <parent>admin.content</parent>
-                       </category>
-                       <category name="admin.content.label"><!-- @deprecated -->
-                               <parent>admin.content</parent>
-                       </category>
-                       <category name="admin.content.tag"><!-- @deprecated -->
-                               <parent>admin.content</parent>
-                       </category>
+                       <!-- /admin.application -->
                        
-                       <category name="admin.community">
+                       <!-- admin.customization -->
+                       <category name="admin.customization">
                                <parent>admin</parent>
                        </category>
-                       <category name="admin.language"><!-- @deprecated -->
-                               <parent>admin.display</parent>
+                       <!-- /admin.customization -->
+                       
+                       <!-- admin.management -->
+                       <category name="admin.management">
+                               <parent>admin</parent>
                        </category>
+                       <!-- /admin.management -->
                </categories>
                
                <options>
+                       <!-- admin.general -->
                        <option name="admin.general.canViewPrivateUserOptions">
                                <categoryname>admin.general</categoryname>
                                <optiontype>boolean</optiontype>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.system.canEditOption">
-                               <categoryname>admin.system</categoryname>
+                       <option name="admin.user.canViewInvisible">
+                               <categoryname>admin.general</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.system.canViewLog">
-                               <categoryname>admin.system</categoryname>
+                       <option name="admin.user.canViewIpAddress">
+                               <categoryname>admin.general</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.system.canManageApplication">
-                               <categoryname>admin.system.package</categoryname>
+                       <!-- /admin.general -->
+                       
+                       <!-- admin.configuration -->
+                       <option name="admin.configuration.canEditOption">
+                               <categoryname>admin.configuration</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.system.canImportData">
-                               <categoryname>admin.system</categoryname>
+                       <option name="admin.user.canEditActivityPoints">
+                               <categoryname>admin.configuration</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.system.canRebuildData">
-                               <categoryname>admin.system</categoryname>
+                       <option name="admin.captcha.canManageCaptchaQuestion">
+                               <categoryname>admin.configuration</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.system.canManageCronjob">
-                               <categoryname>admin.system</categoryname>
+                       <option name="admin.configuration.canManageApplication">
+                               <categoryname>admin.configuration.package</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.system.package.canUpdatePackage">
-                               <categoryname>admin.system.package</categoryname>
+                       <option name="admin.configuration.package.canUpdatePackage">
+                               <categoryname>admin.configuration.package</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.system.package.canUninstallPackage">
-                               <categoryname>admin.system.package</categoryname>
+                       <option name="admin.configuration.package.canUninstallPackage">
+                               <categoryname>admin.configuration.package</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.system.package.canEditServer">
-                               <categoryname>admin.system.package</categoryname>
+                       <option name="admin.configuration.package.canEditServer">
+                               <categoryname>admin.configuration.package</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
+                       <!-- /admin.configuration -->
+                       
+                       <!-- admin.user -->
                        <option name="admin.user.accessibleGroups">
                                <categoryname>admin.user.group</categoryname>
                                <optiontype>userGroups</optiontype>
-                               <defaultvalue></defaultvalue>
+                               <defaultvalue />
                                <admindefaultvalue>1,2,3,4,5</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
+                       <option name="admin.user.canEnableUser">
+                               <categoryname>admin.user.user</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <admindefaultvalue>1</admindefaultvalue>
+                               <usersonly>1</usersonly>
+                       </option>
                        <option name="admin.user.canBanUser">
                                <categoryname>admin.user.user</categoryname>
                                <optiontype>boolean</optiontype>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.paidSubscription.canManageSubscription">
+                       <option name="admin.notice.canManageNotice">
                                <categoryname>admin.user.user</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.content.dashboard.canEditDashboard">
-                               <categoryname>admin.display</categoryname>
+                       <option name="admin.user.rank.canManageRank">
+                               <categoryname>admin.user.user</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.style.canManageStyle">
-                               <categoryname>admin.display</categoryname>
+                       <option name="admin.paidSubscription.canManageSubscription">
+                               <categoryname>admin.user.user</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
-                       <option name="admin.style.canUseDisabledStyle">
-                               <categoryname>admin.display</categoryname>
+                       <!-- /admin.user -->
+                       
+                       <!-- admin.content -->
+                       <option name="admin.content.cms.canManagePage">
+                               <categoryname>admin.content</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.display.canManagePageMenu">
-                               <categoryname>admin.display</categoryname>
+                       <option name="admin.content.cms.canManageMenu">
+                               <categoryname>admin.content</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.template.canManageTemplate">
-                               <categoryname>admin.display</categoryname>
+                       <option name="admin.content.cms.canManageBox">
+                               <categoryname>admin.content</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.language.canManageLanguage">
-                               <categoryname>admin.display</categoryname>
+                       <option name="admin.content.cms.canManageMedia">
+                               <categoryname>admin.content</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <admindefaultvalue>1</admindefaultvalue>
+                               <usersonly>1</usersonly>
+                       </option>
+                       <option name="admin.content.cms.canUseMedia">
+                               <categoryname>admin.content</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.ad.canManageAd">
-                               <categoryname>admin.display</categoryname>
+                       <option name="admin.content.canBulkRevertContentChanges">
+                               <categoryname>admin.content</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
+                               <options>module_edit_history</options>
                        </option>
                        
-                       <option name="user.attachment.maxSize">
-                               <categoryname>user.message.attachment</categoryname>
-                               <optiontype>fileSize</optiontype>
-                               <defaultvalue>1000000</defaultvalue>
-                               <minvalue>10000</minvalue>
-                               <options>module_attachment</options>
+                       <option name="admin.content.label.canManageLabel">
+                               <categoryname>admin.content</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <admindefaultvalue>1</admindefaultvalue>
+                               <usersonly>1</usersonly>
                        </option>
-                       <option name="user.attachment.allowedExtensions">
-                               <categoryname>user.message.attachment</categoryname>
-                               <optiontype>textarea</optiontype>
-                               <defaultvalue><![CDATA[gif
-jpg
-jpeg
-png
-bmp
-zip
-txt
-pdf]]></defaultvalue>
-                               <wildcard><![CDATA[*]]></wildcard>
-                               <options>module_attachment</options>
+                       
+                       <option name="admin.content.bbcode.canManageBBCode">
+                               <categoryname>admin.content</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <admindefaultvalue>1</admindefaultvalue>
+                               <usersonly>1</usersonly>
                        </option>
-                       <option name="user.attachment.maxCount">
-                               <categoryname>user.message.attachment</categoryname>
-                               <optiontype>integer</optiontype>
-                               <defaultvalue>10</defaultvalue>
-                               <minvalue>1</minvalue>
-                               <options>module_attachment</options>
-                               <maxvalue>100</maxvalue>
+                       
+                       <option name="admin.content.tag.canManageTag">
+                               <categoryname>admin.content</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <admindefaultvalue>1</admindefaultvalue>
+                               <usersonly>1</usersonly>
                        </option>
                        
                        <option name="admin.attachment.canManageAttachment">
@@ -397,9 +396,34 @@ pdf]]></defaultvalue>
                                <options>module_attachment</options>
                                <usersonly>1</usersonly>
                        </option>
+                       <!-- /admin.content -->
                        
-                       <option name="admin.content.bbcode.canManageBBCode">
-                               <categoryname>admin.content</categoryname>
+                       <!-- admin.customization -->
+                       <option name="admin.style.canManageStyle">
+                               <categoryname>admin.customization</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <admindefaultvalue>1</admindefaultvalue>
+                               <usersonly>1</usersonly>
+                       </option>
+                       <option name="admin.style.canUseDisabledStyle">
+                               <categoryname>admin.customization</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <admindefaultvalue>1</admindefaultvalue>
+                               <usersonly>1</usersonly>
+                       </option>
+                       
+                       <option name="admin.template.canManageTemplate">
+                               <categoryname>admin.customization</categoryname>
+                               <optiontype>boolean</optiontype>
+                               <defaultvalue>0</defaultvalue>
+                               <admindefaultvalue>1</admindefaultvalue>
+                               <usersonly>1</usersonly>
+                       </option>
+                       
+                       <option name="admin.language.canManageLanguage">
+                               <categoryname>admin.customization</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
@@ -414,45 +438,78 @@ pdf]]></defaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.content.cms.canManagePage">
-                               <categoryname>admin.content</categoryname>
+                       <option name="admin.ad.canManageAd">
+                               <categoryname>admin.customization</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
+                       <!-- /admin.customization -->
                        
-                       <option name="admin.content.cms.canManageMenu">
-                               <categoryname>admin.content</categoryname>
+                       <!-- admin.management -->
+                       <option name="admin.management.canManageCronjob">
+                               <categoryname>admin.management</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.content.cms.canManageBox">
-                               <categoryname>admin.content</categoryname>
+                       <option name="admin.management.canRebuildData">
+                               <categoryname>admin.management</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.content.cms.canManageMedia">
-                               <categoryname>admin.content</categoryname>
+                       <option name="admin.management.canImportData">
+                               <categoryname>admin.management</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
                        
-                       <option name="admin.content.cms.canUseMedia">
-                               <categoryname>admin.content</categoryname>
+                       <option name="admin.management.canViewLog">
+                               <categoryname>admin.management</categoryname>
                                <optiontype>boolean</optiontype>
                                <defaultvalue>0</defaultvalue>
                                <admindefaultvalue>1</admindefaultvalue>
                                <usersonly>1</usersonly>
                        </option>
+                       <!-- /admin.management -->
+                       
+                       <option name="user.attachment.maxSize">
+                               <categoryname>user.message.attachment</categoryname>
+                               <optiontype>fileSize</optiontype>
+                               <defaultvalue>1000000</defaultvalue>
+                               <minvalue>10000</minvalue>
+                               <options>module_attachment</options>
+                       </option>
+                       <option name="user.attachment.allowedExtensions">
+                               <categoryname>user.message.attachment</categoryname>
+                               <optiontype>textarea</optiontype>
+                               <defaultvalue><![CDATA[gif
+jpg
+jpeg
+png
+bmp
+zip
+txt
+pdf]]></defaultvalue>
+                               <wildcard><![CDATA[*]]></wildcard>
+                               <options>module_attachment</options>
+                       </option>
+                       <option name="user.attachment.maxCount">
+                               <categoryname>user.message.attachment</categoryname>
+                               <optiontype>integer</optiontype>
+                               <defaultvalue>10</defaultvalue>
+                               <minvalue>1</minvalue>
+                               <options>module_attachment</options>
+                               <maxvalue>100</maxvalue>
+                       </option>
                        
                        <!-- user.message -->
                        <option name="user.message.canUseSmilies">
@@ -488,43 +545,6 @@ pdf]]></defaultvalue>
                        </option>
                        <!-- /user.message.comment -->
                        
-                       <option name="admin.user.canViewInvisible">
-                               <categoryname>admin.general</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                       </option>
-                       <option name="admin.user.canViewIpAddress">
-                               <categoryname>admin.general</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                       </option>
-                       <option name="admin.user.canEnableUser">
-                               <categoryname>admin.user.user</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                       </option>
-                       <option name="admin.user.canEditActivityPoints">
-                               <categoryname>admin.user.user</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                       </option>
-                       
-                       <option name="admin.user.rank.canManageRank">
-                               <categoryname>admin.user.user</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                       </option>
-                       
                        <!-- user.signature -->
                        <option name="user.signature.canUseSmilies">
                                <categoryname>user.signature</categoryname>
@@ -746,47 +766,6 @@ png]]></defaultvalue>
                        </option>
                        <!-- /user.profileComment -->
                        
-                       <option name="admin.content.canBulkRevertContentChanges">
-                               <categoryname>admin.content</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                               <options>module_edit_history</options>
-                       </option>
-                       
-                       <option name="admin.content.label.canManageLabel">
-                               <categoryname>admin.content</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                       </option>
-                       
-                       <option name="admin.content.tag.canManageTag">
-                               <categoryname>admin.content</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                       </option>
-                       
-                       <option name="admin.notice.canManageNotice">
-                               <categoryname>admin.user.user</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                       </option>
-                       
-                       <option name="admin.captcha.canManageCaptchaQuestion">
-                               <categoryname>admin.system</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>0</defaultvalue>
-                               <admindefaultvalue>1</admindefaultvalue>
-                               <usersonly>1</usersonly>
-                       </option>
-                       
                        <!-- todo: find better category -->
                        <option name="user.tag.canViewTag">
                                <categoryname>user.message</categoryname>
diff --git a/wcfsetup/install/files/acp/images/wcfLogo-small.png b/wcfsetup/install/files/acp/images/wcfLogo-small.png
new file mode 100644 (file)
index 0000000..f0fec15
Binary files /dev/null and b/wcfsetup/install/files/acp/images/wcfLogo-small.png differ
index 23004724989e5ccd8678de770d92cb7b0c506eba..aeb620fa1a5da8e5ffea66bdbb788df4d272a7e8 100644 (file)
Binary files a/wcfsetup/install/files/acp/images/wcfLogo.png and b/wcfsetup/install/files/acp/images/wcfLogo.png differ
index 5b74819e9533c87f005b2b76eb463bb18213c269..1397b089812b15e5eef6d834865aae94d787d52e 100644 (file)
@@ -1880,10 +1880,10 @@ WCF.ACP.Search = WCF.Search.Base.extend({
         */
        init: function() {
                this._className = 'wcf\\data\\acp\\search\\provider\\ACPSearchProviderAction';
-               this._super('#search input[name=q]');
+               this._super('#pageHeaderSearch input[name=q]');
                
                // disable form submitting
-               $('#search > form').on('submit', function(event) {
+               $('#pageHeaderSearch > form').on('submit', function(event) {
                        event.preventDefault();
                });
        },
@@ -1936,6 +1936,12 @@ WCF.ACP.Search = WCF.Search.Base.extend({
                }
                
                window.location = this._list.find('li.dropdownNavigationItem > a').attr('href');
+       },
+       
+       _success: function(data) {
+               this._super(data);
+               
+               this._list.addClass('acpSearchDropdown');
        }
 });
 
diff --git a/wcfsetup/install/files/acp/style/layout.scss b/wcfsetup/install/files/acp/style/layout.scss
new file mode 100644 (file)
index 0000000..3511f2c
--- /dev/null
@@ -0,0 +1,186 @@
+.layoutBoundary {
+       margin: 0;
+       max-width: none;
+       min-width: 0;
+}
+
+.pageContainer {
+       /* required for sticky page header */
+       padding-top: 50px;
+}
+
+/* page header */
+.pageHeaderContainer {
+       left: 0;
+       position: fixed;
+       right: 0;
+       top: 0;
+       
+       .pageHeader > div > div {
+               height: 50px;
+               padding: 10px 10px 10px 0;
+       }
+       
+       .pageHeaderLogo {
+               flex: 0 0 120px;
+               margin: 0;
+               order: 1;
+               text-align: center;
+               
+               .pageHeaderLogoLarge {
+                       display: none;
+               }
+               
+               .pageHeaderLogoSmall {
+                       display: inline;
+               }
+       }
+       
+       .mainMenu {
+               flex: 0 0 auto;
+               order: 2;
+       }
+       
+       .pageHeaderSearch {
+               flex: 0 0 auto;
+               order: 3;
+               
+               .pageHeaderSearchInput {
+                       border-width: 0 !important;
+                       height: 50px;
+                       width: 300px;
+               }
+       }
+       
+       .userPanel {
+               flex: 1 1 auto;
+               order: 4;
+       }
+}
+
+.acpSearchDropdown {
+       border-width: 0;
+       top: 50px !important;
+       width: 300px;
+       
+       &::before,
+       &::after {
+               display: none;
+       }
+}
+
+
+.acpPageContentContainer {
+       display: flex;
+       flex: 1 0 auto;
+}
+
+.acpPageMenu .icon, .acpPageSubMenu .icon {
+       color: inherit;
+}
+
+.acpPageMenu {
+       background-color: rgb(52, 73, 94);
+       flex: 0 0 120px;
+       text-align: center;
+       overflow: hidden;
+       
+       .acpPageMenuLink {
+               color: rgb(192, 192, 192);
+               display: block;
+               padding: 20px 10px;
+               
+               &.active {
+                       background-color: rgb(65, 86, 107);
+                       color: rgb(255, 255, 255);
+                       
+                       > .icon {
+                               transform: scale(1);
+                       }
+               }
+               
+               > .icon {
+                       transform: scale(.8);
+                       transition: transform .12s linear;
+               }
+       }
+       
+       .acpPageMenuItemLabel {
+               display: block;
+               margin-top: 5px;
+       }
+}
+
+
+.acpPageSubMenu {
+       background-color: rgb(65, 86, 107);
+       flex: 0 0 auto;
+}
+
+.acpPageSubMenuCategoryList{
+       flex: 0 0 300px;
+       overflow: hidden;
+       width: 300px;
+       
+       &:not(.active) {
+               display: none;
+       }
+       
+       > .acpPageSubMenuCategory {
+               margin-top: 20px;
+               padding-left: 20px;
+               
+               > span {
+                       color: rgb(169, 169, 169);
+                       display: block;
+                       padding: 5px 20px;
+                       text-transform: uppercase;
+               }
+       }
+       
+       .acpPageSubMenuLink,
+       .acpPageSubMenuIcon {
+               color: rgb(255, 255, 255);
+               display: block;
+               overflow: hidden;
+               padding: 5px 20px;
+               text-overflow: ellipsis;
+               white-space: nowrap;
+       }
+       
+       .acpPageSubMenuLink:hover,
+       .acpPageSubMenuLink:hover ~ .acpPageSubMenuIcon:not(.active),
+       .acpPageSubMenuIcon:hover {
+               background-color: rgb(52, 73, 94);
+       }
+       
+       .acpPageSubMenuLinkWrapper {
+               display: flex;
+               
+               > .acpPageSubMenuLink {
+                       flex: 1 1 auto;
+               }
+               
+               > .acpPageSubMenuIcon {
+                       flex: 0 0 auto;
+               }
+       }
+       
+       .acpPageSubMenuItemList > .active > a,
+       .acpPageSubMenuLink.active,
+       .acpPageSubMenuLink.active ~ .acpPageSubMenuIcon,
+       .acpPageSubMenuIcon.active {
+               background-color: rgb(255, 255, 255) !important;
+               color: rgb(44, 62, 80) !important;
+       }
+}
+
+.main {
+       flex: 1 1 auto;
+       padding: 40px 0 40px 20px;
+}
+
+.pageFooter {
+       padding: 20px 0;
+       text-align: center;
+}
diff --git a/wcfsetup/install/files/acp/style/mainMenu.scss b/wcfsetup/install/files/acp/style/mainMenu.scss
deleted file mode 100644 (file)
index 9d3237b..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-.wcfAcpMenu {
-       &.doubleColumned {
-               -webkit-columns: 2;
-               -moz-columns: 2;
-               columns: 2;
-               
-               -webkit-column-gap: 1px;
-               -moz-column-gap: 1px;
-               column-gap: 1px;
-               
-               -webkit-column-rule: 1px solid $wcfContentBorderInner;
-               -moz-column-rule: 1px solid $wcfContentBorderInner;
-               column-rule: 1px solid $wcfContentBorderInner;
-               
-               > li {
-                       -webkit-column-break-inside: avoid;
-                       page-break-inside: avoid;
-                       break-inside: avoid;
-               }
-       }
-       
-       > li {
-               min-width: 250px;
-       }
-}
-
-.boxMenuDepth1 > li > span {
-       color: $wcfTabularBoxHeadline;
-       cursor: default;
-       
-       @extend .wcfFontBold;
-}
-
-.menuItemWrapper {
-       display: flex;
-       
-       &:hover > a,
-       > .active {
-               background-color: $wcfDropdownBackgroundActive;
-               color: $wcfDropdownLinkActive;
-               
-               > .icon {
-                       color: $wcfDropdownLinkActive;
-               }
-       }
-       
-       > a {
-               color: $wcfDropdownLink;
-               display: block;
-               flex: 0 0 auto;
-               padding: 5px 10px;
-               white-space: nowrap;
-               
-               &:first-child {
-                       flex: 1 1 auto;
-                       padding: 5px 20px 5px 40px;
-               }
-       }
-}
diff --git a/wcfsetup/install/files/acp/style/pageMenu.scss b/wcfsetup/install/files/acp/style/pageMenu.scss
new file mode 100644 (file)
index 0000000..e69de29
index bfedf7fd7365c631313953fcc7b39562966d2408..af0a6a53703186948f0343e72bc1e9ffe4b92428 100644 (file)
@@ -1,6 +1,7 @@
+                               </div>
                        </div>
-               </div>
-       </section>
+               </section>
+       </div>
                        
        {include file='pageFooter'}             
 </div>
index 679b63f051bf56007f10be9a5b33474331ca8bba..7781aba1954cbadbfacc46e094942557c8a8477a 100644 (file)
        </script>
        <script>
                $(function() {
-                       {* work-around for unknown core-object during WCFSetup *}
-                       {if PACKAGE_ID}
-                               {assign var=activeMenuItems value=$__wcf->getACPMenu()->getActiveMenuItems()|array_reverse}
-                               var $activeMenuItems = [{implode from=$activeMenuItems item=_menuItem}'{$_menuItem}'{/implode}];
-                               //new WCF.ACP.Menu($activeMenuItems);
-                       {/if}
-                       
                        if (jQuery.browser.touch) $('html').addClass('touch');
                        
                        new WCF.Effect.SmoothScroll();
                        WCF.System.PageNavigation.init('.pagination');
                        
                        {if $__wcf->user->userID}
-                               //new WCF.ACP.Search();
+                               new WCF.ACP.Search();
                        {/if}
                        
                        {event name='javascriptInit'}
                
                {event name='afterPageHeader'}
                
-               {*include file='pageNavbarTop'*}
-               
-               <section id="main" class="main" role="main">
-       
-       {*
-       <header id="pageHeader" class="layoutBoundary">
-               <div>
-                       {if $__wcf->user->userID}
-                               <nav id="topMenu" class="userPanel">
-                                       <div class="layoutBoundary">
-                                               <ul class="userPanelItems">
-                                                       <li id="userMenu" class="dropdown">
-                                                               <a class="dropdownToggle framed" data-toggle="userMenu">{if PACKAGE_ID}{@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(24)} {/if}{lang}wcf.user.userNote{/lang}</a>
-                                                               <ul class="dropdownMenu">
-                                                                       {if PACKAGE_ID > 1}
-                                                                               <li><a href="{link controller='User' object=$__wcf->user forceFrontend=true}{/link}" class="box32">
-                                                                                       <div class="framed">{@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(32)}</div>
-                                                                                       
-                                                                                       <div class="containerHeadline">
-                                                                                               <h3>{$__wcf->user->username}</h3>
-                                                                                               <small>{lang}wcf.user.myProfile{/lang}</small>
-                                                                                       </div>
-                                                                               </a></li>
-                                                                               {if $__wcf->getUserProfileHandler()->canEditOwnProfile()}<li><a href="{link controller='User' object=$__wcf->user forceFrontend=true}editOnInit=true#about{/link}">{lang}wcf.user.editProfile{/lang}</a></li>{/if}
-                                                                               <li><a href="{link controller='Settings' forceFrontend=true}{/link}">{lang}wcf.user.menu.settings{/lang}</a></li>
-                                                                               
-                                                                               {event name='userMenuItems'}
-                                                                               
-                                                                               <li class="dropdownDivider"></li>
-                                                                       {/if}
-                                                                       <li><a href="{link controller='Logout'}t={@SECURITY_TOKEN}{/link}" onclick="WCF.System.Confirmation.show('{lang}wcf.user.logout.sure{/lang}', $.proxy(function (action) { if (action == 'confirm') window.location.href = $(this).attr('href'); }, this)); return false;">{lang}wcf.user.logout{/lang}</a></li>
-                                                               </ul>
-                                                       </li>
-                                                       
-                                                       {if PACKAGE_ID > 1}
-                                                               <li id="jumpToPage" class="dropdown">
-                                                                       <a href="{link forceFrontend=true}{/link}" class="dropdownToggle" data-toggle="jumpToPage"><span class="icon icon16 icon-home"></span> <span>{lang}wcf.global.jumpToPage{/lang}</span></a>
-                                                                       <ul class="dropdownMenu">
-                                                                               {foreach from=$__wcf->getPageMenu()->getMenuItems('header') item=_menuItem}
-                                                                                       <li><a href="{$_menuItem->getProcessor()->getLink()}">{lang}{$_menuItem->menuItem}{/lang}</a></li>
-                                                                               {/foreach}
-                                                                       </ul>
-                                                               </li>
-                                                               
-                                                               {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage') && $__wcf->getAvailableUpdates()}
-                                                                       <li>
-                                                                               <a href="{link controller='PackageUpdate'}{/link}"><span class="icon icon16 icon-refresh"></span> <span>{lang}wcf.acp.package.updates{/lang}</span> <span class="badge badgeInverse">{#$__wcf->getAvailableUpdates()}</span></a>
-                                                                       </li>
-                                                               {/if}
-                                                       {/if}
-                                                                                                               
-                                                       <li id="woltlab" class="dropdown">
-                                                               <a class="dropdownToggle" data-toggle="woltlab"><span class="icon icon16 icon-info-sign"></span> <span>WoltLab&reg;</span></a>
-                                                               
-                                                               <ul class="dropdownMenu">
-                                                                       <li><a class="externalURL" href="{@$__wcf->getPath()}acp/dereferrer.php?url={"https://www.woltlab.com"|rawurlencode}"{if EXTERNAL_LINK_TARGET_BLANK} target="_blank"{/if}>{lang}wcf.acp.index.woltlab.website{/lang}</a></li>
-                                                                       <li><a class="externalURL" href="{@$__wcf->getPath()}acp/dereferrer.php?url={"https://community.woltlab.com"|rawurlencode}"{if EXTERNAL_LINK_TARGET_BLANK} target="_blank"{/if}>{lang}wcf.acp.index.woltlab.forums{/lang}</a></li>
-                                                                       <li><a class="externalURL" href="{@$__wcf->getPath()}acp/dereferrer.php?url={"https://www.woltlab.com/ticket-add/"|rawurlencode}"{if EXTERNAL_LINK_TARGET_BLANK} target="_blank"{/if}>{lang}wcf.acp.index.woltlab.tickets{/lang}</a></li>
-                                                                       <li><a class="externalURL" href="{@$__wcf->getPath()}acp/dereferrer.php?url={"https://pluginstore.woltlab.com"|rawurlencode}"{if EXTERNAL_LINK_TARGET_BLANK} target="_blank"{/if}>{lang}wcf.acp.index.woltlab.pluginStore{/lang}</a></li>
-                                                               </ul>
-                                                       </li>
-                                                       
-                                                       {event name='topMenu'}
-                                               </ul>
-                                               
-                                               {if $__wcf->getSession()->getPermission('admin.general.canUseAcp')}
-                                                       <aside id="search" class="searchBar">
-                                                               <form>
-                                                                       <input type="search" name="q" placeholder="{lang}wcf.global.search.enterSearchTerm{/lang}" value="" />
-                                                               </form>
-                                                       </aside>
-                                               {/if}
-                                       </div>
-                               </nav>
-                       {/if}
-                       
-                       <div id="logo" class="logo">
-                               <a href="{link}{/link}">
-                                       <h1>{lang}wcf.global.acp{/lang}</h1>
-                                       {if PACKAGE_ID > 1}
-                                               {event name='headerLogo'}
-                                       {else}
-                                               <img src="{@$__wcf->getPath()}acp/images/wcfLogo.png" alt="" style="height: 80px; width: 502px;" />
-                                       {/if}
-                               </a>
-                       </div>
+               <div id="acpPageContentContainer" class="acpPageContentContainer">
+                       {include file='pageMenu'}
                        
-                       *}{* work-around for unknown core-object during WCFSetup *}{*
-                       {if PACKAGE_ID && $__wcf->user->userID}
-                               {hascontent}
-                                       <nav id="mainMenu" class="mainMenu">
-                                               <ul>{content}{foreach from=$__wcf->getACPMenu()->getMenuItems('') item=_menuItem}<li data-menu-item="{$_menuItem->menuItem}"><a>{lang}{@$_menuItem->menuItem}{/lang}</a></li>{/foreach}{/content}</ul>
-                                       </nav>
-                               {/hascontent}
-                       {/if}
-                       
-                       <nav class="navigation navigationHeader">
-                               <ul class="navigationIcons">
-                                       <li id="toBottomLink" class="toBottomLink"><a href="{@$__wcf->getAnchor('bottom')}" title="{lang}wcf.global.scrollDown{/lang}" class="jsTooltip"><span class="icon icon16 icon-arrow-down"></span> <span class="invisible">{lang}wcf.global.scrollDown{/lang}</span></a></li>
-                                       {event name='navigationIcons'}
-                               </ul>
-                       </nav>
-               </div>
-       </header>
-       *}
-       
-       <div class="layoutBoundary">
-               <div id="content" class="content">
-                               
+                       <section id="main" class="main" role="main">
+                               <div class="layoutBoundary">
+                                       <div id="content" class="content">
+                                       
\ No newline at end of file
index a2b398f67faa4655c318d34558c5f3e800439046..365df56dbe4b8fe8620d79d41b6231dfdad8c9a6 100644 (file)
@@ -94,7 +94,7 @@
                        <dl>
                                <dt>{lang}wcf.acp.index.system.php{/lang}</dt>
                                <dd>
-                                       {if $__wcf->session->getPermission('admin.system.package.canInstallPackage') && $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
+                                       {if $__wcf->session->getPermission('admin.configuration.package.canInstallPackage') && $__wcf->session->getPermission('admin.configuration.package.canUpdatePackage')}
                                                <a href="{link controller='PHPInfo'}{/link}">{PHP_VERSION}</a>
                                        {else}
                                                {PHP_VERSION}
index ad6ae67c3ea66e7b7bb3e90591625d1220015948..9db8b15a885dcbc7b1d7ecd4aa9ffb3518be46a5 100644 (file)
@@ -13,7 +13,7 @@
                        'wcf.acp.pluginStore.purchasedItems.noResults': '{lang}wcf.acp.pluginStore.purchasedItems.noResults{/lang}'
                });
                
-               {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage')}
+               {if $__wcf->session->getPermission('admin.configuration.package.canUninstallPackage')}
                        new WCF.ACP.Package.Uninstallation($('.jsPackageRow .jsUninstallButton'), {if PACKAGE_ID > 1}'{link controller='PackageList' forceWCF=true encode=false}packageID={literal}{packageID}{/literal}{/link}'{else}null{/if});
                        {if $packageID}
                                new WCF.PeriodicalExecuter(function(pe) {
                        {/if}
                {/if}
                
-               {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
+               {if $__wcf->session->getPermission('admin.configuration.package.canUpdatePackage')}
                        new WCF.ACP.Package.Update.Search();
                {/if}
                
-               {if $__wcf->session->getPermission('admin.system.package.canInstallPackage') && $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
+               {if $__wcf->session->getPermission('admin.configuration.package.canInstallPackage') && $__wcf->session->getPermission('admin.configuration.package.canUpdatePackage')}
                        new WCF.ACP.PluginStore.PurchasedItems.Search();
                {/if}
        });
@@ -45,7 +45,7 @@
                <nav>
                        <ul>
                                {content}
-                                       {if $__wcf->session->getPermission('admin.system.package.canInstallPackage')}
+                                       {if $__wcf->session->getPermission('admin.configuration.package.canInstallPackage')}
                                                <li><a href="{link controller='PackageStartInstall'}action=install{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.package.startInstall{/lang}</span></a></li>
                                        {/if}
                                        
                        <nav>
                                <ul>
                                        {content}
-                                               {if $__wcf->session->getPermission('admin.system.package.canInstallPackage')}
+                                               {if $__wcf->session->getPermission('admin.configuration.package.canInstallPackage')}
                                                        <li><a href="{link controller='PackageStartInstall'}action=install{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.package.startInstall{/lang}</span></a></li>
                                                {/if}
                                                
index 11e9226aa64289f89eb4f72138727ddca8ebb987..6ded76cc798e53bc853440a1100b509d5408353b 100644 (file)
                                {/if}
                        </div>
                </div>
-               
-               <script data-relocate="true">
-                       var header = elById('pageHeader');
-                       var pageHeaderContainer = elBySel('.pageHeaderContainer');
-                       header.style.setProperty('min-height', header.clientHeight + 'px');
-                       
-                       function stickyHeader() {
-                               header.classList[(document.body.scrollTop > 50) ? 'add' : 'remove']('sticky');
-                               pageHeaderContainer.classList[(document.body.scrollTop > 50) ? 'add' : 'remove']('stickyPageHeader');
-                       }
-                       
-                       stickyHeader();
-                       window.addEventListener('scroll', stickyHeader);
-               </script>
        </header>
 </div>
\ No newline at end of file
index 3267d0dab35eb463900bcf0b5f1c5c1fa92cd4bc..a2e0807c3ce8c5afd5e016628421f8d94ad10202 100644 (file)
@@ -1,9 +1,6 @@
 <div id="pageHeaderLogo" class="pageHeaderLogo">
        <a href="{link}{/link}">
-               {* @TODO *}
-               <img src="{@$__wcf->getPath()}images/default-logo.png" alt="" class="pageHeaderLogoLarge">
-               <img src="{@$__wcf->getPath()}images/default-logo-small.png" alt="" class="pageHeaderLogoSmall">
-               
-               {event name='headerLogo'}
+               <img src="{@$__wcf->getPath()}acp/images/wcfLogo.png" alt="" class="pageHeaderLogoLarge">
+               <img src="{@$__wcf->getPath()}acp/images/wcfLogo-small.png" alt="" class="pageHeaderLogoSmall">
        </a>
 </div>
\ No newline at end of file
index f4d455611c7e7f156d6fee84aceebc4080c561a6..79c03829450bfc6bb81c258c4d8b99794ab4d89f 100644 (file)
@@ -1,48 +1,3 @@
-{if PACKAGE_ID}{assign var=_activeMenuItems value=$__wcf->getACPMenu()->getActiveMenuItems()}{/if}
-<nav id="mainMenu" class="mainMenu">
-       {if PACKAGE_ID}
-               <ol class="boxMenu">
-                       {foreach from=$__wcf->getACPMenu()->getMenuItems('') item=_sectionMenuItem}
-                               <li class="boxMenuHasChildren{if $_sectionMenuItem->menuItem|in_array:$_activeMenuItems} active{/if}" data-menu-item="{$_sectionMenuItem->menuItem}">
-                                       <span>{@$_sectionMenuItem}</span>
-                                       
-                                       {assign var=_menuItemCategories value=$__wcf->getACPMenu()->getMenuItems($_sectionMenuItem->menuItem)}
-                                       <ol class="wcfAcpMenu boxMenuDepth1 subMenu{if $_menuItemCategories|count > 3} doubleColumned{/if}">
-                                               {foreach from=$_menuItemCategories item=_menuItemCategory}
-                                                       <li>
-                                                               <span>{@$_menuItemCategory}</span>
-                                                               
-                                                               <ol class="boxMenuDepth2 menuItemList">
-                                                                       {foreach from=$__wcf->getACPMenu()->getMenuItems($_menuItemCategory->menuItem) item=_menuItem}
-                                                                               {assign var=_subMenuItems value=$__wcf->getACPMenu()->getMenuItems($_menuItem->menuItem)}
-                                                                               
-                                                                               {if $_subMenuItems|empty}
-                                                                                       <li{if $_menuItem->menuItem|in_array:$_activeMenuItems} class="active"{/if}><a href="{$_menuItem->getLink()}">{@$_menuItem}</a></li>
-                                                                               {else}
-                                                                                       {if $_menuItemCategory->menuItem === 'wcf.acp.menu.link.option'}
-                                                                                       {* handle special option categories *}
-                                                                                               {foreach from=$_subMenuItems item=_subMenuItem}
-                                                                                                       <li{if $_subMenuItem->menuItem|in_array:$_activeMenuItems} class="active"{/if}><a href="{$_subMenuItem->getLink()}">{@$_subMenuItem}</a></li>
-                                                                                               {/foreach}
-                                                                                       {else}
-                                                                                               <li>
-                                                                                                       <div class="menuItemWrapper">
-                                                                                                               <a href="{$_menuItem->getLink()}"{if $_menuItem->menuItem|in_array:$_activeMenuItems && $_activeMenuItems[0] === $_menuItem->menuItem} class="active"{/if}>{@$_menuItem}</a>
-                                                                                                               
-                                                                                                               {foreach from=$_subMenuItems item=_subMenuItem}
-                                                                                                                       <a href="{$_subMenuItem->getLink()}" class="jsTooltip{if $_subMenuItem->menuItem|in_array:$_activeMenuItems} active{/if}" title="{@$_subMenuItem}"><span class="icon icon16 {$_subMenuItem->icon}"></span></a>
-                                                                                                               {/foreach}
-                                                                                                       </div>
-                                                                                               </li>
-                                                                                       {/if}
-                                                                               {/if}
-                                                                       {/foreach}
-                                                               </ol>
-                                                       </li>
-                                               {/foreach}
-                                       </ol>
-                               </li>
-                       {/foreach}
-               </ol>
-       {/if}
-</nav>
+<div id="mainMenu" class="mainMenu">
+       <!-- placeholder for mobile UI -->
+</div>
index d7ad15758f35f2bb6df87253569b3a2bc7ff3b53..fe8c605c6ed391065a72691e29b08e08af1d2d81 100644 (file)
@@ -7,20 +7,8 @@
 
 <div id="pageHeaderSearch" class="pageHeaderSearch" data-disable-auto-focus="true">
        <form method="post" action="{@$__searchFormLink}">
-               <div class="pageHeaderSearchInputContainer dropdown">
-                       <input type="search" name="q" id="pageHeaderSearchInput" class="pageHeaderSearchInput dropdownToggle" placeholder="{@$__searchInputPlaceholder}" autocomplete="off" required="required" value="{if $query|isset}{$query}{/if}" data-toggle="search" />
-                       
-                       <ul class="dropdownMenu">
-                               {hascontent}
-                                       <li class="dropdownText">
-                                               {content}
-                                                       {@$__searchDropdownOptions}
-                                               {/content}
-                                       </li>
-                                       <li class="dropdownDivider"></li>
-                               {/hascontent}
-                               <li><a href="{@$__searchFormLink}">{lang}wcf.search.extended{/lang}</a></li>
-                       </ul>
+               <div class="pageHeaderSearchInputContainer">
+                       <input type="search" name="q" id="pageHeaderSearchInput" class="pageHeaderSearchInput" placeholder="{@$__searchInputPlaceholder}" autocomplete="off" required="required" value="{if $query|isset}{$query}{/if}" data-toggle="search" />
                        
                        <button class="pageHeaderSearchInputButton" type="submit">
                                <span class="icon icon16 pointer fa-search" title="{lang}wcf.global.search{/lang}"></span>
index 0aa3e49deabbae92ce257d8ce0fb011ecb3a7fc2..c6658b352539cbdedc6006215804ae64a1dbd8ca 100644 (file)
@@ -1,11 +1,11 @@
 <nav id="topMenu" class="userPanel">
        <ul class="userPanelItems">
                {if $__wcf->user->userID}
-                       <!-- user menu -->
-                       <li id="userMenu" class="dropdown">
-                               <a class="dropdownToggle" data-toggle="userMenu">{if PACKAGE_ID}{@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(32)} {/if}{lang}wcf.user.userNote{/lang}</a>
-                               <ul class="dropdownMenu">
-                                       {if PACKAGE_ID > 1}
+                       {if PACKAGE_ID}
+                               <li id="userMenu" class="dropdown">
+                                       <a class="dropdownToggle" data-toggle="userMenu">{@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(32)}</a>
+                                       <ul class="dropdownMenu">
+                                               {* TODO: this was copied straight from the frontend *}
                                                <li><a href="{link controller='User' object=$__wcf->user forceFrontend=true}{/link}" class="box32">
                                                                <div>{@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(32)}</div>
                                                                
                                                {event name='userMenuItems'}
                                                
                                                <li class="dropdownDivider"></li>
-                                       {/if}
-                                       <li><a href="{link controller='Logout'}t={@SECURITY_TOKEN}{/link}" onclick="WCF.System.Confirmation.show('{lang}wcf.user.logout.sure{/lang}', $.proxy(function (action) { if (action == 'confirm') window.location.href = $(this).attr('href'); }, this)); return false;">{lang}wcf.user.logout{/lang}</a></li>
-                               </ul>
-                       </li>
+                                               <li><a href="{link controller='Logout'}t={@SECURITY_TOKEN}{/link}" onclick="WCF.System.Confirmation.show('{lang}wcf.user.logout.sure{/lang}', $.proxy(function (action) { if (action == 'confirm') window.location.href = $(this).attr('href'); }, this)); return false;">{lang}wcf.user.logout{/lang}</a></li>
+                                       </ul>
+                               </li>
                        
-                       {if PACKAGE_ID}
                                <li id="jumpToPage" class="dropdown">
                                        <a href="{link forceFrontend=true}{/link}" class="dropdownToggle" data-toggle="jumpToPage"><span class="icon icon32 fa-home"></span> <span>{lang}wcf.global.jumpToPage{/lang}</span></a>
                                        <ul class="dropdownMenu">
@@ -35,7 +33,7 @@
                                        </ul>
                                </li>
                                
-                               {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage') && $__wcf->getAvailableUpdates()}
+                               {if $__wcf->session->getPermission('admin.configuration.package.canUpdatePackage') && $__wcf->getAvailableUpdates()}
                                        <li>
                                                <a href="{link controller='PackageUpdate'}{/link}"><span class="icon icon32 fa-refresh"></span> <span>{lang}wcf.acp.package.updates{/lang}</span> <span class="badge badgeInverse">{#$__wcf->getAvailableUpdates()}</span></a>
                                        </li>
diff --git a/wcfsetup/install/files/acp/templates/pageMenu.tpl b/wcfsetup/install/files/acp/templates/pageMenu.tpl
new file mode 100644 (file)
index 0000000..f201ce2
--- /dev/null
@@ -0,0 +1,53 @@
+{if PACKAGE_ID && $__wcf->user->userID}
+       {assign var=_activeMenuItems value=$__wcf->getACPMenu()->getActiveMenuItems()}
+       
+       <nav id="acpPageMenu" class="acpPageMenu">
+               <ol class="acpPageMenuList">
+                       {foreach from=$__wcf->getACPMenu()->getMenuItems('') item=_sectionMenuItem}
+                               <li>
+                                       <a href="#" class="acpPageMenuLink{if $_sectionMenuItem->menuItem|in_array:$_activeMenuItems} active{/if}" data-menu-item="{$_sectionMenuItem->menuItem}">
+                                               <span class="icon icon48 {$_sectionMenuItem->icon}"></span>
+                                               <span class="acpPageMenuItemLabel">{@$_sectionMenuItem}</span>
+                                       </a>
+                               </li>
+                       {/foreach}
+               </ol>
+       </nav>
+       
+       <nav id="acpPageSubMenu" class="acpPageSubMenu">
+               {foreach from=$__wcf->getACPMenu()->getMenuItems('') item=_sectionMenuItem}
+                       <ol class="acpPageSubMenuCategoryList{if $_sectionMenuItem->menuItem|in_array:$_activeMenuItems} active{/if}" data-menu-item="{$_sectionMenuItem->menuItem}">
+                               {foreach from=$__wcf->getACPMenu()->getMenuItems($_sectionMenuItem->menuItem) item=_menuItemCategory}
+                                       <li class="acpPageSubMenuCategory">
+                                               <span>{@$_menuItemCategory}</span>
+                                               
+                                               <ol class="acpPageSubMenuItemList">
+                                                       {foreach from=$__wcf->getACPMenu()->getMenuItems($_menuItemCategory->menuItem) item=_menuItem}
+                                                               {assign var=_subMenuItems value=$__wcf->getACPMenu()->getMenuItems($_menuItem->menuItem)}
+                                                               
+                                                               {if $_subMenuItems|empty}
+                                                                       <li{if $_menuItem->menuItem|in_array:$_activeMenuItems} class="active"{/if}><a href="{$_menuItem->getLink()}" class="acpPageSubMenuLink">{@$_menuItem}</a></li>
+                                                               {else}
+                                                                       {if $_menuItem->menuItem === 'wcf.acp.menu.link.option.category'}
+                                                                               {* handle special option categories *}
+                                                                               {foreach from=$_subMenuItems item=_subMenuItem}
+                                                                                       <li{if $_subMenuItem->menuItem|in_array:$_activeMenuItems} class="active"{/if}><a href="{$_subMenuItem->getLink()}" class="acpPageSubMenuLink">{@$_subMenuItem}</a></li>
+                                                                               {/foreach}
+                                                                       {else}
+                                                                               <li class="acpPageSubMenuLinkWrapper">
+                                                                                       <a href="{$_menuItem->getLink()}" class="acpPageSubMenuLink{if $_menuItem->menuItem|in_array:$_activeMenuItems && $_activeMenuItems[0] === $_menuItem->menuItem} active{/if}">{@$_menuItem}</a>
+                                                                                       
+                                                                                       {foreach from=$_subMenuItems item=_subMenuItem}
+                                                                                               <a href="{$_subMenuItem->getLink()}" class="acpPageSubMenuIcon jsTooltip{if $_subMenuItem->menuItem|in_array:$_activeMenuItems} active{/if}" title="{@$_subMenuItem}"><span class="icon icon16 {$_subMenuItem->icon}"></span></a>
+                                                                                       {/foreach}
+                                                                               </li>
+                                                                       {/if}
+                                                               {/if}
+                                                       {/foreach}
+                                               </ol>
+                                       </li>
+                               {/foreach}
+                       </ol>
+               {/foreach}
+       </nav>
+{/if}
index 17460a4c9ea0df1f9dc2e58c4d6e56b641b99642..eb788acfedcf9e2807014620c2f4011c8a78524f 100644 (file)
@@ -2,28 +2,25 @@
  * Bootstraps WCF's JavaScript with additions for the ACP usage.
  * 
  * @author     Alexander Ebert
- * @copyright  2001-2015 WoltLab GmbH
+ * @copyright  2001-2016 WoltLab GmbH
  * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
  * @module     WoltLab/WCF/Acp/Bootstrap
  */
-define(['WoltLab/WCF/Bootstrap'], function(Bootstrap) {
+define(['WoltLab/WCF/Bootstrap', './Ui/Page/Menu'], function(Bootstrap, UiPageMenu) {
        "use strict";
        
        /**
-        * ACP Boostrapper.
-        * 
         * @exports     WoltLab/WCF/Acp/Bootstrap
         */
-       var AcpBootstrap = {
+       return {
                /**
                 * Bootstraps general modules and frontend exclusive ones.
                 * 
-                * @param       {object<string, *>}     options         bootstrap options
+                * @param       {Object}        options         bootstrap options
                 */
                setup: function(options) {
                        Bootstrap.setup();
+                       UiPageMenu.init();
                }
        };
-       
-       return AcpBootstrap;
 });
diff --git a/wcfsetup/install/files/js/WoltLab/WCF/Acp/Ui/Page/Menu.js b/wcfsetup/install/files/js/WoltLab/WCF/Acp/Ui/Page/Menu.js
new file mode 100644 (file)
index 0000000..9811aeb
--- /dev/null
@@ -0,0 +1,71 @@
+/**
+ * Provides the ACP menu navigation.
+ * 
+ * @author     Alexander Ebert
+ * @copyright  2001-2016 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @module     WoltLab/WCF/Acp/Ui/Page/Menu
+ */
+define(['Dictionary'], function(Dictionary) {
+       "use strict";
+       
+       var _activeMenuItem = '';
+       var _menuItems = new Dictionary();
+       var _menuItemContainers = new Dictionary();
+       
+       /**
+        * @exports     WoltLab/WCF/Acp/Ui/Page/Menu
+        */
+       return {
+               /**
+                * Initializes the ACP menu navigation.
+                */
+               init: function() {
+                       elBySelAll('.acpPageMenuLink', null, (function(link) {
+                               var menuItem = elData(link, 'menu-item');
+                               if (link.classList.contains('active')) {
+                                       _activeMenuItem = menuItem;
+                               }
+                               
+                               link.addEventListener(WCF_CLICK_EVENT, this._toggle.bind(this));
+                               
+                               _menuItems.set(menuItem, link);
+                       }).bind(this));
+                       
+                       elBySelAll('.acpPageSubMenuCategoryList', null, function(container) {
+                               _menuItemContainers.set(elData(container, 'menu-item'), container);
+                       });
+               },
+               
+               /**
+                * Toggles a menu item.
+                * 
+                * @param       {Event}         event           event object
+                * @protected
+                */
+               _toggle: function(event) {
+                       event.preventDefault();
+                       event.stopPropagation();
+                       
+                       var link = event.currentTarget;
+                       var menuItem = elData(link, 'menu-item');
+                       
+                       // remove active marking from currently active menu
+                       if (_activeMenuItem) {
+                               _menuItems.get(_activeMenuItem).classList.remove('active');
+                               _menuItemContainers.get(_activeMenuItem).classList.remove('active');
+                       }
+                       
+                       if (_activeMenuItem === menuItem) {
+                               // current item was active before
+                               _activeMenuItem = '';
+                       }
+                       else {
+                               link.classList.add('active');
+                               _menuItemContainers.get(menuItem).classList.add('active');
+                               
+                               _activeMenuItem = menuItem;
+                       }
+               }
+       };
+});
index 8cdf518df7f8007a6e680f09e42eae76e8b3816e..4358363adb1091a3e9cdb47c74c05f391db9761c 100644 (file)
@@ -21,7 +21,7 @@ class CacheClearAction extends AbstractAction {
        /**
         * @see \wcf\action\AbstractAction::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canViewLog');
+       public $neededPermissions = array('admin.management.canViewLog');
        
        /**
         * @see \wcf\action\IAction::execute()
index e005ae00637e08d77792175f2bb285e8c4ac8bce..7f949879be792b04a324885443a5e2a40d459703 100644 (file)
@@ -56,7 +56,7 @@ class ApplicationEditForm extends AbstractForm {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canManageApplication');
+       public $neededPermissions = array('admin.configuration.canManageApplication');
        
        /**
         * application package id
index 0666f863029c2c8a05e67d9b20f97a5427e5dafc..d724baffe3114e6586073d0548a8e735a0071279 100755 (executable)
@@ -29,7 +29,7 @@ class CronjobAddForm extends AbstractForm {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canManageCronjob');
+       public $neededPermissions = array('admin.management.canManageCronjob');
        
        /**
         * cronjob class name
index 3b11b41af9c8e7412ef6b757ac887b4cbebca7de..9f20400428fde65df8c6a773a5431395ba4fde7a 100644 (file)
@@ -35,7 +35,7 @@ class DataImportForm extends AbstractForm {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canImportData');
+       public $neededPermissions = array('admin.management.canImportData');
        
        /**
         * list of available exporters
index b627af88c8514e1f222eaa618277a56412dd8d8f..92e4ee75c94b1b3028d921472fb69b096684888e 100644 (file)
@@ -122,7 +122,7 @@ class OptionForm extends AbstractOptionListForm {
                ACPMenu::getInstance()->setActiveMenuItem('wcf.acp.option.category.'.$this->category->categoryName);
                
                // check permission
-               WCF::getSession()->checkPermissions(array('admin.system.canEditOption'));
+               WCF::getSession()->checkPermissions(array('admin.configuration.canEditOption'));
                
                if ($this->category->categoryName == 'module') {
                        // check master password
index b7b8f2e546ec6f01b7449f9918fa1cc4af8f0128..00b03b085a30946f29d76cadbd2b10347e6eb1e6 100755 (executable)
@@ -200,7 +200,7 @@ class PackageStartInstallForm extends AbstractForm {
         * @see \wcf\page\IPage::show()
         */
        public function show() {
-               if (!WCF::getSession()->getPermission('admin.system.package.canInstallPackage') && !WCF::getSession()->getPermission('admin.system.package.canUpdatePackage')) {
+               if (!WCF::getSession()->getPermission('admin.configuration.package.canInstallPackage') && !WCF::getSession()->getPermission('admin.configuration.package.canUpdatePackage')) {
                        throw new PermissionDeniedException();
                }
                
index 6a2a1453fa810501a95a8f85b8d5a0bff6c12075..ff25a166f13b2f90e31de25803626e73ecfd0fe9 100755 (executable)
@@ -27,7 +27,7 @@ class PackageUpdateServerAddForm extends AbstractForm {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.package.canEditServer');
+       public $neededPermissions = array('admin.configuration.package.canEditServer');
        
        /**
         * server url
index d45286a1a44a688167248b82bb31c13c63af5354..f4b14feca846bcb5ae6b75ff4c43e94e825548fd 100644 (file)
@@ -181,7 +181,7 @@ class RescueModeForm extends AbstractCaptchaForm {
                WCF::getSession()->disableUpdate();
                WCF::getSession()->changeUser($this->user, true);
                
-               if (!WCF::getSession()->getPermission('admin.system.canManageApplication')) {
+               if (!WCF::getSession()->getPermission('admin.configuration.canManageApplication')) {
                        throw new UserInputException('username', 'notAuthorized');
                }
        }
index c746701b99becff16bfaf6122108bcfd6eb1a4fd..b46b3d9522996b1569c244650a71e13c00ddf6ae 100755 (executable)
@@ -26,7 +26,7 @@ class ACPSessionLogListPage extends SortablePage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canViewLog');
+       public $neededPermissions = array('admin.management.canViewLog');
        
        /**
         * @see \wcf\page\SortablePage::$defaultSortField
index f21caca4d79e47f0b13670965e1376c026be4cc9..e94bd44523e27949dc679c3aec037d5ccfec71df 100755 (executable)
@@ -29,7 +29,7 @@ class ACPSessionLogPage extends SortablePage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canViewLog');
+       public $neededPermissions = array('admin.management.canViewLog');
        
        /**
         * @see \wcf\page\SortablePage::$defaultSortField
index ed470bb0ad40b1930556bf0c2613c64c253f2851..f809e1e1eea84deffadcffb1549db8a8ef453e8c 100644 (file)
@@ -29,7 +29,7 @@ class ApplicationManagementPage extends AbstractPage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canManageApplication');
+       public $neededPermissions = array('admin.configuration.canManageApplication');
        
        /**
         * @see \wcf\page\IPage::readData()
index ea7a7f5a6257ad4dd0ca9759193ae86fb8ea642d..a09c6245388fe6f98ef0160383ab7fcd98702d13 100755 (executable)
@@ -27,7 +27,7 @@ class CacheListPage extends AbstractPage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canManageApplication');
+       public $neededPermissions = array('admin.configuration.canManageApplication');
        
        /**
         * indicates if cache was cleared
index 47788405bf54794eec7b974b425655bae390c016..197c8ca4da420b796eb6dc4efc6bac4f0c22ffb2 100755 (executable)
@@ -21,7 +21,7 @@ class CronjobListPage extends SortablePage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canManageCronjob');
+       public $neededPermissions = array('admin.management.canManageCronjob');
        
        /**
         * @see \wcf\page\SortablePage::$defaultSortField
index 74509ffcc36a91a1a13f73c061c8e76a91fdf51d..aee3b8efe4854338d647433f76df3f935b624352 100755 (executable)
@@ -21,7 +21,7 @@ class CronjobLogListPage extends SortablePage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canManageCronjob');
+       public $neededPermissions = array('admin.management.canManageCronjob');
        
        /**
         * @see \wcf\page\MultipleLinkPage::$itemsPerPage
index e1edef30cf5341b2903505bbb015c451a9c59342..4a59fa2d57fb00cd6a45119d515150b73201439f 100644 (file)
@@ -29,7 +29,7 @@ class ExceptionLogViewPage extends MultipleLinkPage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canViewLog');
+       public $neededPermissions = array('admin.management.canViewLog');
        
        /**
         * @see \wcf\page\MultipleLinkPage::$itemsPerPage
index 21bba7a7cd68e2fadb21b346cb6a2101753f7352..4bc394d97cec665478b46d06003487a3f4519a87 100644 (file)
@@ -22,7 +22,7 @@ class PHPInfoPage extends AbstractPage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.package.canInstallPackage', 'admin.system.package.canUpdatePackage');
+       public $neededPermissions = array('admin.configuration.package.canInstallPackage', 'admin.configuration.package.canUpdatePackage');
        
        /**
         * @see \wcf\page\IPage::assignVariables()
index 0ce7f5492abf888cc18acfaf0e2bd3c77132d32a..4016ad56da099196d1a13032bfaf071e79d6d160 100644 (file)
@@ -68,10 +68,10 @@ class PackageInstallationConfirmPage extends AbstractPage {
                }
                
                if ($this->queue->action == 'install') {
-                       WCF::getSession()->checkPermissions(array('admin.system.package.canInstallPackage'));
+                       WCF::getSession()->checkPermissions(array('admin.configuration.package.canInstallPackage'));
                }
                else {
-                       WCF::getSession()->checkPermissions(array('admin.system.package.canUpdatePackage'));
+                       WCF::getSession()->checkPermissions(array('admin.configuration.package.canUpdatePackage'));
                }
                
                $this->installingImportedStyle = WCF::getSession()->getVar('stylePackageImportLocation') !== null;
index 59ca831a186b92bdffc885b76809b5b893e6e9ec..bf0bd55b34381f1725fd1eec623b3b302ec278fc 100644 (file)
@@ -22,7 +22,7 @@ class PackageListPage extends SortablePage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.package.canUpdatePackage', 'admin.system.package.canUninstallPackage');
+       public $neededPermissions = array('admin.configuration.package.canUpdatePackage', 'admin.configuration.package.canUninstallPackage');
        
        /**
         * @see \wcf\page\MultipleLinkPage::$itemsPerPage
index bb74aefbda700cabc9b9f998c31075666a41dbba..01cdbe2736967df1f5631d1b3b7e827faa84475a 100755 (executable)
@@ -24,7 +24,7 @@ class PackagePage extends AbstractPage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.package.canUpdatePackage', 'admin.system.package.canUninstallPackage');
+       public $neededPermissions = array('admin.configuration.package.canUpdatePackage', 'admin.configuration.package.canUninstallPackage');
        
        /**
         * id of the package
index 643e2e8c0b4d5675386cfe60ba5537d4812225d7..2c9694a15abed1394cef07e9a069a39f9f97cfce 100644 (file)
@@ -30,7 +30,7 @@ class PackageUpdatePage extends AbstractPage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.package.canUpdatePackage');
+       public $neededPermissions = array('admin.configuration.package.canUpdatePackage');
        
        /**
         * @see \wcf\page\IPage::readData()
index e19d822cb0aba94a7ce578f34d5c1d532e4db536..e3aa3b80f47abab727b237081d5c3af38601832c 100755 (executable)
@@ -21,7 +21,7 @@ class PackageUpdateServerListPage extends SortablePage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.package.canEditServer');
+       public $neededPermissions = array('admin.configuration.package.canEditServer');
        
        /**
         * @see \wcf\page\SortablePage::$defaultSortField
index 759964e1f14abeb189d4afc6b0af2424c174e90f..e6075d158468158afa21268a53956637112d343a 100644 (file)
@@ -26,7 +26,7 @@ class PluginStorePurchasedItemsPage extends AbstractPage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.package.canUpdatePackage', 'admin.system.package.canUninstallPackage');
+       public $neededPermissions = array('admin.configuration.package.canUpdatePackage', 'admin.configuration.package.canUninstallPackage');
        
        /**
         * list of purchased products grouped by WCF major release
index 848d9c5365dfec472a36d9c4b66a7f2cf6afc562..1808466230b19742c26e6094f8ad96ab6a7ee949 100644 (file)
@@ -23,7 +23,7 @@ class RebuildDataPage extends AbstractPage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canRebuildData');
+       public $neededPermissions = array('admin.management.canRebuildData');
        
        /**
         * object types
index e33bdf2d3327c4f5625cf69b45a7d8d12e6e3fbf..11b8a1f763316b14141ebe2e92e5659a8f10c432 100644 (file)
@@ -19,12 +19,12 @@ class StatPage extends AbstractPage {
        /**
         * @see \wcf\page\AbstractPage::$activeMenuItem
         */
-       public $activeMenuItem = 'wcf.acp.menu.link.log.stat';
+       public $activeMenuItem = 'wcf.acp.menu.link.stat.list';
        
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canViewLog');
+       public $neededPermissions = array('admin.management.canViewLog');
        
        /**
         * start date (yyyy-mm-dd)
index 41e56512d4915fa652a70327075670538745853a..a91ce91ddc2ae52929d3996e41ba70ef87d021ad 100644 (file)
@@ -21,7 +21,7 @@ class UserAuthenticationFailureListPage extends SortablePage {
        /**
         * @see \wcf\page\AbstractPage::$neededPermissions
         */
-       public $neededPermissions = array('admin.system.canViewLog');
+       public $neededPermissions = array('admin.management.canViewLog');
        
        /**
         * @see \wcf\page\AbstractPage::$neededModules
index 205d17486deddba88e7df20447661e7569671f34..27a0aee63dc54aca5e50b2ea0c6e623dad5acdf7 100644 (file)
@@ -28,17 +28,17 @@ class CronjobAction extends AbstractDatabaseObjectAction implements IToggleActio
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsCreate
         */
-       protected $permissionsCreate = array('admin.system.canManageCronjob');
+       protected $permissionsCreate = array('admin.management.canManageCronjob');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsDelete
         */
-       protected $permissionsDelete = array('admin.system.canManageCronjob');
+       protected $permissionsDelete = array('admin.management.canManageCronjob');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsUpdate
         */
-       protected $permissionsUpdate = array('admin.system.canManageCronjob');
+       protected $permissionsUpdate = array('admin.management.canManageCronjob');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$allowGuestAccess
index e1d1c3af59e183dd062cc5d366cf5eab08b7a82a..35649e3cdc7a2882603c427e3140532c86311629 100644 (file)
@@ -28,7 +28,7 @@ class CronjobLogAction extends AbstractDatabaseObjectAction {
         * Validates the clear all action.
         */
        public function validateClearAll() {
-               WCF::getSession()->checkPermissions(array('admin.system.canManageCronjob'));
+               WCF::getSession()->checkPermissions(array('admin.management.canManageCronjob'));
        }
        
        /**
index e5a46f10b8ec964e240665c018140cb1607b7e67..375678816c80b16e3835d5f1d330c4c422a7e0bb 100644 (file)
@@ -21,17 +21,17 @@ class OptionAction extends AbstractDatabaseObjectAction {
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsCreate
         */
-       protected $permissionsCreate = array('admin.system.canEditOption');
+       protected $permissionsCreate = array('admin.configuration.canEditOption');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsDelete
         */
-       protected $permissionsDelete = array('admin.system.canEditOption');
+       protected $permissionsDelete = array('admin.configuration.canEditOption');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsUpdate
         */
-       protected $permissionsUpdate = array('admin.system.canEditOption');
+       protected $permissionsUpdate = array('admin.configuration.canEditOption');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$requireACP
index b508460124c865f6599a5cfcd18c27eaac9fa1b8..fdad3caf743b08995752dbc24d1b76b2f65c8d1a 100644 (file)
@@ -21,17 +21,17 @@ class OptionCategoryAction extends AbstractDatabaseObjectAction {
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsCreate
         */
-       protected $permissionsCreate = array('admin.system.canEditOption');
+       protected $permissionsCreate = array('admin.configuration.canEditOption');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsDelete
         */
-       protected $permissionsDelete = array('admin.system.canEditOption');
+       protected $permissionsDelete = array('admin.configuration.canEditOption');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsUpdate
         */
-       protected $permissionsUpdate = array('admin.system.canEditOption');
+       protected $permissionsUpdate = array('admin.configuration.canEditOption');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$requireACP
index 68b191a2bdac89a56e393f7b9b7262db0b200706..587f63909a043e08d6182f26c7423f880aaba1c4 100644 (file)
@@ -141,7 +141,7 @@ class Package extends DatabaseObject {
         * @return      boolean
         */
        public function canUninstall() {
-               if (!WCF::getSession()->getPermission('admin.system.package.canUninstallPackage')) {
+               if (!WCF::getSession()->getPermission('admin.configuration.package.canUninstallPackage')) {
                        return false;
                }
                
index ee7f30f33ccd86d40fe9006e9c3ecf957ca88438..2bcfbb524e57eb16b2f97870ce8ffd418dbf0ca5 100644 (file)
@@ -28,17 +28,17 @@ class PackageAction extends AbstractDatabaseObjectAction {
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsCreate
         */
-       protected $permissionsCreate = array('admin.system.package.canInstallPackage');
+       protected $permissionsCreate = array('admin.configuration.package.canInstallPackage');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsDelete
         */
-       protected $permissionsDelete = array('admin.system.package.canUninstallPackage');
+       protected $permissionsDelete = array('admin.configuration.package.canUninstallPackage');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsUpdate
         */
-       protected $permissionsUpdate = array('admin.system.package.canUpdatePackage');
+       protected $permissionsUpdate = array('admin.configuration.package.canUpdatePackage');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$requireACP
@@ -49,7 +49,7 @@ class PackageAction extends AbstractDatabaseObjectAction {
         * Validates parameters to search for purchased items in the WoltLab Plugin-Store.
         */
        public function validateSearchForPurchasedItems() {
-               WCF::getSession()->checkPermissions(array('admin.system.package.canInstallPackage', 'admin.system.package.canUpdatePackage'));
+               WCF::getSession()->checkPermissions(array('admin.configuration.package.canInstallPackage', 'admin.configuration.package.canUpdatePackage'));
                
                $this->readString('password', true);
                $this->readString('username', true);
index c9d3fe7c06848d1d58d2a4e0a556dc9035329cdd..8e8e0326e65b4d82553f4f8e76379d7f5f9ec72f 100644 (file)
@@ -84,7 +84,7 @@ class PackageInstallationQueueAction extends AbstractDatabaseObjectAction {
         */
        public function validateCancelInstallation() {
                // check permissions
-               WCF::getSession()->checkPermissions(array('admin.system.package.canInstallPackage'));
+               WCF::getSession()->checkPermissions(array('admin.configuration.package.canInstallPackage'));
                
                // validate queue
                $this->queue = $this->getSingleObject();
index b78e09e7fbd6904fe7f8e41bb558d9510dc6f49f..cb15636cb78df604a4bfa48a865e70ff5c1e3c31 100644 (file)
@@ -47,7 +47,7 @@ class PackageUpdateAction extends AbstractDatabaseObjectAction {
         * Validates parameters to search for installable packages.
         */
        public function validateSearch() {
-               WCF::getSession()->checkPermissions(array('admin.system.package.canInstallPackage'));
+               WCF::getSession()->checkPermissions(array('admin.configuration.package.canInstallPackage'));
                
                $this->readString('package', true);
                $this->readString('packageDescription', true);
@@ -295,7 +295,7 @@ class PackageUpdateAction extends AbstractDatabaseObjectAction {
         * Validates parameters to return a result list for a previous search.
         */
        public function validateGetResultList() {
-               WCF::getSession()->checkPermissions(array('admin.system.package.canInstallPackage'));
+               WCF::getSession()->checkPermissions(array('admin.configuration.package.canInstallPackage'));
                
                $this->readInteger('pageNo');
                $this->readInteger('searchID');
@@ -374,7 +374,7 @@ class PackageUpdateAction extends AbstractDatabaseObjectAction {
         * Validates permissions to search for updates.
         */
        public function validateSearchForUpdates() {
-               WCF::getSession()->checkPermissions(array('admin.system.package.canUpdatePackage'));
+               WCF::getSession()->checkPermissions(array('admin.configuration.package.canUpdatePackage'));
                
                $this->readBoolean('ignoreCache', true);
        }
@@ -402,7 +402,7 @@ class PackageUpdateAction extends AbstractDatabaseObjectAction {
         * Validates parameters to perform a system update.
         */
        public function validatePrepareUpdate() {
-               WCF::getSession()->checkPermissions(array('admin.system.package.canUpdatePackage'));
+               WCF::getSession()->checkPermissions(array('admin.configuration.package.canUpdatePackage'));
                
                if (!isset($this->parameters['packages']) || !is_array($this->parameters['packages'])) {
                        throw new UserInputException('packages');
@@ -453,7 +453,7 @@ class PackageUpdateAction extends AbstractDatabaseObjectAction {
         * Validates parameters to prepare a package installation.
         */
        public function validatePrepareInstallation() {
-               WCF::getSession()->checkPermissions(array('admin.system.package.canInstallPackage'));
+               WCF::getSession()->checkPermissions(array('admin.configuration.package.canInstallPackage'));
                
                if (!isset($this->parameters['packages']) || !is_array($this->parameters['packages']) || count($this->parameters['packages']) != 1) {
                        throw new UserInputException('packages');
index da20ef4db257b268bfb557c880db2ec4c9856bef..12dc7677a73be46ef680824fcaf61c160253c085 100644 (file)
@@ -22,17 +22,17 @@ class PackageUpdateServerAction extends AbstractDatabaseObjectAction implements
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsCreate
         */
-       protected $permissionsCreate = array('admin.system.package.canEditServer');
+       protected $permissionsCreate = array('admin.configuration.package.canEditServer');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsDelete
         */
-       protected $permissionsDelete = array('admin.system.package.canEditServer');
+       protected $permissionsDelete = array('admin.configuration.package.canEditServer');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsUpdate
         */
-       protected $permissionsUpdate = array('admin.system.package.canEditServer');
+       protected $permissionsUpdate = array('admin.configuration.package.canEditServer');
        
        /**
         * @see \wcf\data\AbstractDatabaseObjectAction::$requireACP
index 5cd1f6457b97806dcdbc5b8b63a8de33ac2acd63..8eb8a73acb94537f033b9c2a0be9e51740f45b2e 100644 (file)
@@ -26,7 +26,7 @@ class StatDailyAction extends AbstractDatabaseObjectAction {
         * Validates the getData action.
         */
        public function validateGetData() {
-               WCF::getSession()->checkPermissions(array('admin.system.canViewLog'));
+               WCF::getSession()->checkPermissions(array('admin.management.canViewLog'));
                
                // validate start date
                if (empty($this->parameters['startDate']) || !preg_match('/^\d{4}\-\d{2}\-\d{2}$/', $this->parameters['startDate'])) {
index 05953625188264020865b9e11b1e3077ac4c868d..f48f4a41d0473f0d7ddd2b2144ff4c7a57a089bb 100644 (file)
@@ -325,7 +325,7 @@ class CLIWCF extends WCF {
         * @return      string
         */
        public function checkForUpdates() {
-               if (WCF::getSession()->getPermission('admin.system.package.canUpdatePackage') && VERBOSITY >= -1 && !self::getArgvParser()->disableUpdateCheck) {
+               if (WCF::getSession()->getPermission('admin.configuration.package.canUpdatePackage') && VERBOSITY >= -1 && !self::getArgvParser()->disableUpdateCheck) {
                        $updates = PackageUpdateDispatcher::getInstance()->getAvailableUpdates();
                        if (!empty($updates)) {
                                $return = self::getReader()->println(count($updates) . ' update' . (count($updates) > 1 ? 's are' : ' is') . ' available');
index a4471032da26c6e6fd0693779ffd16a71e859d26..ecbd52f27ddcdb0299b77783c58072fbc4fc003c 100644 (file)
@@ -107,7 +107,7 @@ class ImportCLICommand implements ICLICommand {
         * @see \wcf\system\cli\command\ICLICommand::canAccess()
         */
        public function canAccess() {
-               return WCF::getSession()->getPermission('admin.system.canImportData');
+               return WCF::getSession()->getPermission('admin.management.canImportData');
        }
        
        /**
index fd7cabf2e0443f98400b473ea0efd401d406ff3d..e67def8a89afa8c3cdd57887946b5865572a5bb3 100644 (file)
@@ -130,7 +130,7 @@ class PackageCLICommand implements IArgumentedCLICommand {
                
                // check update or install support
                if ($package !== null) {
-                       CLIWCF::getSession()->checkPermissions(array('admin.system.package.canUpdatePackage'));
+                       CLIWCF::getSession()->checkPermissions(array('admin.configuration.package.canUpdatePackage'));
                        
                        $archive->setPackage($package);
                        if (!$archive->isValidUpdate()) {
@@ -138,7 +138,7 @@ class PackageCLICommand implements IArgumentedCLICommand {
                        }
                }
                else {
-                       CLIWCF::getSession()->checkPermissions(array('admin.system.package.canInstallPackage'));
+                       CLIWCF::getSession()->checkPermissions(array('admin.configuration.package.canInstallPackage'));
                        
                        if (!$archive->isValidInstall()) {
                                $this->error('noValidInstall');
@@ -471,6 +471,6 @@ class PackageCLICommand implements IArgumentedCLICommand {
         * @see \wcf\system\cli\command\ICLICommand::canAccess()
         */
        public function canAccess() {
-               return CLIWCF::getSession()->getPermission('admin.system.package.canInstallPackage') || CLIWCF::getSession()->getPermission('admin.system.package.canUpdatePackage');
+               return CLIWCF::getSession()->getPermission('admin.configuration.package.canInstallPackage') || CLIWCF::getSession()->getPermission('admin.configuration.package.canUpdatePackage');
        }
 }
index febc1195bc9b5494462b86789c053a2c1ad075c2..4b78ad19330881cc2d8504e3641d2f7e468ab177 100644 (file)
@@ -139,7 +139,7 @@ class ImportHandler extends SingletonFactory implements IAJAXInvokeAction {
         * Validates accessibility of resetMapping().
         */
        public function validateResetMapping() {
-               WCF::getSession()->checkPermissions(array('admin.system.canImportData'));
+               WCF::getSession()->checkPermissions(array('admin.management.canImportData'));
                
                // reset caches
                CacheHandler::getInstance()->flushAll();
index 97e7bbd76f728cc4fcdc67b1ac551fbc4e15d7ed..9d36e2b68ea061c6db3ce5876ff12f2a5ea4316c 100644 (file)
@@ -19,7 +19,7 @@ class PackageACPSearchResultProvider implements IACPSearchResultProvider {
         * @see \wcf\system\search\acp\IACPSearchResultProvider::search()
         */
        public function search($query) {
-               if (!WCF::getSession()->getPermission('admin.system.package.canUpdatePackage') && !WCF::getSession()->getPermission('admin.system.package.canUninstallPackage')) {
+               if (!WCF::getSession()->getPermission('admin.configuration.package.canUpdatePackage') && !WCF::getSession()->getPermission('admin.configuration.package.canUninstallPackage')) {
                        return array();
                }
                
index bfa32e053ad132801d99a7c70f865dc328d2c626..4c7723849aa7f3173e6cef42c11305552b693168 100644 (file)
@@ -178,7 +178,7 @@ class StyleCompiler extends SingletonFactory {
                        closedir($handle);
                }
                
-               $additional = ['mainMenu'];
+               $additional = ['layout'];
                for ($i = 0, $length = count($additional); $i < $length; $i++) {
                        $files[] = WCF_DIR . 'acp/style/' . $additional[$i] . '.scss';
                }
index 3c88eb226833a4a627ca23a86ca3a7ba61fb2fa8..5cf882a94aab1e5e7646a27eefb6fbfd7be46370 100644 (file)
@@ -49,7 +49,7 @@ abstract class AbstractRebuildDataWorker extends AbstractWorker implements IRebu
         * @see \wcf\system\worker\IWorker::validate()
         */
        public function validate() {
-               WCF::getSession()->checkPermissions(array('admin.system.canRebuildData'));
+               WCF::getSession()->checkPermissions(array('admin.management.canRebuildData'));
        }
        
        /**
index 8b87e150392107688889eb03a26e0ade1daf891d..4d77245995d4c68c5f225ee6e86edbef286f966a 100644 (file)
@@ -33,7 +33,7 @@ class ImportWorker extends AbstractWorker {
         * @see \wcf\system\worker\IWorker::validate()
         */
        public function validate() {
-               WCF::getSession()->checkPermissions(array('admin.system.canImportData'));
+               WCF::getSession()->checkPermissions(array('admin.management.canImportData'));
                
                if (!isset($this->parameters['objectType'])) {
                        throw new SystemException("parameter 'objectType' missing");
index 6c73738ecd4f7a8952df78289159387324b37321..889b04beab9cfa4a17e763970b98e178972ebbbe 100644 (file)
@@ -18,7 +18,9 @@
        // benchmark link styling
        .benchmark,
        .copyright {
-               margin-top: 20px;
+               &:not(:first-child) {
+                       margin-top: 20px;
+               }
                
                a {
                        // use text color instead
index 18921e6a113d5567df1fd2a15296ac0241049ca5..5bbfe390bf7318fe770619cc4c4ec16b967c0938 100644 (file)
                <item name="wcf.acp.group.option.admin.general.canUseAcp.description"><![CDATA[Mitglieder dieser Benutzergruppe können die Administrationsoberfläche betreten und dort abhängig von den weiteren Zugriffsrechten verschiedene Aktionen durchführen. Diese Option muss aktiviert sein, wenn diesen Benutzern andere administrative Funktionen erlaubt werden sollen.]]></item>
                <item name="wcf.acp.group.option.admin.general.canViewPrivateUserOptions"><![CDATA[Kann versteckte Profilinformationen sehen]]></item>
                <item name="wcf.acp.group.option.admin.language.canManageLanguage"><![CDATA[Kann Sprachen verwalten]]></item>
-               <item name="wcf.acp.group.option.admin.system.canEditOption"><![CDATA[Kann allgemeine Einstellungen vornehmen]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.canEditOption"><![CDATA[Kann allgemeine Einstellungen vornehmen]]></item>
                <item name="wcf.acp.group.option.admin.style.canUseDisabledStyle"><![CDATA[Kann deaktivierte Stile benutzen]]></item>
-               <item name="wcf.acp.group.option.admin.system.canViewLog"><![CDATA[Kann Protokolle abrufen]]></item>
-               <item name="wcf.acp.group.option.admin.system.canManageApplication"><![CDATA[Kann Anwendungen verwalten]]></item>
-               <item name="wcf.acp.group.option.admin.system.canManageCronjob"><![CDATA[Kann zeitgesteuerte Aufgaben verwalten]]></item>
-               <item name="wcf.acp.group.option.admin.system.package.canEditServer"><![CDATA[Kann Update-Server bearbeiten]]></item>
-               <item name="wcf.acp.group.option.admin.system.package.canInstallPackage"><![CDATA[Kann Pakete installieren]]></item>
-               <item name="wcf.acp.group.option.admin.system.package.canUninstallPackage"><![CDATA[Kann Pakete deinstallieren]]></item>
-               <item name="wcf.acp.group.option.admin.system.package.canUpdatePackage"><![CDATA[Kann Pakete aktualisieren]]></item>
+               <item name="wcf.acp.group.option.admin.management.canViewLog"><![CDATA[Kann Protokolle abrufen]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.canManageApplication"><![CDATA[Kann Anwendungen verwalten]]></item>
+               <item name="wcf.acp.group.option.admin.management.canManageCronjob"><![CDATA[Kann zeitgesteuerte Aufgaben verwalten]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.package.canEditServer"><![CDATA[Kann Update-Server bearbeiten]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.package.canInstallPackage"><![CDATA[Kann Pakete installieren]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.package.canUninstallPackage"><![CDATA[Kann Pakete deinstallieren]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.package.canUpdatePackage"><![CDATA[Kann Pakete aktualisieren]]></item>
                <item name="wcf.acp.group.option.admin.user.accessibleGroups"><![CDATA[Zugängliche Benutzergruppen]]></item>
                <item name="wcf.acp.group.option.admin.user.accessibleGroups.description"><![CDATA[Mitglieder dieser Benutzergruppe haben auf diese Gruppen Zugriff. Zusätzlich muss angegeben werden, ob z.B. die Benutzergruppe bearbeitet werden darf.]]></item>
                <item name="wcf.acp.group.option.admin.user.canAddGroup"><![CDATA[Kann neue Benutzergruppen erstellen]]></item>
                <item name="wcf.acp.group.option.admin.user.canMailUser"><![CDATA[Kann E-Mails an Benutzer senden]]></item>
                <item name="wcf.acp.group.option.admin.user.canSearchUser"><![CDATA[Kann Benutzer suchen]]></item>
                <item name="wcf.acp.group.option.category.admin"><![CDATA[Administrative Rechte]]></item>
-               <item name="wcf.acp.group.option.category.admin.display"><![CDATA[Darstellung]]></item>
-               <item name="wcf.acp.group.option.category.admin.display.pageMenu"><![CDATA[Seitenmenü]]></item>
+               <item name="wcf.acp.group.option.category.admin.customization"><![CDATA[Anpassung]]></item>
+               <item name="wcf.acp.group.option.category.admin.management"><![CDATA[Verwaltung]]></item>
                <item name="wcf.acp.group.option.category.admin.general"><![CDATA[Allgemeine Rechte]]></item>
                <item name="wcf.acp.group.option.category.admin.language"><![CDATA[Sprachen]]></item>
                <item name="wcf.acp.group.option.category.admin.style"><![CDATA[Stile]]></item>
-               <item name="wcf.acp.group.option.category.admin.system"><![CDATA[System]]></item>
-               <item name="wcf.acp.group.option.category.admin.system.package"><![CDATA[Pakete]]></item>
+               <item name="wcf.acp.group.option.category.admin.configuration"><![CDATA[Konfiguration]]></item>
+               <item name="wcf.acp.group.option.category.admin.configuration.package"><![CDATA[Pakete]]></item>
                <item name="wcf.acp.group.option.category.admin.user"><![CDATA[Benutzer]]></item>
                <item name="wcf.acp.group.option.category.admin.user.group"><![CDATA[Benutzergruppen]]></item>
                <item name="wcf.acp.group.option.category.admin.user.user"><![CDATA[Benutzer]]></item>
                <item name="wcf.acp.group.option.category.admin.template"><![CDATA[Templates]]></item>
                <item name="wcf.acp.group.option.admin.template.canManageTemplate"><![CDATA[Kann Templates verwalten]]></item>
                <item name="wcf.acp.group.option.admin.style.canManageStyle"><![CDATA[Kann Stile verwalten]]></item>
-               <item name="wcf.acp.group.option.category.admin.content"><![CDATA[Inhalte]]></item>
+               <item name="wcf.acp.group.option.category.admin.content"><![CDATA[Inhalt]]></item>
                <item name="wcf.acp.group.option.admin.content.canBulkRevertContentChanges"><![CDATA[Kann Änderungen der letzten Tage zurücksetzen]]></item>
-               <item name="wcf.acp.group.option.category.admin.community"><![CDATA[Community]]></item>
+               <item name="wcf.acp.group.option.category.admin.application"><![CDATA[Anwendungen]]></item>
                <item name="wcf.acp.group.option.category.mod.general"><![CDATA[Allgemeine Rechte]]></item>
                <item name="wcf.acp.group.option.category.admin.user.option"><![CDATA[Benutzerprofilfelder]]></item>
                <item name="wcf.acp.group.option.admin.user.canManageUserOption"><![CDATA[Kann Benutzerprofilfelder verwalten]]></item>
                <item name="wcf.acp.group.option.category.admin.content.tag"><![CDATA[Tags]]></item>
                <item name="wcf.acp.group.option.admin.content.tag.canManageTag"><![CDATA[Kann Tags verwalten]]></item>
                <item name="wcf.acp.group.option.user.signature.maxLength"><![CDATA[Maximale Signaturlänge]]></item>
-               <item name="wcf.acp.group.option.admin.system.canImportData"><![CDATA[Kann Daten importieren]]></item>
-               <item name="wcf.acp.group.option.admin.system.canRebuildData"><![CDATA[Kann Anzeigen aktualisieren]]></item>
+               <item name="wcf.acp.group.option.admin.management.canImportData"><![CDATA[Kann Daten importieren]]></item>
+               <item name="wcf.acp.group.option.admin.management.canRebuildData"><![CDATA[Kann Anzeigen aktualisieren]]></item>
                <item name="wcf.acp.group.description"><![CDATA[Beschreibung der Benutzergruppe]]></item>
                <item name="wcf.acp.group.button.choose"><![CDATA[Benutzergruppe wählen]]></item>
                <item name="wcf.acp.group.option.error.validationFailed"><![CDATA[Sie haben einen ungültigen Inhalt eingegeben.]]></item>
        </category>
        
        <category name="wcf.acp.menu">
+               <item name="wcf.acp.menu.link.management"><![CDATA[Verwaltung]]></item>
                <item name="wcf.acp.menu.link.maintenance"><![CDATA[Wartung]]></item>
                <item name="wcf.acp.menu.link.maintenance.cache"><![CDATA[Cache]]></item>
                <item name="wcf.acp.menu.link.application.management"><![CDATA[Anwendungen verwalten]]></item>
-               <item name="wcf.acp.menu.link.community"><![CDATA[Community]]></item>
+               <item name="wcf.acp.menu.link.application"><![CDATA[Anwendungen]]></item>
                <item name="wcf.acp.menu.link.content"><![CDATA[Inhalt]]></item>
                <item name="wcf.acp.menu.link.cronjob"><![CDATA[Cronjobs]]></item>
                <item name="wcf.acp.menu.link.cronjob.add"><![CDATA[Cronjob hinzufügen]]></item>
                <item name="wcf.acp.menu.link.group.add"><![CDATA[Benutzergruppe hinzufügen]]></item>
                <item name="wcf.acp.menu.link.group.mail"><![CDATA[E-Mail an Gruppenmitglieder]]></item>
                <item name="wcf.acp.menu.link.group.list"><![CDATA[Benutzergruppen]]></item>
-               <item name="wcf.acp.menu.link.display"><![CDATA[Darstellung]]></item>
+               <item name="wcf.acp.menu.link.customization"><![CDATA[Anpassung]]></item>
                <item name="wcf.acp.menu.link.option"><![CDATA[Optionen]]></item>
                <item name="wcf.acp.menu.link.package"><![CDATA[Pakete]]></item>
                <item name="wcf.acp.menu.link.package.install"><![CDATA[Paket installieren]]></item>
                <item name="wcf.acp.menu.link.style.add"><![CDATA[Stil hinzufügen]]></item>
                <item name="wcf.acp.menu.link.style.import"><![CDATA[Stil importieren]]></item>
                <item name="wcf.acp.menu.link.style.list"><![CDATA[Stile]]></item>
-               <item name="wcf.acp.menu.link.system"><![CDATA[System]]></item>
+               <item name="wcf.acp.menu.link.configuration"><![CDATA[Konfiguration]]></item>
                <item name="wcf.acp.menu.link.user"><![CDATA[Benutzer]]></item>
                <item name="wcf.acp.menu.link.user.add"><![CDATA[Benutzer hinzufügen]]></item>
                <item name="wcf.acp.menu.link.user.list"><![CDATA[Benutzer]]></item>
                <item name="wcf.acp.menu.link.user.management"><![CDATA[Benutzer]]></item>
                <item name="wcf.acp.menu.link.user.bulkProcessing"><![CDATA[Benutzer-Massenbearbeitung]]></item>
                <item name="wcf.acp.menu.link.user.search"><![CDATA[Benutzer suchen]]></item>
-               <item name="wcf.acp.menu.link.user.option"><![CDATA[Benutzerprofilfelder]]></item>
-               <item name="wcf.acp.menu.link.user.option.list"><![CDATA[Benutzerprofilfelder]]></item>
-               <item name="wcf.acp.menu.link.user.option.add"><![CDATA[Benutzerprofilfeld hinzufügen]]></item>
-               <item name="wcf.acp.menu.link.user.option.category.list"><![CDATA[Benutzerprofilfeld-Kategorien]]></item>
-               <item name="wcf.acp.menu.link.user.option.category.add"><![CDATA[Benutzerprofilfeld-Kategorie hinzufügen]]></item>
-               <item name="wcf.acp.menu.link.user.option.setDefaults"><![CDATA[Benutzerprofil-Einstellungen verwalten]]></item>
+               <item name="wcf.acp.menu.link.user.option"><![CDATA[Profilfelder]]></item>
+               <item name="wcf.acp.menu.link.user.option.list"><![CDATA[Profilfelder]]></item>
+               <item name="wcf.acp.menu.link.user.option.add"><![CDATA[Profilfeld hinzufügen]]></item>
+               <item name="wcf.acp.menu.link.user.option.category.list"><![CDATA[Profilfeld-Kategorien]]></item>
+               <item name="wcf.acp.menu.link.user.option.category.add"><![CDATA[Profilfeld-Kategorie hinzufügen]]></item>
+               <item name="wcf.acp.menu.link.userOptionDefaults"><![CDATA[Benutzerprofil-Einstellungen]]></item>
                <item name="wcf.acp.menu.link.template"><![CDATA[Templates]]></item>
                <item name="wcf.acp.menu.link.template.list"><![CDATA[Templates]]></item>
                <item name="wcf.acp.menu.link.template.add"><![CDATA[Template hinzufügen]]></item>
                <item name="wcf.acp.menu.link.tag.list"><![CDATA[Tags]]></item>
                <item name="wcf.acp.menu.link.maintenance.import"><![CDATA[Datenimport]]></item>
                <item name="wcf.acp.menu.link.maintenance.rebuildData"><![CDATA[Anzeigen aktualisieren]]></item>
-               <item name="wcf.acp.menu.link.log.stat"><![CDATA[Statistiken]]></item>
+               <item name="wcf.acp.menu.link.stat"><![CDATA[Statistiken]]></item>
+               <item name="wcf.acp.menu.link.stat.list"><![CDATA[Statistiken]]></item>
                <item name="wcf.acp.menu.link.group.assignment"><![CDATA[Automatische Zuordnungen]]></item>
                <item name="wcf.acp.menu.link.notice"><![CDATA[Hinweise]]></item>
                <item name="wcf.acp.menu.link.notice.add"><![CDATA[Hinweis hinzufügen]]></item>
                <item name="wcf.acp.menu.link.ad.list"><![CDATA[Werbung]]></item>
                <item name="wcf.acp.menu.link.captcha"><![CDATA[Captchas]]></item>
                <item name="wcf.acp.menu.link.captcha.question.add"><![CDATA[Frage hinzufügen]]></item>
-               <item name="wcf.acp.menu.link.captcha.question.list"><![CDATA[Fragen]]></item>
+               <item name="wcf.acp.menu.link.captcha.question.list"><![CDATA[Captcha-Fragen]]></item>
                <item name="wcf.acp.menu.link.log.authentication.failure"><![CDATA[Fehlgeschlagene Anmeldungen]]></item>
                <item name="wcf.acp.menu.link.paidSubscription"><![CDATA[Bezahlte Mitgliedschaften]]></item>
                <item name="wcf.acp.menu.link.paidSubscription.list"><![CDATA[Mitgliedschaften auflisten]]></item>
                <item name="wcf.acp.menu.link.paidSubscription.user.list"><![CDATA[Aktive Mitgliedschaften auflisten]]></item>
                <item name="wcf.acp.menu.link.paidSubscription.transactionLog.list"><![CDATA[Transaktionen auflisten]]></item>
-               <item name="wcf.acp.menu.link.notificationPresetSettings"><![CDATA[Vorgabewerte für Benachrichtigungen bearbeiten]]></item>
+               <item name="wcf.acp.menu.link.notificationPresetSettings"><![CDATA[Benachrichtigungen]]></item>
        </category>
        
        <category name="wcf.acp.notice">
index 726b5ebaf4acee3a785a3ed0517c441d7c5f5858..0794bfc211e5d11dc87bfcdd9ba669a7cb2288d7 100644 (file)
@@ -278,15 +278,15 @@ Examples for medium ID detection:
                <item name="wcf.acp.group.option.admin.general.canUseAcp.description"><![CDATA[Users of this group may access the Administration Control Panel based upon their granted permissions. This option must be enabled if you wish to grant access to any administrative option.]]></item>
                <item name="wcf.acp.group.option.admin.general.canViewPrivateUserOptions"><![CDATA[Can view private user options]]></item>
                <item name="wcf.acp.group.option.admin.language.canManageLanguage"><![CDATA[Can manage languages]]></item>
-               <item name="wcf.acp.group.option.admin.system.canEditOption"><![CDATA[Can edit system options]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.canEditOption"><![CDATA[Can edit system options]]></item>
                <item name="wcf.acp.group.option.admin.style.canUseDisabledStyle"><![CDATA[Can view disabled styles]]></item>
-               <item name="wcf.acp.group.option.admin.system.canViewLog"><![CDATA[Can view log files]]></item>
-               <item name="wcf.acp.group.option.admin.system.canManageApplication"><![CDATA[Can manage applications]]></item>
-               <item name="wcf.acp.group.option.admin.system.canManageCronjob"><![CDATA[Can manage cronjobs]]></item>
-               <item name="wcf.acp.group.option.admin.system.package.canEditServer"><![CDATA[Can edit update servers]]></item>
-               <item name="wcf.acp.group.option.admin.system.package.canInstallPackage"><![CDATA[Can install packages]]></item>
-               <item name="wcf.acp.group.option.admin.system.package.canUninstallPackage"><![CDATA[Can uninstall packages]]></item>
-               <item name="wcf.acp.group.option.admin.system.package.canUpdatePackage"><![CDATA[Can update packages]]></item>
+               <item name="wcf.acp.group.option.admin.management.canViewLog"><![CDATA[Can view log files]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.canManageApplication"><![CDATA[Can manage applications]]></item>
+               <item name="wcf.acp.group.option.admin.management.canManageCronjob"><![CDATA[Can manage cronjobs]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.package.canEditServer"><![CDATA[Can edit update servers]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.package.canInstallPackage"><![CDATA[Can install packages]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.package.canUninstallPackage"><![CDATA[Can uninstall packages]]></item>
+               <item name="wcf.acp.group.option.admin.configuration.package.canUpdatePackage"><![CDATA[Can update packages]]></item>
                <item name="wcf.acp.group.option.admin.user.accessibleGroups"><![CDATA[Accessible User Groups]]></item>
                <item name="wcf.acp.group.option.admin.user.accessibleGroups.description"><![CDATA[Users of this group have access to these groups, furthermore you need to specify if these users are allowed to edit these groups.]]></item>
                <item name="wcf.acp.group.option.admin.user.canAddGroup"><![CDATA[Can add user groups]]></item>
@@ -300,13 +300,14 @@ Examples for medium ID detection:
                <item name="wcf.acp.group.option.admin.user.canMailUser"><![CDATA[Can send emails to users]]></item>
                <item name="wcf.acp.group.option.admin.user.canSearchUser"><![CDATA[Can search users]]></item>
                <item name="wcf.acp.group.option.category.admin"><![CDATA[Administrative Permissions]]></item>
-               <item name="wcf.acp.group.option.category.admin.display"><![CDATA[Appearance]]></item>
+               <item name="wcf.acp.group.option.category.admin.configuration"><![CDATA[Configuration]]></item>
+               <item name="wcf.acp.group.option.category.admin.customization"><![CDATA[Customization]]></item>
+               <item name="wcf.acp.group.option.category.admin.management"><![CDATA[Management]]></item>
                <item name="wcf.acp.group.option.category.admin.display.pageMenu"><![CDATA[Page Menu]]></item>
                <item name="wcf.acp.group.option.category.admin.general"><![CDATA[General Permissions]]></item>
                <item name="wcf.acp.group.option.category.admin.language"><![CDATA[Languages]]></item>
                <item name="wcf.acp.group.option.category.admin.style"><![CDATA[Styles]]></item>
-               <item name="wcf.acp.group.option.category.admin.system"><![CDATA[System]]></item>
-               <item name="wcf.acp.group.option.category.admin.system.package"><![CDATA[Packages]]></item>
+               <item name="wcf.acp.group.option.category.admin.configuration.package"><![CDATA[Packages]]></item>
                <item name="wcf.acp.group.option.category.admin.user"><![CDATA[Users]]></item>
                <item name="wcf.acp.group.option.category.admin.user.group"><![CDATA[User Groups]]></item>
                <item name="wcf.acp.group.option.category.admin.user.user"><![CDATA[Users]]></item>
@@ -326,7 +327,7 @@ Examples for medium ID detection:
                <item name="wcf.acp.group.option.admin.style.canManageStyle"><![CDATA[Can manage styles]]></item>
                <item name="wcf.acp.group.option.category.admin.content"><![CDATA[Content]]></item>
                <item name="wcf.acp.group.option.admin.content.canBulkRevertContentChanges"><![CDATA[Can bulk revert content changes]]></item>
-               <item name="wcf.acp.group.option.category.admin.community"><![CDATA[Community]]></item>
+               <item name="wcf.acp.group.option.category.admin.application"><![CDATA[Applications]]></item>
                <item name="wcf.acp.group.option.category.mod.general"><![CDATA[General]]></item>
                <item name="wcf.acp.group.option.category.admin.user.option"><![CDATA[User Profile Fields]]></item>
                <item name="wcf.acp.group.option.admin.user.canManageUserOption"><![CDATA[Can manage user profile fields]]></item>
@@ -403,8 +404,8 @@ Examples for medium ID detection:
                <item name="wcf.acp.group.option.category.admin.content.tag"><![CDATA[Tags]]></item>
                <item name="wcf.acp.group.option.admin.content.tag.canManageTag"><![CDATA[Can manage tags]]></item>
                <item name="wcf.acp.group.option.user.signature.maxLength"><![CDATA[Maximum Signature Length]]></item>
-               <item name="wcf.acp.group.option.admin.system.canImportData"><![CDATA[Can import data]]></item>
-               <item name="wcf.acp.group.option.admin.system.canRebuildData"><![CDATA[Can rebuild data]]></item>
+               <item name="wcf.acp.group.option.admin.management.canImportData"><![CDATA[Can import data]]></item>
+               <item name="wcf.acp.group.option.admin.management.canRebuildData"><![CDATA[Can rebuild data]]></item>
                <item name="wcf.acp.group.description"><![CDATA[Description]]></item>
                <item name="wcf.acp.group.button.choose"><![CDATA[Choose User Group]]></item>
                <item name="wcf.acp.group.option.error.validationFailed"><![CDATA[You have entered an invalid value.]]></item>
@@ -547,10 +548,11 @@ Examples for medium ID detection:
        </category>
        
        <category name="wcf.acp.menu">
+               <item name="wcf.acp.menu.link.management"><![CDATA[Management]]></item>
                <item name="wcf.acp.menu.link.maintenance"><![CDATA[Maintenance]]></item>
                <item name="wcf.acp.menu.link.maintenance.cache"><![CDATA[Cache]]></item>
                <item name="wcf.acp.menu.link.application.management"><![CDATA[Manage Applications]]></item>
-               <item name="wcf.acp.menu.link.community"><![CDATA[Community]]></item>
+               <item name="wcf.acp.menu.link.application"><![CDATA[Applications]]></item>
                <item name="wcf.acp.menu.link.content"><![CDATA[Content]]></item>
                <item name="wcf.acp.menu.link.cronjob"><![CDATA[Cronjobs]]></item>
                <item name="wcf.acp.menu.link.cronjob.add"><![CDATA[Add Cronjob]]></item>
@@ -568,9 +570,8 @@ Examples for medium ID detection:
                <item name="wcf.acp.menu.link.group.add"><![CDATA[Add User Group]]></item>
                <item name="wcf.acp.menu.link.group.mail"><![CDATA[Email Users]]></item>
                <item name="wcf.acp.menu.link.group.list"><![CDATA[User Groups]]></item>
-               <item name="wcf.acp.menu.link.display"><![CDATA[Appearance]]></item>
+               <item name="wcf.acp.menu.link.customization"><![CDATA[Customization]]></item>
                <item name="wcf.acp.menu.link.option"><![CDATA[Options]]></item>
-               <item name="wcf.acp.menu.link.option.importAndExport"><![CDATA[Import &amp; Export]]></item>
                <item name="wcf.acp.menu.link.package"><![CDATA[Packages]]></item>
                <item name="wcf.acp.menu.link.package.install"><![CDATA[Install Package]]></item>
                <item name="wcf.acp.menu.link.package.server.list"><![CDATA[Package Servers]]></item>
@@ -582,7 +583,7 @@ Examples for medium ID detection:
                <item name="wcf.acp.menu.link.style.add"><![CDATA[Add Style]]></item>
                <item name="wcf.acp.menu.link.style.import"><![CDATA[Import Style]]></item>
                <item name="wcf.acp.menu.link.style.list"><![CDATA[Styles]]></item>
-               <item name="wcf.acp.menu.link.system"><![CDATA[System]]></item>
+               <item name="wcf.acp.menu.link.configuration"><![CDATA[Configuration]]></item>
                <item name="wcf.acp.menu.link.user"><![CDATA[Users]]></item>
                <item name="wcf.acp.menu.link.user.add"><![CDATA[Add User]]></item>
                <item name="wcf.acp.menu.link.user.list"><![CDATA[Users]]></item>
@@ -595,7 +596,7 @@ Examples for medium ID detection:
                <item name="wcf.acp.menu.link.user.option.add"><![CDATA[Add Custom User Field]]></item>
                <item name="wcf.acp.menu.link.user.option.category.list"><![CDATA[Field Categories]]></item>
                <item name="wcf.acp.menu.link.user.option.category.add"><![CDATA[Add Field Category]]></item>
-               <item name="wcf.acp.menu.link.user.option.setDefaults"><![CDATA[Manage User Field Settings]]></item>
+               <item name="wcf.acp.menu.link.userOptionDefaults"><![CDATA[User Field Settings]]></item>
                <item name="wcf.acp.menu.link.template"><![CDATA[Templates]]></item>
                <item name="wcf.acp.menu.link.template.list"><![CDATA[Templates]]></item>
                <item name="wcf.acp.menu.link.template.add"><![CDATA[Add Template]]></item>
@@ -629,7 +630,8 @@ Examples for medium ID detection:
                <item name="wcf.acp.menu.link.tag.list"><![CDATA[Tags]]></item>
                <item name="wcf.acp.menu.link.maintenance.import"><![CDATA[Data Import]]></item>
                <item name="wcf.acp.menu.link.maintenance.rebuildData"><![CDATA[Rebuild Data]]></item>
-               <item name="wcf.acp.menu.link.log.stat"><![CDATA[Statistics]]></item>
+               <item name="wcf.acp.menu.link.stat"><![CDATA[Statistics]]></item>
+               <item name="wcf.acp.menu.link.stat.list"><![CDATA[Statistics]]></item>
                <item name="wcf.acp.menu.link.group.assignment"><![CDATA[Automatic Assignments]]></item>
                <item name="wcf.acp.menu.link.notice"><![CDATA[Notices]]></item>
                <item name="wcf.acp.menu.link.notice.add"><![CDATA[Add Notice]]></item>
@@ -639,13 +641,13 @@ Examples for medium ID detection:
                <item name="wcf.acp.menu.link.ad.list"><![CDATA[Ads]]></item>
                <item name="wcf.acp.menu.link.captcha"><![CDATA[Captchas]]></item>
                <item name="wcf.acp.menu.link.captcha.question.add"><![CDATA[Add Question]]></item>
-               <item name="wcf.acp.menu.link.captcha.question.list"><![CDATA[Questions]]></item>
+               <item name="wcf.acp.menu.link.captcha.question.list"><![CDATA[Captcha Questions]]></item>
                <item name="wcf.acp.menu.link.log.authentication.failure"><![CDATA[Failed Login Attempts]]></item>
                <item name="wcf.acp.menu.link.paidSubscription"><![CDATA[Paid Subscriptions]]></item>
                <item name="wcf.acp.menu.link.paidSubscription.list"><![CDATA[List Paid Subscriptions]]></item>
                <item name="wcf.acp.menu.link.paidSubscription.user.list"><![CDATA[List Active Subscriptions]]></item>
                <item name="wcf.acp.menu.link.paidSubscription.transactionLog.list"><![CDATA[List Transactions]]></item>
-               <item name="wcf.acp.menu.link.notificationPresetSettings"><![CDATA[Default Notification Settings]]></item>
+               <item name="wcf.acp.menu.link.notificationPresetSettings"><![CDATA[Notifications]]></item>
        </category>
        
        <category name="wcf.acp.notice">
index 78138ab7dfe61f7087c72e22bb41edd89517b680..f329284f481d2360c60c80832ce4182943cbe8f9 100644 (file)
@@ -1941,7 +1941,7 @@ INSERT INTO wcf1_user_group (groupID, groupName, groupType) VALUES (5, 'wcf.acp.
 
 -- default user group options
 INSERT INTO wcf1_user_group_option (optionID, optionName, categoryName, optionType, defaultValue, showOrder, usersOnly) VALUES (1, 'admin.general.canUseAcp', 'admin.general', 'boolean', '0', 1, 1);
-INSERT INTO wcf1_user_group_option (optionID, optionName, categoryName, optionType, defaultValue, showOrder, usersOnly) VALUES (2, 'admin.system.package.canInstallPackage', 'admin.system.package', 'boolean', '0', 1, 1);
+INSERT INTO wcf1_user_group_option (optionID, optionName, categoryName, optionType, defaultValue, showOrder, usersOnly) VALUES (2, 'admin.configuration.package.canInstallPackage', 'admin.configuration.package', 'boolean', '0', 1, 1);
 INSERT INTO wcf1_user_group_option (optionID, optionName, categoryName, optionType, defaultValue, showOrder, usersOnly) VALUES (3, 'admin.user.canEditGroup', 'admin.user.group', 'boolean', '0', 1, 1);
 
 -- default user group option values