Changed URL schema - CRASH FOR SURE
authorAlexander Ebert <ebert@woltlab.com>
Tue, 11 Oct 2011 16:12:03 +0000 (18:12 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Tue, 11 Oct 2011 16:12:03 +0000 (18:12 +0200)
Previous: index.php?form=UserEdit&userID=1234&s=abc
Now: index.php/UserEdit/1234/?s=abc

55 files changed:
wcfsetup/install/files/acp/js/WCF.ACP.js
wcfsetup/install/files/acp/templates/acpSessionLog.tpl
wcfsetup/install/files/acp/templates/acpSessionLogList.tpl
wcfsetup/install/files/acp/templates/cacheList.tpl
wcfsetup/install/files/acp/templates/cronjobAdd.tpl
wcfsetup/install/files/acp/templates/cronjobList.tpl
wcfsetup/install/files/acp/templates/cronjobLogList.tpl
wcfsetup/install/files/acp/templates/detailedPackageList.tpl [new file with mode: 0644]
wcfsetup/install/files/acp/templates/header.tpl
wcfsetup/install/files/acp/templates/login.tpl
wcfsetup/install/files/acp/templates/masterPassword.tpl
wcfsetup/install/files/acp/templates/masterPasswordInit.tpl
wcfsetup/install/files/acp/templates/option.tpl
wcfsetup/install/files/acp/templates/optionImport.tpl
wcfsetup/install/files/acp/templates/packageAutoUpdateList.tpl
wcfsetup/install/files/acp/templates/packageInstallationConfirm.tpl
wcfsetup/install/files/acp/templates/packageList.tpl
wcfsetup/install/files/acp/templates/packageListPlugins.tpl [new file with mode: 0644]
wcfsetup/install/files/acp/templates/packageStartInstall.tpl
wcfsetup/install/files/acp/templates/packageUninstallationDependencies.tpl
wcfsetup/install/files/acp/templates/packageUpdate.tpl
wcfsetup/install/files/acp/templates/packageUpdateAuth.tpl
wcfsetup/install/files/acp/templates/packageUpdateSearch.tpl
wcfsetup/install/files/acp/templates/packageUpdateSearchResult.tpl
wcfsetup/install/files/acp/templates/packageView.tpl
wcfsetup/install/files/acp/templates/updateServerAdd.tpl
wcfsetup/install/files/acp/templates/updateServerList.tpl
wcfsetup/install/files/acp/templates/userAdd.tpl
wcfsetup/install/files/acp/templates/userAssignToGroup.tpl
wcfsetup/install/files/acp/templates/userEmailAddressExport.tpl
wcfsetup/install/files/acp/templates/userGroupAdd.tpl
wcfsetup/install/files/acp/templates/userGroupList.tpl
wcfsetup/install/files/acp/templates/userList.tpl
wcfsetup/install/files/acp/templates/userMail.tpl
wcfsetup/install/files/acp/templates/userSearch.tpl
wcfsetup/install/files/acp/templates/usersMassProcessing.tpl
wcfsetup/install/files/js/WCF.js
wcfsetup/install/files/lib/acp/form/MasterPasswordForm.class.php
wcfsetup/install/files/lib/acp/form/PackageStartInstallForm.class.php
wcfsetup/install/files/lib/acp/form/PackageUpdateForm.class.php
wcfsetup/install/files/lib/acp/form/PackageUpdateSearchForm.class.php
wcfsetup/install/files/lib/acp/form/UserSearchForm.class.php
wcfsetup/install/files/lib/acp/form/UsersMassProcessingForm.class.php
wcfsetup/install/files/lib/acp/page/DetailedPackageListPage.class.php [new file with mode: 0644]
wcfsetup/install/files/lib/acp/page/PackageListPage.class.php
wcfsetup/install/files/lib/acp/page/PackageViewPage.class.php
wcfsetup/install/files/lib/acp/page/UserListPage.class.php
wcfsetup/install/files/lib/data/package/PackageAction.class.php
wcfsetup/install/files/lib/system/WCFACP.class.php
wcfsetup/install/files/lib/system/cache/builder/ACPMenuCacheBuilder.class.php
wcfsetup/install/files/lib/system/package/PackageInstallationDispatcher.class.php
wcfsetup/install/files/lib/system/package/PackageUninstallationDispatcher.class.php
wcfsetup/install/files/lib/system/request/RequestHandler.class.php
wcfsetup/install/files/lib/system/request/Route.class.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/request/RouteHandler.class.php [new file with mode: 0644]

index 20dccb2fc0c0087bce8258c4e3f883f1cfd0ffa7..a382ab74741322dacf1a8d131766c3edf4c992a1 100644 (file)
@@ -118,6 +118,67 @@ WCF.ACP.Menu.prototype = {
        }
 };
 
+WCF.ACP.Package = {};
+
+WCF.ACP.Package.List = function(pages) { this.init(pages); };
+WCF.ACP.Package.List.prototype = {
+       _pages: {},
+       _pluginLists: [],
+       _proxy: null,
+       _template: null,
+       
+       init: function(pages) {
+               $('.pluginList').each($.proxy(function(index, pluginList) {
+                       var $wcfPages = $(pluginList).wcfPages({
+                               activePage: 1,
+                               maxPage: pages
+                       }).bind('wcfpagesshouldswitch', $.proxy(this._cachePage, this)).bind('wcfpagesswitched', $.proxy(this._loadPage, this));
+                       
+                       this._pluginLists.push($wcfPages);
+               }, this));
+               
+               if (this._pluginLists.length > 0) {
+                       this._proxy = new WCF.Action.Proxy({
+                               success: $.proxy(this._success, this)
+                       });
+                       this._template = $('#plugins ol');
+               }
+       },
+       
+       _cachePage: function(event, data) {
+               if (!this._pages[data.currentPage]) {
+                       this._pages[data.currentPage] = $('#plugins ol').html();
+               }
+       },
+       
+       _loadPage: function(event, data) {
+               // update active page
+               for (var $i = 0, $size = this._pluginLists.length; $i < $size; $i++) {
+                       this._pluginLists[$i].wcfPages('overridePage', data.activePage);
+               }
+               
+               if (this._pages[data.activePage]) {
+                       this._template.html(this._pages[data.activePage]);
+                       return;
+               }
+               
+               // load content using AJAX
+               this._proxy.setOption('data', {
+                       actionName: 'getPluginList',
+                       className: 'wcf\\data\\package\\PackageAction',
+                       parameters: {
+                               activePage: data.activePage
+                       }
+               });
+               this._proxy.sendRequest();
+       },
+       
+       _success: function(data, textStatus, jqXHR) {
+               this._pages[data.returnValues.activePage] = data.returnValues.template;
+               this._loadPage(null, { activePage: data.returnValues.activePage });
+       }
+};
+
 /**
  * Handles package installation dialog.
  * 
@@ -173,7 +234,7 @@ WCF.ACP.PackageInstallation.prototype = {
        prepareInstallation: function() {
                WCF.showAJAXDialog('packageInstallationDialog', true, {
                        ajax: {
-                               url: 'index.php?action=' + this._actionName + '&t=' + SECURITY_TOKEN + SID_ARG_2ND,
+                               url: 'index.php/' + this._actionName + '/?t=' + SECURITY_TOKEN + SID_ARG_2ND,
                                type: 'POST',
                                data: { queueID: this._queueID, step: 'prepare' },
                                success: $.proxy(this._handleResponse, this)
@@ -210,7 +271,7 @@ WCF.ACP.PackageInstallation.prototype = {
                                $('#packageInstallationInnerContent').append('<div class="formSubmit"><input type="button" id="' + $id + '" value="' + WCF.Language.get('wcf.global.button.next') + '" class="default" /></div>');
                                
                                $('#' + $id).click($.proxy(function() {
-                                       window.location.href = "index.php?page=PackageList" + SID_ARG_2ND;
+                                       window.location.href = "index.php/PackageList/" + SID_ARG_1ST;
                                }, this));
                                
                                $('#packageInstallationInnerContentContainer').wcfBlindIn();
@@ -308,7 +369,7 @@ WCF.ACP.PackageInstallation.prototype = {
                }, additionalData);
                
                $.ajax({
-                       url: 'index.php?action=' + this._actionName + '&t=' + SECURITY_TOKEN + SID_ARG_2ND,
+                       url: 'index.php/' + this._actionName + '/?t=' + SECURITY_TOKEN + SID_ARG_2ND,
                        dataType: 'json',
                        type: 'POST',
                        data: $data,
@@ -366,7 +427,7 @@ WCF.ACP.PackageUninstallation.prototype = {
                        // initialize dialog
                        WCF.showAJAXDialog('packageInstallationDialog', true, {
                                ajax: {
-                                       url: 'index.php?action=UninstallPackage&t=' + SECURITY_TOKEN + SID_ARG_2ND,
+                                       url: 'index.php/UninstallPackage/?t=' + SECURITY_TOKEN + SID_ARG_2ND,
                                        type: 'POST',
                                        data: { packageID: packageID, step: 'prepare' },
                                        success: $.proxy(this._installation._handleResponse, this._installation)
@@ -585,7 +646,7 @@ WCF.ACP.Worker.prototype = {
                // initialize AJAX-based dialog
                WCF.showAJAXDialog(this._dialogID, true, {
                        ajax: {
-                               url: 'index.php?action=WorkerProxy&t=' + SECURITY_TOKEN + SID_ARG_2ND,
+                               url: 'index.php/WorkerProxy/?t=' + SECURITY_TOKEN + SID_ARG_2ND,
                                type: 'POST',
                                data: {
                                        className: className,
@@ -617,7 +678,7 @@ WCF.ACP.Worker.prototype = {
                if ($data.progress < 100) {
                        // send request for next loop
                        $.ajax({
-                               url: 'index.php?action=WorkerProxy&t=' + SECURITY_TOKEN + SID_ARG_2ND,
+                               url: 'index.php/WorkerProxy/?t=' + SECURITY_TOKEN + SID_ARG_2ND,
                                type: 'POST',
                                data: {
                                        className: $data.className,
index e594a097d021bb3aaf6768e6707ca32c3f4763f3..e73b3cb307797464502f1dd170ced024d84cdbaa 100644 (file)
@@ -8,7 +8,7 @@
 </header>
 
 <div class="contentHeader">
-       {pages print=true assign=pagesLinks link="index.php?page=ACPSessionLog&sessionLogID=$sessionLogID&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+       {pages print=true assign=pagesLinks link="index.php/ACPSessionLog/$sessionLogID/?pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
 </div>
 
 {hascontent}
                <table>
                        <thead>
                                <tr>
-                                       <th class="columnID columnSessionAccessLogID{if $sortField == 'sessionAccessLogID'} active{/if}"><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLogID}&amp;pageNo={@$pageNo}&amp;sortField=sessionAccessLogID&amp;sortOrder={if $sortField == 'sessionAccessLogID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'sessionAccessLogID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnURL columnIpAddress{if $sortField == 'ipAddress'} active{/if}"><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLogID}&amp;pageNo={@$pageNo}&amp;sortField=ipAddress&amp;sortOrder={if $sortField == 'ipAddress' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.ipAddress{/lang}{if $sortField == 'ipAddress'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate{if $sortField == 'time'} active{/if}"><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLogID}&amp;pageNo={@$pageNo}&amp;sortField=time&amp;sortOrder={if $sortField == 'time' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.time{/lang}{if $sortField == 'time'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnTitle columnPackageName{if $sortField == 'packageName'} active{/if}"><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLogID}&amp;pageNo={@$pageNo}&amp;sortField=packageName&amp;sortOrder={if $sortField == 'packageName' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.packageName{/lang}{if $sortField == 'packageName'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnText columnClassName{if $sortField == 'className'} active{/if}"><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLogID}&amp;pageNo={@$pageNo}&amp;sortField=className&amp;sortOrder={if $sortField == 'className' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.className{/lang}{if $sortField == 'className'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></p></th>
-                                       <th class="columnURL columnRequestURI{if $sortField == 'requestURI'} active{/if}"><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLogID}&amp;pageNo={@$pageNo}&amp;sortField=requestURI&amp;sortOrder={if $sortField == 'requestURI' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.requestURI{/lang}{if $sortField == 'requestURI'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnText columnRequestMethod{if $sortField == 'requestMethod'} active{/if}"><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLogID}&amp;pageNo={@$pageNo}&amp;sortField=requestMethod&amp;sortOrder={if $sortField == 'requestMethod' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.requestMethod{/lang}{if $sortField == 'requestMethod'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnID columnSessionAccessLogID{if $sortField == 'sessionAccessLogID'} active{/if}"><a href="index.php/ACPSessionLog/{@$sessionLogID}/?pageNo={@$pageNo}&amp;sortField=sessionAccessLogID&amp;sortOrder={if $sortField == 'sessionAccessLogID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'sessionAccessLogID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnURL columnIpAddress{if $sortField == 'ipAddress'} active{/if}"><a href="index.php/ACPSessionLog/{@$sessionLogID}/?pageNo={@$pageNo}&amp;sortField=ipAddress&amp;sortOrder={if $sortField == 'ipAddress' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.ipAddress{/lang}{if $sortField == 'ipAddress'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate{if $sortField == 'time'} active{/if}"><a href="index.php/ACPSessionLog/{@$sessionLogID}/?pageNo={@$pageNo}&amp;sortField=time&amp;sortOrder={if $sortField == 'time' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.time{/lang}{if $sortField == 'time'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnTitle columnPackageName{if $sortField == 'packageName'} active{/if}"><a href="index.php/ACPSessionLog/{@$sessionLogID}/?pageNo={@$pageNo}&amp;sortField=packageName&amp;sortOrder={if $sortField == 'packageName' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.packageName{/lang}{if $sortField == 'packageName'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnText columnClassName{if $sortField == 'className'} active{/if}"><a href="index.php/ACPSessionLog/{@$sessionLogID}/?pageNo={@$pageNo}&amp;sortField=className&amp;sortOrder={if $sortField == 'className' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.className{/lang}{if $sortField == 'className'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></p></th>
+                                       <th class="columnURL columnRequestURI{if $sortField == 'requestURI'} active{/if}"><a href="index.php/ACPSessionLog/{@$sessionLogID}/?pageNo={@$pageNo}&amp;sortField=requestURI&amp;sortOrder={if $sortField == 'requestURI' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.requestURI{/lang}{if $sortField == 'requestURI'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnText columnRequestMethod{if $sortField == 'requestMethod'} active{/if}"><a href="index.php/ACPSessionLog/{@$sessionLogID}/?pageNo={@$pageNo}&amp;sortField=requestMethod&amp;sortOrder={if $sortField == 'requestMethod' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.requestMethod{/lang}{if $sortField == 'requestMethod'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
                                        
                                        {if $additionalColumnHeads|isset}{@$additionalColumnHeads}{/if}
                                </tr>
index 18fb1583b5208ce9a84f480cdef0644b58582f50..67dc77e4af98a7a8fa2841dd3c519fcd6e79f5e3 100644 (file)
@@ -8,7 +8,7 @@
 </header>
 
 <div class="contentHeader">
-       {pages print=true assign=pagesLinks link="index.php?page=ACPSessionLogList&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+       {pages print=true assign=pagesLinks link="index.php/ACPSessionLogList/?pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
 </div>
 
 {hascontent}
                <table>
                        <thead>
                                <tr>
-                                       <th class="columnSessionLogID{if $sortField == 'sessionLogID'} active{/if}"><a href="index.php?page=ACPSessionLogList&amp;pageNo={@$pageNo}&amp;sortField=sessionLogID&amp;sortOrder={if $sortField == 'sessionLogID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'sessionLogID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnTitle columnUsername{if $sortField == 'username'} active{/if}"><a href="index.php?page=ACPSessionLogList&amp;pageNo={@$pageNo}&amp;sortField=username&amp;sortOrder={if $sortField == 'username' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.username{/lang}{if $sortField == 'username'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnURL columnIpAddress{if $sortField == 'ipAddress'} active{/if}"><a href="index.php?page=ACPSessionLogList&amp;pageNo={@$pageNo}&amp;sortField=ipAddress&amp;sortOrder={if $sortField == 'ipAddress' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.ipAddress{/lang}{if $sortField == 'ipAddress'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnText columnUserAgent{if $sortField == 'userAgent'} active{/if}"><a href="index.php?page=ACPSessionLogList&amp;pageNo={@$pageNo}&amp;sortField=userAgent&amp;sortOrder={if $sortField == 'userAgent' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.userAgent{/lang}{if $sortField == 'userAgent'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate columnTime{if $sortField == 'time'} active{/if}"><a href="index.php?page=ACPSessionLogList&amp;pageNo={@$pageNo}&amp;sortField=time&amp;sortOrder={if $sortField == 'time' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.time{/lang}{if $sortField == 'time'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate columnLastActivityTime{if $sortField == 'lastActivityTime'} active{/if}"><a href="index.php?page=ACPSessionLogList&amp;pageNo={@$pageNo}&amp;sortField=lastActivityTime&amp;sortOrder={if $sortField == 'lastActivityTime' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.lastActivityTime{/lang}{if $sortField == 'lastActivityTime'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDigits columnAccesses{if $sortField == 'accesses'} active{/if}"><a href="index.php?page=ACPSessionLogList&amp;pageNo={@$pageNo}&amp;sortField=accesses&amp;sortOrder={if $sortField == 'accesses' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.accesses{/lang}{if $sortField == 'accesses'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnSessionLogID{if $sortField == 'sessionLogID'} active{/if}"><a href="index.php/ACPSessionLogList/?pageNo={@$pageNo}&amp;sortField=sessionLogID&amp;sortOrder={if $sortField == 'sessionLogID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'sessionLogID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnTitle columnUsername{if $sortField == 'username'} active{/if}"><a href="index.php/ACPSessionLogList/?pageNo={@$pageNo}&amp;sortField=username&amp;sortOrder={if $sortField == 'username' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.username{/lang}{if $sortField == 'username'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnURL columnIpAddress{if $sortField == 'ipAddress'} active{/if}"><a href="index.php/ACPSessionLogList/?pageNo={@$pageNo}&amp;sortField=ipAddress&amp;sortOrder={if $sortField == 'ipAddress' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.ipAddress{/lang}{if $sortField == 'ipAddress'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnText columnUserAgent{if $sortField == 'userAgent'} active{/if}"><a href="index.php/ACPSessionLogList/?pageNo={@$pageNo}&amp;sortField=userAgent&amp;sortOrder={if $sortField == 'userAgent' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.userAgent{/lang}{if $sortField == 'userAgent'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate columnTime{if $sortField == 'time'} active{/if}"><a href="index.php/ACPSessionLogList/?pageNo={@$pageNo}&amp;sortField=time&amp;sortOrder={if $sortField == 'time' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.time{/lang}{if $sortField == 'time'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate columnLastActivityTime{if $sortField == 'lastActivityTime'} active{/if}"><a href="index.php/ACPSessionLogList/?pageNo={@$pageNo}&amp;sortField=lastActivityTime&amp;sortOrder={if $sortField == 'lastActivityTime' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.lastActivityTime{/lang}{if $sortField == 'lastActivityTime'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDigits columnAccesses{if $sortField == 'accesses'} active{/if}"><a href="index.php/ACPSessionLogList/?pageNo={@$pageNo}&amp;sortField=accesses&amp;sortOrder={if $sortField == 'accesses' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.sessionLog.accesses{/lang}{if $sortField == 'accesses'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
                                        
                                        {if $additionalColumnHeads|isset}{@$additionalColumnHeads}{/if}
                                </tr>
@@ -37,9 +37,9 @@
                                        {foreach from=$objects item=sessionLog}
                                                <tr class="{if $sessionLog->active} activeContainer{/if}">
                                                        <td class="columnID columnSessionLogID"><p>{@$sessionLog->sessionLogID}</p></td>
-                                                       <td class="columnTitle columnUsername"><p>{if $__wcf->user->userID == $sessionLog->userID}<img src="{@RELATIVE_WCF_DIR}icon/user1.svg" alt="" />{/if} <a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLog->sessionLogID}{@SID_ARG_2ND}">{$sessionLog->username}</a></p></td>
-                                                       <td class="columnURL columnIpAddress"><p><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLog->sessionLogID}{@SID_ARG_2ND}">{$sessionLog->ipAddress}</a>{if $sessionLog->hostname != $sessionLog->ipAddress}<br /><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLog->sessionLogID}{@SID_ARG_2ND}">{$sessionLog->hostname}</a>{/if}</p></td>
-                                                       <td class="columnText columnUserAgent"><p><a href="index.php?page=ACPSessionLog&amp;sessionLogID={@$sessionLog->sessionLogID}{@SID_ARG_2ND}">{$sessionLog->userAgent}</a></p></td>
+                                                       <td class="columnTitle columnUsername"><p>{if $__wcf->user->userID == $sessionLog->userID}<img src="{@RELATIVE_WCF_DIR}icon/user1.svg" alt="" />{/if} <a href="index.php/ACPSessionLog/{@$sessionLog->sessionLogID}/{@SID_ARG_1ST}">{$sessionLog->username}</a></p></td>
+                                                       <td class="columnURL columnIpAddress"><p><a href="index.php/ACPSessionLog/{@$sessionLog->sessionLogID}/{@SID_ARG_1ST}">{$sessionLog->ipAddress}</a>{if $sessionLog->hostname != $sessionLog->ipAddress}<br /><a href="index.php/ACPSessionLog/{@$sessionLog->sessionLogID}/{@SID_ARG_1ST}">{$sessionLog->hostname}</a>{/if}</p></td>
+                                                       <td class="columnText columnUserAgent"><p><a href="index.php/ACPSessionLog/{@$sessionLog->sessionLogID}/{@SID_ARG_1ST}">{$sessionLog->userAgent}</a></p></td>
                                                        <td class="columnDate columnTime"><p>{@$sessionLog->time|time}</p></td>
                                                        <td class="columnDate columnLastActivityTime"><p>{@$sessionLog->lastActivityTime|time}</p></td>
                                                        <td class="columnDigits columnAccesses"><p>{#$sessionLog->accesses}</p></td>
index 4f6ba6603385cf51cfb1a6b95f83d5e476b83d2b..e602e9821a4f39c2ac70a9d43737ad55c5389f74 100644 (file)
@@ -51,7 +51,7 @@
 <div class="contentHeader">
        <nav class="largeButtons">
                <ul>
-                       {if $cacheData.files}<li><a onclick="return confirm('{lang}wcf.acp.cache.clear.sure{/lang}')" href="index.php?action=CacheClear{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" /> <span>{lang}wcf.acp.cache.button.clear{/lang}</span></a></li>{/if}
+                       {if $cacheData.files}<li><a onclick="return confirm('{lang}wcf.acp.cache.clear.sure{/lang}')" href="index.php/CacheClear/{@SID_ARG_1ST}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" /> <span>{lang}wcf.acp.cache.button.clear{/lang}</span></a></li>{/if}
                        {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                </ul>
        </nav>
@@ -99,7 +99,7 @@
 <div class="contentFooter">
        <nav class="largeButtons">
                <ul>
-                       {if $cacheData.files}<li><a onclick="return confirm('{lang}wcf.acp.cache.clear.sure{/lang}')" href="index.php?action=CacheClear{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" /> <span>{lang}wcf.acp.cache.button.clear{/lang}</span></a></li>{/if}
+                       {if $cacheData.files}<li><a onclick="return confirm('{lang}wcf.acp.cache.clear.sure{/lang}')" href="index.php/CacheClear/{@SID_ARG_1ST}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" /> <span>{lang}wcf.acp.cache.button.clear{/lang}</span></a></li>{/if}
                        {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                </ul>
        </nav>
index c8c75f1770783b0469807db39759ddc880d4208a..a46de9b43a27e519043020a40de7c2cf652e5d01 100644 (file)
 <div class="contentHeader">
        <nav class="largeButtons">
                <ul>
-                       <li><a href="index.php?page=CronjobList{@SID_ARG_2ND}" title="{lang}wcf.acp.menu.link.cronjob.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/time1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.cronjob.list{/lang}</span></a></li>
-                       {if $action == 'edit'}<li><a href="index.php?action=CronjobExecute&amp;cronjobID={@$cronjobID}{@SID_ARG_2ND}" title="{lang}wcf.acp.cronjob.execute{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/run1.svg" alt="" /> <span>{lang}wcf.acp.cronjob.execute{/lang}</span></a></li>{/if}
+                       <li><a href="index.php/CronjobList/{@SID_ARG_1ST}" title="{lang}wcf.acp.menu.link.cronjob.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/time1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.cronjob.list{/lang}</span></a></li>
+                       {if $action == 'edit'}<li><a href="index.php/CronjobExecute/{@$cronjobID}/{@SID_ARG_1ST}" title="{lang}wcf.acp.cronjob.execute{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/run1.svg" alt="" /> <span>{lang}wcf.acp.cronjob.execute{/lang}</span></a></li>{/if}
                </ul>
        </nav>
 </div>
 
-<form method="post" action="index.php?form=Cronjob{$action|ucfirst}">
+<form method="post" action="index.php/Cronjob{$action|ucfirst}/">
        <div class="border content">
                
                <fieldset>
                <input type="reset" value="{lang}wcf.global.button.reset{/lang}" accesskey="r" />
                <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />
                {@SID_INPUT_TAG}
-               {if $cronjobID|isset}<input type="hidden" name="cronjobID" value="{@$cronjobID}" />{/if}
+               {if $cronjobID|isset}<input type="hidden" name="id" value="{@$cronjobID}" />{/if}
        </div>
 </form>
 
index 4fea907636c0bf516073b773ffad6927739dc3f5..9cd63b05730a6f3c32de26c78d56541068b4ec47 100644 (file)
 </header>
 
 <div class="contentHeader">
-       {pages print=true assign=pagesLinks link="index.php?page=CronjobList&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+       {pages print=true assign=pagesLinks link="index.php/CronjobList/?pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
        
        {if $__wcf->session->getPermission('admin.system.cronjob.canAddCronjob')}
                <nav class="largeButtons">
-                       <ul><li><a href="index.php?form=CronjobAdd{@SID_ARG_2ND}" title="{lang}wcf.acp.cronjob.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.cronjob.add{/lang}</span></a></li></ul>
+                       <ul><li><a href="index.php/CronjobAdd/{@SID_ARG_1ST}" title="{lang}wcf.acp.cronjob.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.cronjob.add{/lang}</span></a></li></ul>
                </nav>
        {/if}
 </div>
                <table>
                        <thead>
                                <tr>
-                                       <th class="columnID columnCronjobID{if $sortField == 'cronjobID'} active{/if}" colspan="2"><a href="index.php?page=CronjobList&amp;pageNo={@$pageNo}&amp;sortField=cronjobID&amp;sortOrder={if $sortField == 'cronjobID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'cronjobID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate columnStartMinute{if $sortField == 'startMinute'} active{/if}" title="{lang}wcf.acp.cronjob.startMinute{/lang}"><a href="index.php?page=CronjobList&amp;pageNo={@$pageNo}&amp;sortField=startMinute&amp;sortOrder={if $sortField == 'startMinute' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startMinuteShort{/lang}{if $sortField == 'startMinute'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate columnStartHour{if $sortField == 'startHour'} active{/if}" title="{lang}wcf.acp.cronjob.startHour{/lang}"><a href="index.php?page=CronjobList&amp;pageNo={@$pageNo}&amp;sortField=startHour&amp;sortOrder={if $sortField == 'startHour' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startHourShort{/lang}{if $sortField == 'startHour'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnText columnStartDom{if $sortField == 'startDom'} active{/if}" title="{lang}wcf.acp.cronjob.startDom{/lang}"><a href="index.php?page=CronjobList&amp;pageNo={@$pageNo}&amp;sortField=startDom&amp;sortOrder={if $sortField == 'startDom' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startDomShort{/lang}{if $sortField == 'startDom'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate columnStartMonth{if $sortField == 'startMonth'} active{/if}" title="{lang}wcf.acp.cronjob.startMonth{/lang}"><a href="index.php?page=CronjobList&amp;pageNo={@$pageNo}&amp;sortField=startMonth&amp;sortOrder={if $sortField == 'startMonth' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startMonthShort{/lang}{if $sortField == 'startMonth'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate columnStartDow{if $sortField == 'startDow'} active{/if}" title="{lang}wcf.acp.cronjob.startDow{/lang}"><a href="index.php?page=CronjobList&amp;pageNo={@$pageNo}&amp;sortField=startDow&amp;sortOrder={if $sortField == 'startDow' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startDowShort{/lang}{if $sortField == 'startDow'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnText columnDescription{if $sortField == 'description'} active{/if}"><a href="index.php?page=CronjobList&amp;pageNo={@$pageNo}&amp;sortField=description&amp;sortOrder={if $sortField == 'description' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.description{/lang}{if $sortField == 'description'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate columnNextExec{if $sortField == 'nextExec'} active{/if}"><a href="index.php?page=CronjobList&amp;pageNo={@$pageNo}&amp;sortField=nextExec&amp;sortOrder={if $sortField == 'nextExec' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.nextExec{/lang}{if $sortField == 'nextExec'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnID columnCronjobID{if $sortField == 'cronjobID'} active{/if}" colspan="2"><a href="index.php/CronjobList/?pageNo={@$pageNo}&amp;sortField=cronjobID&amp;sortOrder={if $sortField == 'cronjobID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'cronjobID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate columnStartMinute{if $sortField == 'startMinute'} active{/if}" title="{lang}wcf.acp.cronjob.startMinute{/lang}"><a href="index.php/CronjobList/?pageNo={@$pageNo}&amp;sortField=startMinute&amp;sortOrder={if $sortField == 'startMinute' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startMinuteShort{/lang}{if $sortField == 'startMinute'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate columnStartHour{if $sortField == 'startHour'} active{/if}" title="{lang}wcf.acp.cronjob.startHour{/lang}"><a href="index.php/CronjobList/?pageNo={@$pageNo}&amp;sortField=startHour&amp;sortOrder={if $sortField == 'startHour' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startHourShort{/lang}{if $sortField == 'startHour'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnText columnStartDom{if $sortField == 'startDom'} active{/if}" title="{lang}wcf.acp.cronjob.startDom{/lang}"><a href="index.php/CronjobList/?pageNo={@$pageNo}&amp;sortField=startDom&amp;sortOrder={if $sortField == 'startDom' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startDomShort{/lang}{if $sortField == 'startDom'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate columnStartMonth{if $sortField == 'startMonth'} active{/if}" title="{lang}wcf.acp.cronjob.startMonth{/lang}"><a href="index.php/CronjobList/?pageNo={@$pageNo}&amp;sortField=startMonth&amp;sortOrder={if $sortField == 'startMonth' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startMonthShort{/lang}{if $sortField == 'startMonth'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate columnStartDow{if $sortField == 'startDow'} active{/if}" title="{lang}wcf.acp.cronjob.startDow{/lang}"><a href="index.php/CronjobList/?pageNo={@$pageNo}&amp;sortField=startDow&amp;sortOrder={if $sortField == 'startDow' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.startDowShort{/lang}{if $sortField == 'startDow'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnText columnDescription{if $sortField == 'description'} active{/if}"><a href="index.php/CronjobList/?pageNo={@$pageNo}&amp;sortField=description&amp;sortOrder={if $sortField == 'description' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.description{/lang}{if $sortField == 'description'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate columnNextExec{if $sortField == 'nextExec'} active{/if}"><a href="index.php/CronjobList/?pageNo={@$pageNo}&amp;sortField=nextExec&amp;sortOrder={if $sortField == 'nextExec' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.nextExec{/lang}{if $sortField == 'nextExec'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
                                        
                                        {if $additionalHeadColumns|isset}{@$additionalHeadColumns}{/if}
                                </tr>
@@ -88,7 +88,7 @@
                                                                {/if}
                                                
                                                                {if $cronjob->isEditable()}
-                                                                       <a href="index.php?form=CronjobEdit&amp;cronjobID={@$cronjob->cronjobID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/edit1.svg" alt="" title="{lang}wcf.global.button.edit{/lang}" class="balloonTooltip" /></a>
+                                                                       <a href="index.php/CronjobEdit/{@$cronjob->cronjobID}/{@SID_ARG_1ST}"><img src="{@RELATIVE_WCF_DIR}icon/edit1.svg" alt="" title="{lang}wcf.global.button.edit{/lang}" class="balloonTooltip" /></a>
                                                                {else}
                                                                        <img src="{@RELATIVE_WCF_DIR}icon/edit1D.svg" alt="" title="{lang}wcf.global.button.edit{/lang}" />
                                                                {/if}
                                                        <td class="columnDate columnStartDow"><p>{$cronjob->startDow|truncate:30:' ...'}</p></td>
                                                        <td class="columnText columnDescription" title="{$cronjob->description}">
                                                                {if $cronjob->isEditable()}
-                                                                       <p><a title="{lang}wcf.acp.cronjob.edit{/lang}" href="index.php?form=CronjobEdit&amp;cronjobID={@$cronjob->cronjobID}{@SID_ARG_2ND}">{$cronjob->description|truncate:50:" ..."}</a></p>
+                                                                       <p><a title="{lang}wcf.acp.cronjob.edit{/lang}" href="index.php/CronjobEdit/{@$cronjob->cronjobID}/{@SID_ARG_1ST}">{$cronjob->description|truncate:50:" ..."}</a></p>
                                                                {else}
                                                                        <p>{$cronjob->description|truncate:50:' ...'}</p>
                                                                {/if}
                
                {if $__wcf->session->getPermission('admin.system.cronjob.canAddCronjob')}
                        <nav class="largeButtons">
-                               <ul><li><a href="index.php?form=CronjobAdd{@SID_ARG_2ND}" title="{lang}wcf.acp.cronjob.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.cronjob.add{/lang}</span></a></li></ul>
+                               <ul><li><a href="index.php/CronjobAdd/{@SID_ARG_1ST}" title="{lang}wcf.acp.cronjob.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.cronjob.add{/lang}</span></a></li></ul>
                        </nav>
                {/if}
        </div>
index 3c45e9584193ee4cfb7b35ea8ac5504a57b1ce77..fa498b6e443ae25f48064646bb2805416b9f1124 100644 (file)
@@ -9,11 +9,11 @@
 </header>
 
 <div class="contentHeader">
-       {pages print=true assign=pagesLinks link="index.php?page=CronjobLogList&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+       {pages print=true assign=pagesLinks link="index.php/CronjobLogList/?pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
 </div>
 
 {hascontent}
-       <form method="post" action="index.php?action=CronjobLogDelete">
+       <form method="post" action="index.php/CronjobLogDelete/">
                <div class="border boxTitle">
                        <hgroup>
                                <h1>{lang}wcf.acp.cronjob.log{/lang} <span class="badge" title="{lang}wcf.acp.cronjob.log.count{/lang}">{#$items}</span></h1>
                        <table>
                                <thead>
                                        <tr>
-                                               <th class="columnID columnCronjobID{if $sortField == 'cronjobID'} active{/if}"><a href="index.php?page=CronjobLogList&amp;pageNo={@$pageNo}&amp;sortField=cronjobID&amp;sortOrder={if $sortField == 'cronjobID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'cronjobID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                               <th class="columnTitle columnClassName{if $sortField == 'className'} active{/if}"><a href="index.php?page=CronjobLogList&amp;pageNo={@$pageNo}&amp;sortField=className&amp;sortOrder={if $sortField == 'className' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.className{/lang}{if $sortField == 'className'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                               <th class="columnText columnDescription{if $sortField == 'description'} active{/if}"><a href="index.php?page=CronjobLogList&amp;pageNo={@$pageNo}&amp;sortField=description&amp;sortOrder={if $sortField == 'description' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.description{/lang}{if $sortField == 'description'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                               <th class="columnDate columnExecTime{if $sortField == 'execTime'} active{/if}"><a href="index.php?page=CronjobLogList&amp;pageNo={@$pageNo}&amp;sortField=execTime&amp;sortOrder={if $sortField == 'execTime' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.log.execTime{/lang}{if $sortField == 'execTime'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                               <th class="columnID columnCronjobID{if $sortField == 'cronjobID'} active{/if}"><a href="index.php/CronjobLogList/?pageNo={@$pageNo}&amp;sortField=cronjobID&amp;sortOrder={if $sortField == 'cronjobID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'cronjobID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                               <th class="columnTitle columnClassName{if $sortField == 'className'} active{/if}"><a href="index.php/CronjobLogList/?pageNo={@$pageNo}&amp;sortField=className&amp;sortOrder={if $sortField == 'className' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.className{/lang}{if $sortField == 'className'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                               <th class="columnText columnDescription{if $sortField == 'description'} active{/if}"><a href="index.php/CronjobLogList/?pageNo={@$pageNo}&amp;sortField=description&amp;sortOrder={if $sortField == 'description' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.description{/lang}{if $sortField == 'description'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                               <th class="columnDate columnExecTime{if $sortField == 'execTime'} active{/if}"><a href="index.php/CronjobLogList/?pageNo={@$pageNo}&amp;sortField=execTime&amp;sortOrder={if $sortField == 'execTime' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.cronjob.log.execTime{/lang}{if $sortField == 'execTime'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
                                                
                                                {if $additionalColumns|isset}{@$additionalColumns}{/if}
                                        </tr>
diff --git a/wcfsetup/install/files/acp/templates/detailedPackageList.tpl b/wcfsetup/install/files/acp/templates/detailedPackageList.tpl
new file mode 100644 (file)
index 0000000..4cd9a3e
--- /dev/null
@@ -0,0 +1,108 @@
+{include file='header'}
+
+<script type="text/javascript">
+       //<![CDATA[
+       $(function() {
+               WCF.Language.add('wcf.acp.package.view.button.uninstall.sure', '{lang}wcf.acp.package.view.button.uninstall.sure{/lang}');
+               
+               new WCF.ACP.PackageUninstallation($('.packageRow .uninstallButton'));
+       });
+       //]]>
+</script>
+
+<header class="mainHeading">
+       <img src="{@RELATIVE_WCF_DIR}icon/packageStandalone1.svg" alt="" />
+       <hgroup>
+               <h1>{lang}wcf.acp.package.list{/lang}</h1>
+       </hgroup>
+</header>
+
+<div class="contentHeader">
+       {pages print=true assign=pagesLinks link="index.php?page=DetailedPackageList&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+
+       {if $__wcf->session->getPermission('admin.system.package.canInstallPackage') || $additionalLargeButtons|isset}
+               <nav class="largeButtons">
+                       <ul>
+                               {if $__wcf->session->getPermission('admin.system.package.canInstallPackage')}<li><a href="index.php?form=PackageStartInstall&amp;action=install{@SID_ARG_2ND}" title="{lang}wcf.acp.package.startInstall{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.package.startInstall{/lang}</span></a></li>{/if}
+                               {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
+                       </ul>
+               </nav>
+       {/if}
+</div>
+
+{if $objects|count > 0}
+       <div class="border boxTitle">
+               <hgroup>
+                       <h1><a href="#">{lang}wcf.acp.package.list{/lang} <span class="badge" title="{lang}wcf.acp.package.list.count{/lang}">{#$items}</span></a></h1>
+               </hgroup>
+               
+               <table>
+                       <thead>
+                               <tr>
+                                       <th colspan="2" class="columnID{if $sortField == 'packageID'} active{/if}"><a href="index.php?page=DetailedPackageList&amp;pageNo={@$pageNo}&amp;sortField=packageID&amp;sortOrder={if $sortField == 'packageID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">      {lang}wcf.acp.package.list.id{/lang}{if $sortField == 'packageID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th colspan="2" class="columnTitle{if $sortField == 'packageName'} active{/if}"><a href="index.php?page=DetailedPackageList&amp;pageNo={@$pageNo}&amp;sortField=packageName&amp;sortOrder={if $sortField == 'packageName' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.package.list.name{/lang}{if $sortField == 'packageName'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnText{if $sortField == 'author'} active{/if}"><a href="index.php?page=DetailedPackageList&amp;pageNo={@$pageNo}&amp;sortField=author&amp;sortOrder={if $sortField == 'author' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.package.list.author{/lang}{if $sortField == 'author'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnText{if $sortField == 'packageVersion'}active{/if}"><a href="index.php?page=DetailedPackageList&amp;pageNo={@$pageNo}&amp;sortField=packageVersion&amp;sortOrder={if $sortField == 'packageVersion' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.package.list.version{/lang}{if $sortField == 'packageVersion'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate{if $sortField == 'updateDate'} active{/if}"><a href="index.php?page=DetailedPackageList&amp;pageNo={@$pageNo}&amp;sortField=updateDate&amp;sortOrder={if $sortField == 'updateDate' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.package.updateDate{/lang}{if $sortField == 'updateDate'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       
+                                       {if $additionalHeadColumns|isset}{@$additionalHeadColumns}{/if}
+                               </tr>
+                       </thead>
+                       
+                       <tbody>
+                               {foreach from=$objects item=$package}
+                                       <tr class="packageRow">
+                                               <td class="columnIcon">
+                                                       {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
+                                                               <a href="index.php?form=PackageStartInstall&amp;action=update&amp;packageID={@$package->packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a>
+                                                       {else}
+                                                               <img src="{@RELATIVE_WCF_DIR}icon/update1D.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" />
+                                                       {/if}
+                                                       {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage') && $package->package != 'com.woltlab.wcf' && $package->packageID != PACKAGE_ID}
+                                                               <img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" class="uninstallButton balloonTooltip" data-objectID="{@$package->packageID}" />
+                                                       {else}
+                                                               <img src="{@RELATIVE_WCF_DIR}icon/delete1D.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" />
+                                                       {/if}
+                                                       
+                                                       {if $additionalButtons[$package->packageID]|isset}{@$additionalButtons[$package->packageID]}{/if}
+                                               </td>
+                                               <td class="columnID"><p>{@$package->packageID}</p></td>
+                                               <td class="columnIcon">
+                                                       {if $package->standalone}
+                                                               <img src="{@RELATIVE_WCF_DIR}icon/packageStandalone1.svg" alt="" title="{lang}wcf.acp.package.list.standalone{/lang}" class="balloonTooltip" />
+                                                       {elseif $package->isPlugin()}
+                                                               <img src="{@RELATIVE_WCF_DIR}icon/packagePlugin1.svg" alt="" title="{lang}wcf.acp.package.list.plugin{/lang}" class="balloonTooltip" />
+                                                       {else}
+                                                               <img src="{@RELATIVE_WCF_DIR}icon/package1.svg" alt="" title="{lang}wcf.acp.package.list.other{/lang}" class="balloonTooltip" />
+                                                       {/if}
+                                               </td>
+                                               <td id="packageName{@$package->packageID}" class="columnTitle" title="{$package->packageDescription}">
+                                                       <a href="index.php?page=PackageView&amp;packageID={@$package->packageID}{@SID_ARG_2ND}"><span>{$package->getName()}{if $package->instanceNo > 1 && $package->instanceName == ''} (#{#$package->instanceNo}){/if}</span></a>
+                                               </td>
+                                               <td class="columnText><p>{if $package->authorURL}<a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$package->authorURL|rawurlencode}" class="externalURL">{$package->author}</a>{else}{$package->author}{/if}</p></td>
+                                               <td class="columnText"><p>{$package->packageVersion}</p></td>
+                                               <td class="columnDate"><p>{@$package->updateDate|time}</p></td>
+                                               
+                                               {if $additionalColumns[$package->packageID]|isset}{@$additionalColumns[$package->packageID]}{/if}
+                                       </tr>
+                               {/foreach}
+                       </tbody>
+               </table>
+               
+       </div>
+{/if}
+
+<div class="contentFooter">
+       {@$pagesLinks}
+       
+       {if $__wcf->session->getPermission('admin.system.package.canInstallPackage') || $additionalLargeButtons|isset}
+               <nav class="largeButtons">
+                       <ul>
+                               {if $__wcf->session->getPermission('admin.system.package.canInstallPackage')}<li><a href="index.php?form=PackageStartInstall&amp;action=install{@SID_ARG_2ND}" title="{lang}wcf.acp.package.startInstall{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.package.startInstall{/lang}</span></a></li>{/if}
+                               {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
+                       </ul>
+               </nav>
+       {/if}
+</div>
+
+{include file='footer'}
index f2d5879c60372e6d80a38c3d36129c16bf1a6baa..84457388011a39691419a00786adbf0c5c8d9ad1 100644 (file)
@@ -86,7 +86,7 @@
                                                        <li id="userMenu" class="userMenu"><!-- ToDo: We need an ID and/or class for each list here, this ID may also change! -->
                                                                <span class="dropdownCaption">{lang}wcf.acp.user.userNote{/lang}</span>
                                                                <ul class="dropdown">
-                                                                       <li><a href="{link}index.php?action=Logout&amp;t={@SECURITY_TOKEN}{/link}" onclick="return confirm('{lang}wcf.user.logout.sure{/lang}')">{lang}wcf.user.logout{/lang}</a></li>
+                                                                       <li><a href="{link}index.php/Logout/?t={@SECURITY_TOKEN}{/link}" onclick="return confirm('{lang}wcf.user.logout.sure{/lang}')">{lang}wcf.user.logout{/lang}</a></li>
                                                                </ul>
                                                        </li>
                                                </ul>
@@ -98,7 +98,7 @@
                        <!-- logo -->
                        <div id="logo" class="logo">
                                <!-- clickable area -->
-                               <a href="index.php{@SID_ARG_1ST}">
+                               <a href="{@SID_ARG_1ST}">
                                        <h1>WoltLab Community Framework 2.0 Pre-Alpha 1</h1>
                                        <img src="{@RELATIVE_WCF_DIR}acp/images/wcfLogoWhite.svg" width="300" height="58" alt="Product-logo" title="WoltLab Community Framework 2.0 Pre-Alpha 1" />
                                </a>
index 7385e6da0e317c2b480216beeb2046c06807e6ac..ec39993a27085805031487c53a64b29cb13470c1 100644 (file)
@@ -25,7 +25,7 @@
        <p class="error">{lang}wcf.global.form.error{/lang}</p>
 {/if}
 
-<form method="post" action="index.php?form=Login">
+<form method="post" action="index.php/Login/">
        <fieldset>
                <legend>{lang}wcf.user.login.data{/lang}</legend>
                
index 8cc71e7206f1caf5ccaeb26f097c4dfc10234d53..d3cea377fb8131403e75d356cf970e35ad35b6f7 100644 (file)
@@ -1,5 +1,13 @@
 {include file='header'}
 
+<script type="text/javascript">
+       //<![CDATA[
+       $(function() {
+               $('#masterPassword').focus();
+       });
+       //]]>
+</script>
+
 <header class="mainHeading">
        <img src="{@RELATIVE_WCF_DIR}icon/login1.svg" alt="" />
        <hgroup>
@@ -11,7 +19,7 @@
        <p class="error">{lang}wcf.global.form.error{/lang}</p>
 {/if}
 
-<form method="post" action="index.php?form=MasterPassword">
+<form method="post" action="index.php/MasterPassword/">
        <div class="border content">
                
                <fieldset>
        </div>
 </form>
 
-<script type="text/javascript">
-       //<![CDATA[
-       document.observe("dom:loaded", function() {
-               $('masterPassword').focus();
-       });
-       //]]>
-</script>
-
 {include file='footer'}
index 367c1bfc28b84cf5b3e285a11f6d5344cebc4f61..56b64e4314d3c4776e46145435e80d2a9f2cfadc 100644 (file)
@@ -23,7 +23,7 @@
        <p class="error">{lang}wcf.global.form.error{/lang}</p>
 {/if}
 
-<form method="post" action="index.php?form=MasterPasswordInit">
+<form method="post" action="index.php/MasterPasswordInit/">
        <div class="border content">
                
                <fieldset>
index 1998aa0d49a519ba661f0e7bc6088906c8041c7f..7836af9466d66ada177107a2aa67b7e0030c8374 100644 (file)
@@ -25,7 +25,7 @@
        <p class="error">{lang}wcf.global.form.error{/lang}</p>
 {/if}
 
-<form method="post" action="index.php?form=Option&amp;categoryID={@$category->categoryID}">
+<form method="post" action="index.php/Option/{@$category->categoryID}/">
        <div data-active="{$activeTabMenuItem}" data-store="activeTabMenuItem" class="tabMenuContainer">
                <nav class="tabMenu">
                        <ul>
index 2065d1cbd81e2578607d1fe71dc6492d0b1ed58d..d0f612ad967594a08145201d0561f66114b74028 100644 (file)
@@ -15,7 +15,7 @@
        <p class="error">{lang}wcf.global.form.error{/lang}</p>
 {/if}
 
-<form method="post" action="index.php?form=OptionImport" enctype="multipart/form-data">
+<form method="post" action="index.php/OptionImport/" enctype="multipart/form-data">
        <div>
                
                <fieldset>
@@ -64,7 +64,7 @@
                <dl id="optionExportDiv">
                        <dt><label>{lang}wcf.acp.option.export.download{/lang}</label></dt>
                        <dd>
-                               <p><a href="index.php?action=OptionExport{@SID_ARG_2ND}" id="optionExport" class="badge badgeButton">{lang}wcf.acp.option.export{/lang}</a></p>
+                               <p><a href="index.php/OptionExport/{@SID_ARG_1ST}" id="optionExport" class="badge badgeButton">{lang}wcf.acp.option.export{/lang}</a></p>
                                <small>{lang}wcf.acp.option.export.download.description{/lang}</small>
                        </dd>
                </dl>
index c311faa27ffdb4214df366e493e4d7980e0e1560..a6acec38bcf85a764879c1046f44f8b38f7db549 100644 (file)
@@ -21,7 +21,7 @@
        //]]>
 </script>
 
-<form method="post" action="index.php?form=PackageUpdate" id="updateForm">
+<form method="post" action="index.php/PackageUpdate/" id="updateForm">
        <header class="mainHeading">
                <img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" />
                <hgroup>
index d81c0c4d69cc4a149ca2632d614b914ed20eb2b0..7a8ec4a5bc50921104b7543fe5f2a4f0de63651d 100644 (file)
@@ -93,7 +93,7 @@
                        <tbody>
                        {foreach from=$updatableInstances item=$package}
                                <tr>
-                                       <td class="columnTitle"><p><a href="index.php?page=Package&amp;action=install&amp;queueID={@$queueID}&amp;step=changeToUpdate&amp;packageID={@$package.packageID}{@SID_ARG_2ND}">{$package.packageName}{if $package.instanceNo > 1 && $package.instanceName == ''} (#{#$package.instanceNo}){/if}</a></p></td>
+                                       <td class="columnTitle"><p><a href="index.php/Package/?action=install&amp;queueID={@$queueID}&amp;step=changeToUpdate&amp;packageID={@$package.packageID}{@SID_ARG_2ND}">{$package.packageName}{if $package.instanceNo > 1 && $package.instanceName == ''} (#{#$package.instanceNo}){/if}</a></p></td>
                                        <td class="columnDigits"><p>{$package.packageVersion}</p></td>
                                </tr>
                        {/foreach}
 {/if}
 
 <div class="formSubmit">
-       <input type="button" onclick="document.location.href=fixURL('index.php?page=Package&amp;action={@$action}&amp;queueID={@$queueID}&amp;step=cancel{@SID_ARG_2ND}')" value="{lang}wcf.global.button.back{/lang}" accesskey="c" />
+       <input type="button" onclick="document.location.href=fixURL('index.php/Package/?action={@$action}&amp;queueID={@$queueID}&amp;step=cancel{@SID_ARG_2ND}')" value="{lang}wcf.global.button.back{/lang}" accesskey="c" />
        {if $missingPackages == 0 && $excludingPackages|count == 0 && $excludedPackages|count == 0}
                <input type="button" id="submitButton" value="{lang}wcf.global.button.next{/lang}" class="default" accesskey="s" />
        {/if}
index 975e53f60a8eb24dbd853330a37a09b54556028b..02829605c274bb037dbefac72882cb50de026820 100644 (file)
@@ -1,12 +1,16 @@
 {include file='header'}
 
-<script type="text/javascript" src="{@RELATIVE_WCF_DIR}js/MultiPagesLinks.class.js"></script>
 <script type="text/javascript">
        //<![CDATA[
        $(function() {
-               WCF.Language.add('wcf.acp.package.view.button.uninstall.sure', '{lang}wcf.acp.package.view.button.uninstall.sure{/lang}');
-               
-               new WCF.ACP.PackageUninstallation($('.packageRow .uninstallButton'));
+               WCF.TabMenu.init();
+
+               WCF.Language.add('wcf.acp.package.view.button.uninstall.sure', 'wcf.acp.package.view.button.uninstall.sure');
+               new WCF.ACP.PackageUninstallation($('.package .uninstallButton'));
+
+               {if $pluginsCount > 1}
+                       new WCF.ACP.Package.List({@($pluginsCount / 1)|ceil});
+               {/if}
        });
        //]]>
 </script>
        </hgroup>
 </header>
 
-<div class="contentHeader">
-       {pages print=true assign=pagesLinks link="index.php?page=PackageList&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
-
-       {if $__wcf->session->getPermission('admin.system.package.canInstallPackage') || $additionalLargeButtons|isset}
-               <nav class="largeButtons">
-                       <ul>
-                               {if $__wcf->session->getPermission('admin.system.package.canInstallPackage')}<li><a href="index.php?form=PackageStartInstall&amp;action=install{@SID_ARG_2ND}" title="{lang}wcf.acp.package.startInstall{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.package.startInstall{/lang}</span></a></li>{/if}
-                               {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
-                       </ul>
-               </nav>
-       {/if}
-</div>
+<div class="tabMenuContainer">
+       <nav class="tabMenu">
+               <ul>
+                       <li><a href="#applications" title="applications">applications</a></li>
+                       {if $plugins|count}<li><a href="#plugins" title="plugins">plugins</a></li>{/if}
+               </ul>
+       </nav>
 
-{if $objects|count > 0}
-       <div class="border boxTitle">
-               <hgroup>
-                       <h1><a href="#">{lang}wcf.acp.package.list{/lang} <span class="badge" title="{lang}wcf.acp.package.list.count{/lang}">{#$items}</span></a></h1>
+       <div id="applications" class="border tabMenuContent hidden">
+               <hgroup class="subHeading">
+                       <h1>installed applications</h1>
                </hgroup>
-               
-               <table>
-                       <thead>
-                               <tr>
-                                       <th colspan="2" class="columnID{if $sortField == 'packageID'} active{/if}"><a href="index.php?page=PackageList&amp;pageNo={@$pageNo}&amp;sortField=packageID&amp;sortOrder={if $sortField == 'packageID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">      {lang}wcf.acp.package.list.id{/lang}{if $sortField == 'packageID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th colspan="2" class="columnTitle{if $sortField == 'packageName'} active{/if}"><a href="index.php?page=PackageList&amp;pageNo={@$pageNo}&amp;sortField=packageName&amp;sortOrder={if $sortField == 'packageName' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.package.list.name{/lang}{if $sortField == 'packageName'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnText{if $sortField == 'author'} active{/if}"><a href="index.php?page=PackageList&amp;pageNo={@$pageNo}&amp;sortField=author&amp;sortOrder={if $sortField == 'author' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.package.list.author{/lang}{if $sortField == 'author'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnText{if $sortField == 'packageVersion'}active{/if}"><a href="index.php?page=PackageList&amp;pageNo={@$pageNo}&amp;sortField=packageVersion&amp;sortOrder={if $sortField == 'packageVersion' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.package.list.version{/lang}{if $sortField == 'packageVersion'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate{if $sortField == 'updateDate'} active{/if}"><a href="index.php?page=PackageList&amp;pageNo={@$pageNo}&amp;sortField=updateDate&amp;sortOrder={if $sortField == 'updateDate' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.package.updateDate{/lang}{if $sortField == 'updateDate'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       
-                                       {if $additionalHeadColumns|isset}{@$additionalHeadColumns}{/if}
-                               </tr>
-                       </thead>
-                       
-                       <tbody>
-                               {foreach from=$objects item=$package}
-                                       <tr class="packageRow">
-                                               <td class="columnIcon">
-                                                       {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
-                                                               <a href="index.php?form=PackageStartInstall&amp;action=update&amp;packageID={@$package->packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a>
-                                                       {else}
-                                                               <img src="{@RELATIVE_WCF_DIR}icon/update1D.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" />
-                                                       {/if}
-                                                       {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage') && $package->package != 'com.woltlab.wcf' && $package->packageID != PACKAGE_ID}
-                                                               <img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" class="uninstallButton balloonTooltip" data-objectID="{@$package->packageID}" />
-                                                       {else}
-                                                               <img src="{@RELATIVE_WCF_DIR}icon/delete1D.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" />
-                                                       {/if}
-                                                       
-                                                       {if $additionalButtons[$package->packageID]|isset}{@$additionalButtons[$package->packageID]}{/if}
-                                               </td>
-                                               <td class="columnID"><p>{@$package->packageID}</p></td>
-                                               <td class="columnIcon">
-                                                       {if $package->standalone}
-                                                               <img src="{@RELATIVE_WCF_DIR}icon/packageStandalone1.svg" alt="" title="{lang}wcf.acp.package.list.standalone{/lang}" class="balloonTooltip" />
-                                                       {elseif $package->isPlugin()}
-                                                               <img src="{@RELATIVE_WCF_DIR}icon/packagePlugin1.svg" alt="" title="{lang}wcf.acp.package.list.plugin{/lang}" class="balloonTooltip" />
-                                                       {else}
-                                                               <img src="{@RELATIVE_WCF_DIR}icon/package1.svg" alt="" title="{lang}wcf.acp.package.list.other{/lang}" class="balloonTooltip" />
-                                                       {/if}
-                                               </td>
-                                               <td id="packageName{@$package->packageID}" class="columnTitle" title="{$package->packageDescription}">
-                                                       <a href="index.php?page=PackageView&amp;packageID={@$package->packageID}{@SID_ARG_2ND}"><span>{$package->getName()}{if $package->instanceNo > 1 && $package->instanceName == ''} (#{#$package->instanceNo}){/if}</span></a>
-                                               </td>
-                                               <td class="columnText><p>{if $package->authorURL}<a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$package->authorURL|rawurlencode}" class="externalURL">{$package->author}</a>{else}{$package->author}{/if}</p></td>
-                                               <td class="columnText"><p>{$package->packageVersion}</p></td>
-                                               <td class="columnDate"><p>{@$package->updateDate|time}</p></td>
-                                               
-                                               {if $additionalColumns[$package->packageID]|isset}{@$additionalColumns[$package->packageID]}{/if}
-                                       </tr>
-                               {/foreach}
-                       </tbody>
-               </table>
-               
+
+               {foreach from=$applications key=packageID item=package}
+                       <fieldset>
+                               <legend>{$package->getName()}</legend>
+
+                               &lt;gimme sum icon&gt;
+
+                               <dl>
+                                       <dt>package</dt>
+                                       <dd>{$package->package}</dd>
+                               </dl>
+                               <dl>
+                                       <dt>installed version</dt>
+                                       <dd>{$package->packageVersion}</dd>
+                               </dl>
+                               <dl>
+                                       <dt>create date</dt>
+                                       <dd>{$package->packageDate|date}</dd>
+                               </dl>
+                               <dl>
+                                       <dt>install date</dt>
+                                       <dd>{@$package->installDate|time}</dd>
+                               </dl>
+                               <dl>
+                                       <dt>update date</dt>
+                                       <dd>{@$package->updateDate|time}</dd>
+                               </dl>
+                               <dl>
+                                       <dt>creator</dt>
+                                       <dd>{if $package->authorURL}<a href="dereferrer.php?url={$package->authorURL|rawurlencode}">{/if}{$package->author}{if $package->authorURL}</a>{/if}</dd>
+                               </dl>
+
+                               <div style="text-align: right;">
+                                       <ul>
+                                               <li style="display: inline-block;"><a href="index.php/PackageView/{@$packageID}/{@SID_ARG_1ST}">details</a></li>
+                                               <li style="display: inline-block;"><a href="index.php/PackageStartInstall/{@$packageID}/?action=update{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a></li>
+                                       </ul>
+                               </div>
+                       </fieldset>
+               {/foreach}
        </div>
-{/if}
+
+       {hascontent}
+               <div id="plugins" class="border tabMenuContent hidden">
+                       <hgroup class="subHeading">
+                               <h1>installed plugins</h1>
+                       </hgroup>
+
+                       <div class="pluginList"></div>
+
+                       <ol>
+                               {content}
+                                       {include file='packageListPlugins'}
+                               {/content}
+                       </ol>
+
+                       <div class="pluginList"></div>
+               </div>
+       {/hascontent}
+</div>
 
 <div class="contentFooter">
-       {@$pagesLinks}
-       
-       {if $__wcf->session->getPermission('admin.system.package.canInstallPackage') || $additionalLargeButtons|isset}
-               <nav class="largeButtons">
-                       <ul>
-                               {if $__wcf->session->getPermission('admin.system.package.canInstallPackage')}<li><a href="index.php?form=PackageStartInstall&amp;action=install{@SID_ARG_2ND}" title="{lang}wcf.acp.package.startInstall{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.package.startInstall{/lang}</span></a></li>{/if}
-                               {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
-                       </ul>
-               </nav>
-       {/if}
+       <nav class="largeButtons">
+               <ul>
+                       <li><a href="index.php/DetailedPackageList/{@SID_ARG_1ST}">detailed package list</a></li>
+               </ul>
+       </nav>
 </div>
 
 {include file='footer'}
diff --git a/wcfsetup/install/files/acp/templates/packageListPlugins.tpl b/wcfsetup/install/files/acp/templates/packageListPlugins.tpl
new file mode 100644 (file)
index 0000000..9869260
--- /dev/null
@@ -0,0 +1,12 @@
+{foreach from=$plugins key=packageID item=package}
+       <li class="package" style="border: 1px solid rgb(192, 192, 192); display: inline-block; text-align: center; width: 150px;">
+               <a href="index.php/PackageView/{@$packageID}{@SID_ARG_1ST}">
+                       <span style="border-bottom: 1px solid rgb(192, 192, 192); display: block;">{$package->getName()}</span>
+                       <img src="http://s-ak.buzzfed.com/static/enhanced/web05/2011/3/18/1/enhanced-buzz-15854-1300424464-1.jpg" alt="" style="width: 100px;" />
+               </a>
+               <ul style="text-align: right;">
+                       <li style="display: inline-block;"><a href="index.php?form=PackageStartInstall&amp;action=update&amp;packageID={@$packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a></li>
+                       <li style="display: inline-block;"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" class="uninstallButton balloonTooltip" data-objectID="{@$package->packageID}" /></li>
+               </ul>
+       </li>
+{/foreach}
index 34b2c3bda38733778c885bd460a8dc3998ab0df8..342e5e11fb4d593ac9d9b9b0252c30dce29a4051 100644 (file)
 <div class="contentHeader">
        <nav class="largeButtons">
                <ul>
-                       <li><a href="index.php?page=PackageList{@SID_ARG_2ND}" title="{lang}wcf.acp.menu.link.package.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/package1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.package.list{/lang}</span></a></li>
+                       <li><a href="index.php/PackageList/{@SID_ARG_1ST}" title="{lang}wcf.acp.menu.link.package.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/package1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.package.list{/lang}</span></a></li>
                        {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                </ul>
        </nav>
 </div>
 
-<form method="post" action="index.php?form=PackageStartInstall" enctype="multipart/form-data">
+<form method="post" action="index.php/PackageStartInstall/" enctype="multipart/form-data">
        <div class="border content">
                
                <fieldset>
@@ -75,7 +75,7 @@
                <input type="submit" name="submitButton" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />
                {@SID_INPUT_TAG}
                <input type="hidden" name="action" value="{$action}" />
-               {if $packageID != 0}<input type="hidden" name="packageID" value="{@$packageID}" />{/if}
+               {if $packageID != 0}<input type="hidden" name="id" value="{@$packageID}" />{/if}
        </div>
 </form>
 
index 4a062eff0c3dcbca929c9d6e90b28e4b17a426c0..e481080b6e95dd74fc12f0a3fb79fbb80ec54271 100644 (file)
@@ -52,7 +52,7 @@
        {if $packageObj->parentPackageID}
                <dl>
                        <dt>{lang}wcf.acp.package.view.parent{/lang}</dt>
-                       <dd><a href="index.php?page=PackageView&amp;packageID={@$packageObj->parentPackageID}{@SID_ARG_2ND}">{$packageObj->getParentPackage()->getName()}</a></dd>
+                       <dd><a href="index.php/PackageView/{@$packageObj->parentPackageID}/{@SID_ARG_1ST}">{$packageObj->getParentPackage()->getName()}</a></dd>
                </dl>
        {/if}
        <dl>
                                <tr>
                                        <td class="columnIcon">
                                                {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
-                                                       <a href="index.php?form=PackageStartInstall&amp;action=update&amp;packageID={@$package.packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a>
+                                                       <a href="index.php/PackageStartInstall/{@$package.packageID}/?action=update{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a>
                                                {else}
                                                        <img src="{@RELATIVE_WCF_DIR}icon/updateD1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" />
                                                {/if}
                                                {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage') && $package.package != 'com.woltlab.wcf' && $package.packageID != PACKAGE_ID}
-                                                       <a onclick="return confirm('{lang}wcf.acp.package.view.button.uninstall.sure{/lang}')" href="index.php?page=Package&amp;action=startUninstall&amp;packageID={@$package.packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" class="balloonTooltip" /></a>
+                                                       <a onclick="return confirm('{lang}wcf.acp.package.view.button.uninstall.sure{/lang}')" href="index.php/Package/{@$package.packageID}/?action=startUninstall{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" class="balloonTooltip" /></a>
                                                {else}
                                                        <img src="{@RELATIVE_WCF_DIR}icon/deleteD1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" />
                                                {/if}
                                                        <img src="{@RELATIVE_WCF_DIR}icon/package1.svg" alt="" title="{lang}wcf.acp.package.list.other{/lang}" class="balloonTooltip" />
                                                {/if}
                                        </td>
-                                       <td class="columnTitle" title="{$package.packageDescription}"><p><a href="index.php?page=PackageView&amp;packageID={@$package.packageID}{@SID_ARG_2ND}">{$package.packageName}{if $package.instanceNo > 1 && $package.instanceName == ''} (#{#$package.instanceNo}){/if}</a></p></td>
+                                       <td class="columnTitle" title="{$package.packageDescription}"><p><a href="index.php/PackageView/{@$package.packageID}/{@SID_ARG_1ST}">{$package.packageName}{if $package.instanceNo > 1 && $package.instanceName == ''} (#{#$package.instanceNo}){/if}</a></p></td>
                                        <td class="columnText"><p>{if $package.authorURL}<a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$package.authorURL|rawurlencode}" class="externalURL">{$package.author}</a>{else}{$package.author}{/if}</p></td>
                                        <td class="columnText"><p>{$package.packageVersion}</p></td>
                                        <td class="columnDate"><p>{@$package.packageDate|date}</p></td>
        <input type="hidden" name="action" value="startUninstall" />
        <input type="hidden" name="packageID" value="{@$packageObj->packageID}" />
        <input type="hidden" name="send" value="1" />
-       <input type="button" value="{lang}wcf.global.button.back{/lang}" onclick="document.location.href=fixURL('index.php?page=PackageView&amp;packageID={@$packageID}{@SID_ARG_2ND}')" accesskey="c" />
+       <input type="button" value="{lang}wcf.global.button.back{/lang}" onclick="document.location.href=fixURL('index.php/PackageView/{@$packageID}/{@SID_ARG_1ST}')" accesskey="c" />
        <input type="button" id="uninstallPackage" value="{lang}wcf.global.button.next{/lang}" class="default" accesskey="s" />
 </div>
 
index a15cd3a7261e19f90ac6d7cce36e0cb4ca275a6d..69b4af38b5fa0e9745120caa11f24dad9b2d7e96 100644 (file)
@@ -27,7 +27,7 @@
 {/if}
 
 {if $packageInstallationStack|count}
-       <form method="post" action="index.php?form=PackageUpdate">
+       <form method="post" action="index.php/PackageUpdate/">
                <div class="border content">
                        
                        <fieldset>
index 668aa23b001660ce9bcbaa0c258ba1ce5751543d..7436b0a6ab5a5271287832908adb55af3b27431e 100644 (file)
@@ -74,7 +74,7 @@
                <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />
                <input type="hidden" name="form" value="PackageUpdateAuth" />
                {@SID_INPUT_TAG}
-               <input type="hidden" name="packageUpdateServerID" value="{@$packageUpdateServerID}" />
+               <input type="hidden" name="id" value="{@$packageUpdateServerID}" />
                {@$postParameters}
        </div>
 </form>
index 5c378887f5a0bc525f61fc69cd29d149fba00e6b..1320656cb0771884e7e34f601aba82b395e928e5 100644 (file)
@@ -51,7 +51,7 @@
 {if !$updateServers|count}
        <p class="warning">{lang}wcf.acp.updateServer.view.noneAvailable{/lang}</p>
 {else}
-       <form method="post" action="index.php?form=PackageUpdateSearch">
+       <form method="post" action="index.php/PackageUpdateSearch/">
                <div class="border content">
                        
                        <fieldset>
index ec7983ce20ff5ee8941cd5d118e68cbc6550048b..d333d585552d35af87bca87a2598ee23807207bc 100644 (file)
 </header>
 
 <div class="contentHeader">
-       {pages print=true assign=pagesLinks link="index.php?page=PackageUpdateSearchResult&searchID=$searchID&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+       {pages print=true assign=pagesLinks link="index.php/PackageUpdateSearchResult/$searchID/?pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
 </div>
 
-<form method="post" action="index.php?form=PackageUpdate">
+<form method="post" action="index.php/PackageUpdate/">
        {foreach from=$packages item=package}
                <article class="message content">
                        <div class="messageInner container-{cycle name='styles' values='1,2'}">
        <div class="formSubmit">
                <input type="reset" value="{lang}wcf.global.button.reset{/lang}" accesskey="r" />
                <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />
-               <input type="hidden" name="packageID" value="{@PACKAGE_ID}" />
                {@SID_INPUT_TAG}
-               <input type="hidden" name="searchID" value="{@$searchID}" />
+               <input type="hidden" name="id" value="{@$searchID}" />
        </div>
 </form>
 
index f0cb08e4799f6854de51c055ef146e9132bb9e4c..1f2ec4a3af3f7bdfeba74dea739f5e90f6ebeeff 100644 (file)
@@ -3,11 +3,7 @@
 <script type="text/javascript">
        //<![CDATA[
        $(function() {
-               WCF.Icon.addObject({
-                       'wcf.global.opened': '{@RELATIVE_WCF_DIR}icon/opened2.svg',
-                       'wcf.global.closed': '{@RELATIVE_WCF_DIR}icon/closed2.svg'
-               });
-               WCF.Collapsible.Simple.init();
+               WCF.TabMenu.init()
        });
        //]]>
 </script>
        </hgroup>
 </header>
 
-<fieldset>
-       <legend>{lang}wcf.acp.package.view.properties{/lang}</legend>
+<div class="tabMenuContainer">
+       <nav class="tabMenu">
+               <ul>
+                       <li><a href="#overview">overview</a></li>
+                       {if $requiredPackages|count || $dependentPackages|count}<li><a href="#dependencies">dependencies</a></li>{/if}
+               </ul>
+       </nav>
+
+       <div id="overview" class="border tabMenuContent hidden">
+               <hgroup class="subHeading">
+                       <h1>information</h1>
+               </hgroup>
+
+               <fieldset>
+                       <legend>{lang}wcf.acp.package.view.properties{/lang}</legend>
        
-       <dl>
-               <dt>{lang}wcf.acp.package.view.identifier{/lang}</dt>
-               <dd>{$package->package}</dd>
-       </dl>
-       <dl>
-               <dt>{lang}wcf.acp.package.view.version{/lang}</dt>
-               <dd>{$package->packageVersion}</dd>
-       </dl>
-       {if $package->instanceNo > 1}
-               <dl>
-                       <dt>{lang}wcf.acp.package.view.instanceNo{/lang}</dt>
-                       <dd>{#$package->instanceNo}</dd>
-               </dl>
-       {elseif $package->package == 'com.woltlab.wcf' && WCF_N != 1}
-               <dl>
-                       <dt>{lang}wcf.acp.package.view.instanceNo{/lang}</dt>
-                       <dd>{#WCF_N}</dd>
-               </dl>
-       {/if}
-       {if $package->packageDir != ''}
-               <dl>
-                       <dt>{lang}wcf.acp.package.view.dir{/lang}</dt>
-                       <dd><a href="{@RELATIVE_WCF_DIR}{$package->packageDir}">{$package->packageDir}</a></dd>
-               </dl>
-       {elseif $package->package == 'com.woltlab.wcf'}
-               <dl>
-                       <dt>{lang}wcf.acp.package.view.dir{/lang}</dt>
-                       <dd>{WCF_DIR}</dd>
-               </dl>
-       {/if}
-       <dl>
-               <dt>{lang}wcf.acp.package.view.date{/lang}</dt>
-               <dd>{@$package->packageDate|date}</dd>
-       </dl>
-       <dl>
-               <dt>{lang}wcf.acp.package.installDate{/lang}</dt>
-               <dd>{@$package->installDate|time}</dd>
-       </dl>
-       <dl>
-               <dt>{lang}wcf.acp.package.updateDate{/lang}</dt>
-               <dd>{@$package->updateDate|time}</dd>
-       </dl>
-       {if $package->packageURL != ''}
-               <dl>
-                       <dt>{lang}wcf.acp.package.view.url{/lang}</dt>
-                       <dd><a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$package->packageURL|rawurlencode}" class="externalURL">{$package->packageURL}</a></dd>
-               </dl>
-       {/if}
-       {if $package->parentPackageID}
-               <dl>
-                       <dt>{lang}wcf.acp.package.view.parent{/lang}</dt>
-                       <dd><a href="index.php?page=PackageView&amp;packageID={@$package->parentPackageID}{@SID_ARG_2ND}">{$package->getParentPackage()->getName()}</a></dd>
-               </dl>
-       {/if}
-       <dl>
-               <dt>{lang}wcf.acp.package.view.author{/lang}</dt>
-               <dd>{if $package->authorURL}<a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$package->authorURL|rawurlencode}" class="externalURL">{$package->author}</a>{else}{$package->author}{/if}</dd>
-       </dl>
+                       <dl>
+                               <dt>{lang}wcf.acp.package.view.identifier{/lang}</dt>
+                               <dd>{$package->package}</dd>
+                       </dl>
+                       <dl>
+                               <dt>{lang}wcf.acp.package.view.version{/lang}</dt>
+                               <dd>{$package->packageVersion}</dd>
+                       </dl>
+                       {if $package->instanceNo > 1}
+                               <dl>
+                                       <dt>{lang}wcf.acp.package.view.instanceNo{/lang}</dt>
+                                       <dd>{#$package->instanceNo}</dd>
+                               </dl>
+                       {elseif $package->package == 'com.woltlab.wcf' && WCF_N != 1}
+                               <dl>
+                                       <dt>{lang}wcf.acp.package.view.instanceNo{/lang}</dt>
+                                       <dd>{#WCF_N}</dd>
+                               </dl>
+                       {/if}
+                       {if $package->packageDir != ''}
+                               <dl>
+                                       <dt>{lang}wcf.acp.package.view.dir{/lang}</dt>
+                                       <dd><a href="{@RELATIVE_WCF_DIR}{$package->packageDir}">{$package->packageDir}</a></dd>
+                               </dl>
+                       {elseif $package->package == 'com.woltlab.wcf'}
+                               <dl>
+                                       <dt>{lang}wcf.acp.package.view.dir{/lang}</dt>
+                                       <dd>{WCF_DIR}</dd>
+                               </dl>
+                       {/if}
+                       <dl>
+                               <dt>{lang}wcf.acp.package.view.date{/lang}</dt>
+                               <dd>{@$package->packageDate|date}</dd>
+                       </dl>
+                       <dl>
+                               <dt>{lang}wcf.acp.package.installDate{/lang}</dt>
+                               <dd>{@$package->installDate|time}</dd>
+                       </dl>
+                       <dl>
+                               <dt>{lang}wcf.acp.package.updateDate{/lang}</dt>
+                               <dd>{@$package->updateDate|time}</dd>
+                       </dl>
+                       {if $package->packageURL != ''}
+                               <dl>
+                                       <dt>{lang}wcf.acp.package.view.url{/lang}</dt>
+                                       <dd><a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$package->packageURL|rawurlencode}" class="externalURL">{$package->packageURL}</a></dd>
+                               </dl>
+                       {/if}
+                       {if $package->parentPackageID}
+                               <dl>
+                                       <dt>{lang}wcf.acp.package.view.parent{/lang}</dt>
+                                       <dd><a href="index.php/PackageView/{@$package->parentPackageID}/{@SID_ARG_1ST}">{$package->getParentPackage()->getName()}</a></dd>
+                               </dl>
+                       {/if}
+                       <dl>
+                               <dt>{lang}wcf.acp.package.view.author{/lang}</dt>
+                               <dd>{if $package->authorURL}<a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$package->authorURL|rawurlencode}" class="externalURL">{$package->author}</a>{else}{$package->author}{/if}</dd>
+                       </dl>
        
-       {if $additionalFields|isset}{@$additionalFields}{/if}
-</fieldset>
+                       {if $additionalFields|isset}{@$additionalFields}{/if}
+               </fieldset>
+
+               {if $package->packageDescription}
+                       <hgroup class="subHeading">
+                               <h1>description</h1>
+                       </hgroup>
+
+                       <p>{$package->packageDescription}</p>
+               {/if}
+       </div>
+
+       {if $requiredPackages|count || $dependentPackages|count}
+               <div id="dependencies" class="tabMenuContainer border tabMenuContent">
+                       <nav class="menu">
+                               <ul>
+                                       {if $requiredPackages|count}<li><a href="#dependencies-required">required</a></li>{/if}
+                                       {if $dependentPackages|count}<li><a href="#dependencies-dependent">dependent</a></li>{/if}
+                               </ul>
+                       </nav>
+
+                       {hascontent}
+                               <div id="dependencies-required" class="hidden">
+                                       <hgroup class="subHeading">
+                                               <h1>{lang}wcf.acp.package.view.requiredPackages{/lang}</h1>
+                                               <h2>{lang}wcf.acp.package.view.requiredPackages.description{/lang}</h2>
+                                       </hgroup>
+               
+                                       <table>
+                                               <thead>
+                                                       <tr class="tableHead">
+                                                               <th colspan="2" class="columnID">{lang}wcf.acp.package.list.id{/lang}</th>
+                                                               <th colspan="2" class="columnTitle">{lang}wcf.acp.package.list.name{/lang}</th>
+                                                               <th class="columnText">{lang}wcf.acp.package.list.author{/lang}</th>
+                                                               <th class="columnText">{lang}wcf.acp.package.list.version{/lang}</th>
+                                                               <th class="columnDigits">{lang}wcf.acp.package.list.date{/lang}</th>
+                                       
+                                                               {if $additionalColumns|isset}{@$additionalColumns}{/if}
+                                                       </tr>
+                                               </thead>
+                       
+                                               <tbody>
+                                                       {content}
+                                                               {foreach from=$requiredPackages item=requiredPackage}
+                                                                       <tr>
+                                                                               <td class="columnIcon">
+                                                                                       {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
+                                                                                               <a href="index.php/PackageStartInstall/{@$requiredPackage.packageID}/?action=update{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a>
+                                                                                       {else}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/update1D.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" />
+                                                                                       {/if}
+                                                                                       {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage') && $requiredPackage.package != 'com.woltlab.wcf' && $requiredPackage.packageID != PACKAGE_ID}
+                                                                                               <a onclick="return confirm('{lang}wcf.acp.package.view.button.uninstall.sure{/lang}')" href="index.php/Package/?action=startUninstall&amp;packageID={@$requiredPackage.packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" class="balloonTooltip" /></a>
+                                                                                       {else}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/delete1D.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" />
+                                                                                       {/if}
+                                                                               </td>
+                                                                               <td class="columnID"><p>{@$requiredPackage.packageID}</p></td>
+                                                                               <td class="columnIcon">
+                                                                                       {if $requiredPackage.standalone}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/packageStandalone1.svg" alt="" title="{lang}wcf.acp.package.list.standalone{/lang}" class="balloonTooltip" />
+                                                                                       {elseif $requiredPackage.parentPackageID}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/packagePlugin1.svg" alt="" title="{lang}wcf.acp.package.list.plugin{/lang}" class="balloonTooltip" />
+                                                                                       {else}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/package1.svg" alt="" title="{lang}wcf.acp.package.list.other{/lang}" class="balloonTooltip" />
+                                                                                       {/if}
+                                                                               </td>
+                                                                               <td class="columnText" title="{$requiredPackage.packageDescription}"><p><a href="index.php/PackageView/{@$requiredPackage.packageID}/{@SID_ARG_1ST}">{$requiredPackage.packageName}{if $requiredPackage.instanceNo > 1 && $requiredPackage.instanceName == ''} (#{#$requiredPackage.instanceNo}){/if}</a></p></td>
+                                                                               <td class="columnText">{if $requiredPackage.authorURL}<p><a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$requiredPackage.authorURL|rawurlencode}" class="externalURL">{$requiredPackage.author}</a>{else}{$requiredPackage.author}</p>{/if}</td>
+                                                                               <td class="columnText"><p>{$requiredPackage.packageVersion}</p></td>
+                                                                               <td class="columnDate"><p>{@$requiredPackage.packageDate|date}</p></td>
+                                                                       </tr>
+                                                               {/foreach}
+                                                       {/content}
+                                               </tbody>
+                                       </table>
+                               </div>
+                       {/hascontent}
+
+                       {hascontent}
+                               <div id="dependencies-dependent" class="hidden">
+                                       <hgroup class="subHeading">
+                                               <h1>{lang}wcf.acp.package.view.dependentPackages{/lang}</h1>
+                                               <h2>{lang}wcf.acp.package.view.dependentPackages.description{/lang}</h2>
+                                       </hgroup>
+               
+                                       <table>
+                                               <thead>
+                                                       <tr class="tableHead">
+                                                               <th colspan="2">{lang}wcf.acp.package.list.id{/lang}</th>
+                                                               <th colspan="2">{lang}wcf.acp.package.list.name{/lang}</th>
+                                                               <th>{lang}wcf.acp.package.list.author{/lang}</th>
+                                                               <th>{lang}wcf.acp.package.list.version{/lang}</th>
+                                                               <th>{lang}wcf.acp.package.list.date{/lang}</th>
+                                       
+                                                               {if $additionalColumns|isset}{@$additionalColumns}{/if}
+                                                       </tr>
+                                               </thead>
+                       
+                                               <tbody>
+                                                       {content}
+                                                               {foreach from=$dependentPackages item=dependentPackage}
+                                                                       <tr>
+                                                                               <td class="columnIcon">
+                                                                                       {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
+                                                                                               <a href="index.php/PackageStartInstall/{@$dependentPackage.packageID}/?action=update{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a>
+                                                                                       {else}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/update1D.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" />
+                                                                                       {/if}
+                                                                                       {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage') && $dependentPackage.package != 'com.woltlab.wcf' && $dependentPackage.packageID != PACKAGE_ID}
+                                                                                               <a onclick="return confirm('{lang}wcf.acp.package.view.button.uninstall.sure{/lang}')" href="index.php/Package/?action=startUninstall&amp;packageID={@$dependentPackage.packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" class="balloonTooltip" /></a>
+                                                                                       {else}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/delete1D.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" />
+                                                                                       {/if}
+                                                                               </td>
+                                                                               <td class="columnID"><p>{@$dependentPackage.packageID}</p></td>
+                                                                               <td class="columnIcon">
+                                                                                       {if $dependentPackage.standalone}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/packageStandalone1.svg" alt="" title="{lang}wcf.acp.package.list.standalone{/lang}" class="balloonTooltip" />
+                                                                                       {elseif $dependentPackage.parentPackageID}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/packagePlugin1.svg" alt="" title="{lang}wcf.acp.package.list.plugin{/lang}" class="balloonTooltip" />
+                                                                                       {else}
+                                                                                               <img src="{@RELATIVE_WCF_DIR}icon/package1.svg" alt="" title="{lang}wcf.acp.package.list.other{/lang}" class="balloonTooltip" />
+                                                                                       {/if}
+                                                                               </td>
+                                                                               <td class="columnText" title="{$dependentPackage.packageDescription}"><p><a href="index.php/PackageView/{@$dependentPackage.packageID}/{@SID_ARG_1ST}">{$dependentPackage.packageName}{if $dependentPackage.instanceNo > 1 && $dependentPackage.instanceName == ''} (#{#$dependentPackage.instanceNo}){/if}</a></p></td>
+                                                                               <td class="columnText">{if $dependentPackage.authorURL}<p><a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$dependentPackage.authorURL|rawurlencode}" class="externalURL">{$dependentPackage.author}</a>{else}{$dependentPackage.author}</p>{/if}</td>
+                                                                               <td class="columnText"><p>{$dependentPackage.packageVersion}</p></td>
+                                                                               <td class="columnDate"><p>{@$dependentPackage.packageDate|date}</p></td>
+                                                                       </tr>
+                                                               {/foreach}
+                                                       {/content}
+                                               </tbody>
+                                       </table>
+                               </div>
+                       {/hascontent}
+               </div>
+       {/if}
+</div>
 
 {assign var=noDependentIsActive value=true}
 {foreach from=$dependentPackages item=dependentPackage}
        {/if}
 {/foreach}
 
-<div class="contentHeader">
+<div class="contentFooter">
        <nav class="largeButtons">
                <ul>
                        {if PACKAGE_ID != $package->packageID}
                                {if $package->standalone && $package->package != 'com.woltlab.wcf'}<li><a href="{@RELATIVE_WCF_DIR}{$package->packageDir}acp/index.php{@SID_ARG_1ST}" title="{lang}wcf.acp.package.view.button.makeActive{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/packageACP1.svg" alt="" /> <span>{lang}wcf.acp.package.view.button.makeActive{/lang}</span></a></li>{/if}
-                               {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage') && $noDependentIsActive}<li><a href="index.php?page=Package&amp;action=startUninstall&amp;packageID={@$package->packageID}{@SID_ARG_2ND}" onclick="return confirm('{lang}wcf.acp.package.view.button.uninstall.sure{/lang}')" title="{lang}wcf.acp.package.view.button.uninstall{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" /> <span>{lang}wcf.acp.package.view.button.uninstall{/lang}</span></a></li>{/if}
+                               {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage') && $noDependentIsActive}<li><a href="index.php/Package/?action=startUninstall&amp;packageID={@$package->packageID}{@SID_ARG_2ND}" onclick="return confirm('{lang}wcf.acp.package.view.button.uninstall.sure{/lang}')" title="{lang}wcf.acp.package.view.button.uninstall{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" /> <span>{lang}wcf.acp.package.view.button.uninstall{/lang}</span></a></li>{/if}
                        {/if}
-                       {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}<li><a href="index.php?form=PackageStartInstall&amp;action=update&amp;packageID={@$package->packageID}{@SID_ARG_2ND}" title="{lang}wcf.acp.package.view.button.update{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" /> <span>{lang}wcf.acp.package.view.button.update{/lang}</span></a></li>{/if}
+                       {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}<li><a href="index.php/PackageStartInstall/{@$package->packageID}/?action=update{@SID_ARG_2ND}" title="{lang}wcf.acp.package.view.button.update{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" /> <span>{lang}wcf.acp.package.view.button.update{/lang}</span></a></li>{/if}
                        {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                </ul>
        </nav>
 </div>
 
-{if $requiredPackages|count > 0}
-       <div class="border boxTitle">
-               <a data-isOpen="1" data-collapsibleContainer="requiredPackages" class="collapsible"><img src="{@RELATIVE_WCF_DIR}icon/opened2.svg" alt="" title="{lang}wcf.global.button.collapsible{/lang}" class="balloonTooltip" /></a>
-               <hgroup>
-                       <h1><a onclick="openList('requiredPackages')">{lang}wcf.acp.package.view.requiredPackages{/lang}</a></h1>
-                       <h2>{lang}wcf.acp.package.view.requiredPackages.description{/lang}</h2>
-               </hgroup>
-               
-               <table id="requiredPackages">
-                       <thead>
-                               <tr class="tableHead">
-                                       <th colspan="2" class="columnID">{lang}wcf.acp.package.list.id{/lang}</th>
-                                       <th colspan="2" class="columnTitle">{lang}wcf.acp.package.list.name{/lang}</th>
-                                       <th class="columnText">{lang}wcf.acp.package.list.author{/lang}</th>
-                                       <th class="columnText">{lang}wcf.acp.package.list.version{/lang}</th>
-                                       <th class="columnDigits">{lang}wcf.acp.package.list.date{/lang}</th>
-                                       
-                                       {if $additionalColumns|isset}{@$additionalColumns}{/if}
-                               </tr>
-                       </thead>
-                       
-                       <tbody>
-                       {foreach from=$requiredPackages item=$package}
-                               <tr>
-                                       <td class="columnIcon">
-                                               {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
-                                                       <a href="index.php?form=PackageStartInstall&amp;action=update&amp;packageID={@$package.packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a>
-                                               {else}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/update1D.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" />
-                                               {/if}
-                                               {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage') && $package.package != 'com.woltlab.wcf' && $package.packageID != PACKAGE_ID}
-                                                       <a onclick="return confirm('{lang}wcf.acp.package.view.button.uninstall.sure{/lang}')" href="index.php?page=Package&amp;action=startUninstall&amp;packageID={@$package.packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" class="balloonTooltip" /></a>
-                                               {else}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/delete1D.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" />
-                                               {/if}
-                                               
-                                               {if $package.additionalButtons|isset}{@$package.additionalButtons}{/if}
-                                       </td>
-                                       <td class="columnID"><p>{@$package.packageID}</p></td>
-                                       <td class="columnIcon">
-                                               {if $package.standalone}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/packageStandalone1.svg" alt="" title="{lang}wcf.acp.package.list.standalone{/lang}" class="balloonTooltip" />
-                                               {elseif $package.parentPackageID}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/packagePlugin1.svg" alt="" title="{lang}wcf.acp.package.list.plugin{/lang}" class="balloonTooltip" />
-                                               {else}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/package1.svg" alt="" title="{lang}wcf.acp.package.list.other{/lang}" class="balloonTooltip" />
-                                               {/if}
-                                       </td>
-                                       <td class="columnText" title="{$package.packageDescription}"><p><a href="index.php?page=PackageView&amp;packageID={@$package.packageID}{@SID_ARG_2ND}">{$package.packageName}{if $package.instanceNo > 1 && $package.instanceName == ''} (#{#$package.instanceNo}){/if}</a></p></td>
-                                       <td class="columnText">{if $package.authorURL}<p><a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$package.authorURL|rawurlencode}" class="externalURL">{$package.author}</a>{else}{$package.author}</p>{/if}</td>
-                                       <td class="columnText"><p>{$package.packageVersion}</p></td>
-                                       <td class="columnDate"><p>{@$package.packageDate|date}</p></td>
-                                       
-                                       {if $package.additionalColumns|isset}{@$package.additionalColumns}{/if}
-                               </tr>
-                       {/foreach}
-                       </tbody>
-               </table>
-       </div>
-       
-       <script type="text/javascript">
-               //<![CDATA[
-               initList('requiredPackages', 0);
-               //]]>
-       </script>
-{/if}
-
-{if $dependentPackages|count > 0}
-       <div class="border boxTitle">
-               <a data-isOpen="1" data-collapsibleContainer="dependentPackages" class="collapsible"><img src="{@RELATIVE_WCF_DIR}icon/opened2.svg" alt="" title="{lang}wcf.global.button.collapsible{/lang}" class="balloonTooltip" /></a>
-               <hgroup>
-                       <h1><a onclick="openList('dependentPackages')">{lang}wcf.acp.package.view.dependentPackages{/lang}</a></h1>
-                       <h2>{lang}wcf.acp.package.view.dependentPackages.description{/lang}</h2>
-               </hgroup>
-               
-               <table id="dependentPackages">
-                       <thead>
-                               <tr class="tableHead">
-                                       <th colspan="2">{lang}wcf.acp.package.list.id{/lang}</th>
-                                       <th colspan="2">{lang}wcf.acp.package.list.name{/lang}</th>
-                                       <th>{lang}wcf.acp.package.list.author{/lang}</th>
-                                       <th>{lang}wcf.acp.package.list.version{/lang}</th>
-                                       <th>{lang}wcf.acp.package.list.date{/lang}</th>
-                                       
-                                       {if $additionalColumns|isset}{@$additionalColumns}{/if}
-                               </tr>
-                       </thead>
-                       
-                       <tbody>
-                       {foreach from=$dependentPackages item=$package}
-                               <tr>
-                                       <td class="columnIcon">
-                                               {if $__wcf->session->getPermission('admin.system.package.canUpdatePackage')}
-                                                       <a href="index.php?form=PackageStartInstall&amp;action=update&amp;packageID={@$package.packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/update1.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" class="balloonTooltip" /></a>
-                                               {else}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/update1D.svg" alt="" title="{lang}wcf.acp.package.view.button.update{/lang}" />
-                                               {/if}
-                                               {if $__wcf->session->getPermission('admin.system.package.canUninstallPackage') && $package.package != 'com.woltlab.wcf' && $package.packageID != PACKAGE_ID}
-                                                       <a onclick="return confirm('{lang}wcf.acp.package.view.button.uninstall.sure{/lang}')" href="index.php?page=Package&amp;action=startUninstall&amp;packageID={@$package.packageID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" class="balloonTooltip" /></a>
-                                               {else}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/delete1D.svg" alt="" title="{lang}wcf.acp.package.view.button.uninstall{/lang}" />
-                                               {/if}
-                                               
-                                               {if $package.additionalButtons|isset}{@$package.additionalButtons}{/if}
-                                       </td>
-                                       <td class="columnID"><p>{@$package.packageID}</p></td>
-                                       <td class="columnIcon">
-                                               {if $package.standalone}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/packageStandalone1.svg" alt="" title="{lang}wcf.acp.package.list.standalone{/lang}" class="balloonTooltip" />
-                                               {elseif $package.parentPackageID}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/packagePlugin1.svg" alt="" title="{lang}wcf.acp.package.list.plugin{/lang}" class="balloonTooltip" />
-                                               {else}
-                                                       <img src="{@RELATIVE_WCF_DIR}icon/package1.svg" alt="" title="{lang}wcf.acp.package.list.other{/lang}" class="balloonTooltip" />
-                                               {/if}
-                                       </td>
-                                       <td class="columnText" title="{$package.packageDescription}"><p><a href="index.php?page=PackageView&amp;packageID={@$package.packageID}{@SID_ARG_2ND}">{$package.packageName}{if $package.instanceNo > 1 && $package.instanceName == ''} (#{#$package.instanceNo}){/if}</a></p></td>
-                                       <td class="columnText">{if $package.authorURL}<p><a href="{@RELATIVE_WCF_DIR}acp/dereferrer.php?url={$package.authorURL|rawurlencode}" class="externalURL">{$package.author}</a>{else}{$package.author}</p>{/if}</td>
-                                       <td class="columnText"><p>{$package.packageVersion}</p></td>
-                                       <td class="columnDate"><p>{@$package.packageDate|date}</p></td>
-                                       
-                                       {if $package.additionalColumns|isset}{@$package.additionalColumns}{/if}
-                               </tr>
-                       {/foreach}
-                       </tbody>
-               </table>
-               
-       </div>
-       
-       <script type="text/javascript">
-               //<![CDATA[
-               initList('dependentPackages', 0);
-               //]]>
-       </script>
-{/if}
-
 {include file='footer'}
index f557ad24e26012614fb253c467a472ca11023548..6d08e0e8f42fa5e1941d396b802408daec524689 100644 (file)
 
 <div class="contentHeader">
        <nav class="largeButtons">
-               <ul><li><a href="index.php?page=UpdateServerList{@SID_ARG_2ND}" title="{lang}wcf.acp.menu.link.package.server.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/server1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.package.server.list{/lang}</span></a></li></ul>
+               <ul><li><a href="index.php/UpdateServerList/{@SID_ARG_1ST}" title="{lang}wcf.acp.menu.link.package.server.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/server1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.package.server.list{/lang}</span></a></li></ul>
        </nav>
 </div>
 
-<form method="post" action="index.php?form=UpdateServer{@$action|ucfirst}{if $packageUpdateServerID|isset}&amp;packageUpdateServerID={@$packageUpdateServerID}{/if}">
+<form method="post" action="index.php/UpdateServer{@$action|ucfirst}/{if $packageUpdateServerID|isset}{@$packageUpdateServerID}/{/if}">
        <div class="border content">
                
                <fieldset>
index 0c109d5525f4673cd470db0d84115e6e0728ea35..d547a97a7ed7502b9a5141f578681b7eb2e29158 100644 (file)
 {/if}
 
 <div class="contentHeader">
-       {pages print=true assign=pagesLinks link="index.php?page=UpdateServerList&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+       {pages print=true assign=pagesLinks link="index.php/UpdateServerList/?pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
        
        <nav class="largeButtons">
-               <ul><li><a href="index.php?form=UpdateServerAdd{@SID_ARG_2ND}" title="{lang}wcf.acp.updateServer.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.updateServer.add{/lang}</span></a></li></ul>
+               <ul><li><a href="index.php/UpdateServerAdd/{@SID_ARG_1ST}" title="{lang}wcf.acp.updateServer.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.updateServer.add{/lang}</span></a></li></ul>
        </nav>
 </div>
 
                <table class="bigList">
                        <thead>
                                <tr>
-                                       <th class="columnID columnPackageUpdateServerID{if $sortField == 'packageUpdateServerID'} active{/if}" colspan="2"><a href="index.php?page=UpdateServerList&amp;pageNo={@$pageNo}&amp;sortField=packageUpdateServerID&amp;sortOrder={if $sortField == 'packageUpdateServerID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'packageUpdateServerID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnTitle columnURL columnServer{if $sortField == 'serverURL'} active{/if}"><a href="index.php?page=UpdateServerList&amp;pageNo={@$pageNo}&amp;sortField=serverURL&amp;sortOrder={if $sortField == 'serverURL' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.serverURL{/lang}{if $sortField == 'serverURL'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDigits columnPackages{if $sortField == 'packages'} active{/if}"><a href="index.php?page=UpdateServerList&amp;pageNo={@$pageNo}&amp;sortField=packages&amp;sortOrder={if $sortField == 'packages' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.packages{/lang}{if $sortField == 'packages'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnStatus{if $sortField == 'status'} active{/if}"><a href="index.php?page=UpdateServerList&amp;pageNo={@$pageNo}&amp;sortField=status&amp;sortOrder={if $sortField == 'status' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.status{/lang}{if $sortField == 'status'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnText columnErrorText{if $sortField == 'errorMessage'} active{/if}"><a href="index.php?page=UpdateServerList&amp;pageNo={@$pageNo}&amp;sortField=errorMessage&amp;sortOrder={if $sortField == 'errorMessage' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.errorMessage{/lang}{if $sortField == 'errorMessage'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDate columnTimestamp{if $sortField == 'lastUpdateTime'} active{/if}"><a href="index.php?page=UpdateServerList&amp;pageNo={@$pageNo}&amp;sortField=lastUpdateTime&amp;sortOrder={if $sortField == 'lastUpdateTime' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.lastUpdateTime{/lang}{if $sortField == 'lastUpdateTime'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnID columnPackageUpdateServerID{if $sortField == 'packageUpdateServerID'} active{/if}" colspan="2"><a href="index.php/UpdateServerList/?pageNo={@$pageNo}&amp;sortField=packageUpdateServerID&amp;sortOrder={if $sortField == 'packageUpdateServerID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'packageUpdateServerID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnTitle columnURL columnServer{if $sortField == 'serverURL'} active{/if}"><a href="index.php/UpdateServerList/?pageNo={@$pageNo}&amp;sortField=serverURL&amp;sortOrder={if $sortField == 'serverURL' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.serverURL{/lang}{if $sortField == 'serverURL'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDigits columnPackages{if $sortField == 'packages'} active{/if}"><a href="index.php/UpdateServerList/?pageNo={@$pageNo}&amp;sortField=packages&amp;sortOrder={if $sortField == 'packages' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.packages{/lang}{if $sortField == 'packages'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnStatus{if $sortField == 'status'} active{/if}"><a href="index.php/UpdateServerList/?pageNo={@$pageNo}&amp;sortField=status&amp;sortOrder={if $sortField == 'status' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.status{/lang}{if $sortField == 'status'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnText columnErrorText{if $sortField == 'errorMessage'} active{/if}"><a href="index.php/UpdateServerList/?pageNo={@$pageNo}&amp;sortField=errorMessage&amp;sortOrder={if $sortField == 'errorMessage' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.errorMessage{/lang}{if $sortField == 'errorMessage'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDate columnTimestamp{if $sortField == 'lastUpdateTime'} active{/if}"><a href="index.php/UpdateServerList/?pageNo={@$pageNo}&amp;sortField=lastUpdateTime&amp;sortOrder={if $sortField == 'lastUpdateTime' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.updateServer.lastUpdateTime{/lang}{if $sortField == 'lastUpdateTime'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
                                        
                                        {if $additionalHeadColumns|isset}{@$additionalHeadColumns}{/if}
                                </tr>
                                                <tr class="updateServerRow">
                                                        <td class="columnIcon">
                                                                <img src="{@RELATIVE_WCF_DIR}icon/{if !$updateServer->disabled}enabled{else}disabled{/if}1.svg" alt="" title="{lang}wcf.global.button.{if !$updateServer->disabled}disable{else}enable{/if}{/lang}" data-objectID="{@$updateServer->packageUpdateServerID}" data-disableMessage="{lang}wcf.global.button.disable{/lang}" data-enableMessage="{lang}wcf.global.button.enable{/lang}" class="toggleButton balloonTooltip" />
-                                                               <a href="index.php?form=UpdateServerEdit&amp;packageUpdateServerID={@$updateServer->packageUpdateServerID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/edit1.svg" alt="" title="{lang}wcf.global.button.edit{/lang}" class="balloonTooltip" /></a>
+                                                               <a href="index.php/UpdateServerEdit/{@$updateServer->packageUpdateServerID}/{@SID_ARG_1ST}"><img src="{@RELATIVE_WCF_DIR}icon/edit1.svg" alt="" title="{lang}wcf.global.button.edit{/lang}" class="balloonTooltip" /></a>
                                                                <img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.global.button.delete{/lang}" data-objectID="{@$updateServer->packageUpdateServerID}" data-confirmMessage="{lang}wcf.acp.updateServer.delete.sure{/lang}" class="deleteButton balloonTooltip" />
                                                        
                                                                {if $additionalButtons[$updateServer->packageUpdateServerID]|isset}{@$additionalButtons[$updateServer->packageUpdateServerID]}{/if}
                                                        </td>
                                                        <td class="columnID"><p>{@$updateServer->packageUpdateServerID}</p></td>
-                                                       <td class="columnText columnTitle"><p><a href="index.php?form=UpdateServerEdit&amp;packageUpdateServerID={@$updateServer->packageUpdateServerID}{@SID_ARG_2ND}" title="{lang}wcf.global.button.edit{/lang}">{$updateServer->serverURL}</a></p></td>
+                                                       <td class="columnText columnTitle"><p><a href="index.php/UpdateServerEdit/{@$updateServer->packageUpdateServerID}/{@SID_ARG_1ST}" title="{lang}wcf.global.button.edit{/lang}">{$updateServer->serverURL}</a></p></td>
                                                        <td class="columnDigits"><p>{#$updateServer->packages}</p></td>
                                                        <td class="columnStatus"><p class="badge{if $updateServer->status == 'online'} badgeSuccess{else} badgeError{/if}">{@$updateServer->status}</p></td>
                                                        <td class="columnText"><p title="{@$updateServer->errorMessage}">{@$updateServer->errorMessage|truncate:"30"}</p></td>
@@ -79,7 +79,7 @@
                {@$pagesLinks}
                
                <nav class="largeButtons">
-                       <ul><li><a href="index.php?form=UpdateServerAdd{@SID_ARG_2ND}" title="{lang}wcf.acp.updateServer.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.updateServer.add{/lang}</span></a></li></ul>
+                       <ul><li><a href="index.php/UpdateServerAdd/{@SID_ARG_1ST}" title="{lang}wcf.acp.updateServer.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.updateServer.add{/lang}</span></a></li></ul>
                </nav>
        </div>
 {hascontentelse}
index 0ca8440804e6780fccd1ed71eca6ed6187c131a8..f79d2d9f4bc63107a56ee04d6270c3a7b3694af0 100644 (file)
 <div class="contentHeader">
        <nav class="largeButtons">
                <ul>
-                       <li><a href="index.php?page=UserList{@SID_ARG_2ND}" title="{lang}wcf.acp.menu.link.user.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/users1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.user.list{/lang}</span></a></li>
-                       <li><a href="index.php?form=UserSearch{@SID_ARG_2ND}" title="{lang}wcf.acp.user.search{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/search1.svg" alt="" /> <span>{lang}wcf.acp.user.search{/lang}</span></a></li>
+                       <li><a href="index.php/UserList/{@SID_ARG_1ST}" title="{lang}wcf.acp.menu.link.user.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/users1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.user.list{/lang}</span></a></li>
+                       <li><a href="index.php/UserSearch/{@SID_ARG_1ST}" title="{lang}wcf.acp.user.search{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/search1.svg" alt="" /> <span>{lang}wcf.acp.user.search{/lang}</span></a></li>
                        {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                </ul>
        </nav>
 </div>
 
-<form method="post" action="index.php?form=User{@$action|ucfirst}">
+<form method="post" action="index.php/User{@$action|ucfirst}/">
        <div class="border content">
                <dl{if $errorType.username|isset} class="formError"{/if}>
                        <dt><label for="username">{lang}wcf.user.username{/lang}</label></dt>
                <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />
                {@SID_INPUT_TAG}
                <input type="hidden" name="action" value="{@$action}" />
-               {if $userID|isset}<input type="hidden" name="userID" value="{@$userID}" />{/if}
+               {if $userID|isset}<input type="hidden" name="id" value="{@$userID}" />{/if}
        </div>
 </form>
 
index dcd6e9be3f187d6ac317d792baaa7ff789cffb52..fa928474f5135f40c130b3912c1270c438d98b89 100644 (file)
@@ -11,7 +11,7 @@
        <p class="error">{lang}wcf.global.form.error{/lang}</p>
 {/if}
 
-<form method="post" action="index.php?form=UserAssignToGroup">
+<form method="post" action="index.php/UserAssignToGroup/">
 
        <div class="border content">
                
@@ -19,7 +19,7 @@
                        <legend>{lang}wcf.acp.user.assignToGroup.markedUsers{/lang}</legend>
                        
                        <ul>
-                               {implode from=$users item=$user}<li><a href="index.php?form=UserEdit&amp;userID={@$user->userID}{@SID_ARG_2ND}" class="badge badgeButton">{$user}</a></li>{/implode}
+                               {implode from=$users item=$user}<li><a href="index.php/UserEdit/{@$user->userID}/{@SID_ARG_1ST}" class="badge badgeButton">{$user}</a></li>{/implode}
                        </ul>
                </fieldset>     
                
index 91fb1f1a0467848bc1ef5a575eb07d03876d1c59..fa6183d3091ee55a677770033a18e788cbd4606d 100644 (file)
        </hgroup>
 </header>
 
-<form method="post" action="index.php?form=UserEmailAddressExport">
+<form method="post" action="index.php/UserEmailAddressExport/">
        <div class="border content">
                <fieldset>
                        <legend>{lang}wcf.acp.user.exportEmailAddress.markedUsers{/lang}</legend>
                        
                        <ul>
-                               {implode from=$users item=$user}<li><a href="index.php?form=UserEdit&amp;userID={@$user->userID}{@SID_ARG_2ND}" class="badge badgeButton">{$user}</a></li>{/implode}
+                               {implode from=$users item=$user}<li><a href="index.php/UserEdit/{@$user->userID}/{@SID_ARG_1ST}" class="badge badgeButton">{$user}</a></li>{/implode}
                        </ul>
                </fieldset>     
                
index 98fff66be14f3a379fddfad64e7d4cd07cd29c3c..65ef55045829d6179628f5c03266379f7a24c21b 100644 (file)
 <div class="contentHeader">
        <nav class="largeButtons">
                <ul>
-                       <li><a href="index.php?page=UserGroupList{@SID_ARG_2ND}" title="{lang}wcf.acp.menu.link.group.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/users1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.group.list{/lang}</span></a></li>
+                       <li><a href="index.php/UserGroupList/{@SID_ARG_1ST}" title="{lang}wcf.acp.menu.link.group.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/users1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.group.list{/lang}</span></a></li>
                        {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                </ul>
        </nav>
 </div>
 
-<form method="post" action="index.php?form=UserGroup{@$action|ucfirst}">
+<form method="post" action="index.php/UserGroup{@$action|ucfirst}/">
        <div class="border content">
                
                <fieldset>
                <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />
                {@SID_INPUT_TAG}
                <input type="hidden" name="action" value="{@$action}" />
-               {if $groupID|isset}<input type="hidden" name="groupID" value="{@$groupID}" />{/if}
+               {if $groupID|isset}<input type="hidden" name="id" value="{@$groupID}" />{/if}
                <input type="hidden" id="activeTabMenuItem" name="activeTabMenuItem" value="{$activeTabMenuItem}" />
                <input type="hidden" id="activeSubTabMenuItem" name="activeSubTabMenuItem" value="{$activeSubTabMenuItem}" />
        </div>
index 595ebcbbc27f7f0d299411ba75828d89581ec347..5290fd4c79506476b8c9037aebee4f1bacb4d0c1 100644 (file)
@@ -8,10 +8,10 @@
 </header>
 
 <div class="contentHeader">
-       {pages print=true assign=pagesLinks link="index.php?page=UserGroupList&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+       {pages print=true assign=pagesLinks link="index.php/UserGroupList/?pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
        <nav class="largeButtons">
                <ul>
-                       <li><a href="index.php?form=UserGroupAdd{@SID_ARG_2ND}" title="{lang}wcf.acp.group.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.group.add{/lang}</span></a></li>
+                       <li><a href="index.php/UserGroupAdd/{@SID_ARG_1ST}" title="{lang}wcf.acp.group.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.group.add{/lang}</span></a></li>
                        {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}                       
                </ul>
        </nav>
@@ -26,9 +26,9 @@
                <table class="bigList">
                        <thead>
                                <tr class="tableHead">
-                                       <th class="columnID columnGroupID{if $sortField == 'groupID'} active{/if}" colspan="2"><a href="index.php?page=UserGroupList&amp;pageNo={@$pageNo}&amp;sortField=groupID&amp;sortOrder={if $sortField == 'groupID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'groupID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnTitle columnGroupName{if $sortField == 'groupName'} active{/if}"><a href="index.php?page=UserGroupList&amp;pageNo={@$pageNo}&amp;sortField=groupName&amp;sortOrder={if $sortField == 'groupName' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.group.groupName{/lang}{if $sortField == 'groupName'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnDigits columnMembers{if $sortField == 'members'} active{/if}"><a href="index.php?page=UserGroupList&amp;pageNo={@$pageNo}&amp;sortField=members&amp;sortOrder={if $sortField == 'members' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.group.members{/lang}{if $sortField == 'members'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnID columnGroupID{if $sortField == 'groupID'} active{/if}" colspan="2"><a href="index.php/UserGroupList/?pageNo={@$pageNo}&amp;sortField=groupID&amp;sortOrder={if $sortField == 'groupID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'groupID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnTitle columnGroupName{if $sortField == 'groupName'} active{/if}"><a href="index.php/UserGroupList/?pageNo={@$pageNo}&amp;sortField=groupName&amp;sortOrder={if $sortField == 'groupName' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.group.groupName{/lang}{if $sortField == 'groupName'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnDigits columnMembers{if $sortField == 'members'} active{/if}"><a href="index.php/UserGroupList/?pageNo={@$pageNo}&amp;sortField=members&amp;sortOrder={if $sortField == 'members' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.acp.group.members{/lang}{if $sortField == 'members'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
                                        
                                        {if $additionalHeadColumns|isset}{@$additionalHeadColumns}{/if}
                                </tr>
@@ -40,7 +40,7 @@
                                                <tr id="groupContainer{@$group->groupID}">
                                                        <td class="columnIcon">
                                                                {if $group->isEditable()}
-                                                                       <a href="index.php?form=UserGroupEdit&amp;groupID={@$group->groupID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/edit1.svg" alt="" title="{lang}wcf.global.button.edit{/lang}" class="balloonTooltip" /></a>
+                                                                       <a href="index.php/UserGroupEdit/{@$group->groupID}/{@SID_ARG_1ST}"><img src="{@RELATIVE_WCF_DIR}icon/edit1.svg" alt="" title="{lang}wcf.global.button.edit{/lang}" class="balloonTooltip" /></a>
                                                                {else}
                                                                        <img src="{@RELATIVE_WCF_DIR}icon/edit1D.svg" alt="" title="{lang}wcf.acp.group.edit{/lang}" />
                                                                {/if}
@@ -53,8 +53,8 @@
                                                                {if $additionalButtons[$group->groupID]|isset}{@$additionalButtons[$group->groupID]}{/if}
                                                        </td>
                                                        <td class="columnID columnGroupID"><p>{@$group->groupID}</p></td>
-                                                       <td class="columnTitle columnGroupName">{if $group->isEditable()}<p><a title="{lang}wcf.acp.group.edit{/lang}" href="index.php?form=UserGroupEdit&amp;groupID={@$group->groupID}{@SID_ARG_2ND}">{lang}{$group->groupName}{/lang}</a>{else}{lang}{$group->groupName}{/lang}</p>{/if}</td>
-                                                       <td class="columnDigits columnMembers"><p><a title="{lang}wcf.acp.group.showMembers{/lang}" href="index.php?form=UserSearch&amp;groupID={@$group->groupID}{@SID_ARG_2ND}">{#$group->members}</p></a></td>
+                                                       <td class="columnTitle columnGroupName">{if $group->isEditable()}<p><a title="{lang}wcf.acp.group.edit{/lang}" href="index.php/UserGroupEdit/{@$group->groupID}/{@SID_ARG_1ST}">{lang}{$group->groupName}{/lang}</a>{else}{lang}{$group->groupName}{/lang}</p>{/if}</td>
+                                                       <td class="columnDigits columnMembers"><p><a title="{lang}wcf.acp.group.showMembers{/lang}" href="index.php/UserSearch/?groupID={@$group->groupID}{@SID_ARG_2ND}">{#$group->members}</p></a></td>
                                                
                                                        {if $additionalColumns[$group->groupID]|isset}{@$additionalColumns[$group->groupID]}{/if}
                                                </tr>
@@ -69,7 +69,7 @@
                {@$pagesLinks}
                <nav class="largeButtons">
                        <ul>
-                               <li><a href="index.php?form=UserGroupAdd{@SID_ARG_2ND}" title="{lang}wcf.acp.group.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.group.add{/lang}</span></a></li>
+                               <li><a href="index.php/UserGroupAdd/{@SID_ARG_1ST}" title="{lang}wcf.acp.group.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.group.add{/lang}</span></a></li>
                                {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                        </ul>
                </nav>
index 968eab3c71af6ccb85c2d41551501d986b0cacc8..d2b771ac50999f52d626ab91ee50db2fc0e02001 100644 (file)
 {assign var=encodedURL value=$url|rawurlencode}
 {assign var=encodedAction value=$action|rawurlencode}
 <div class="contentHeader">
-       {pages print=true assign=pagesLinks link="index.php?page=UserList&pageNo=%d&searchID=$searchID&action=$encodedAction&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
+       {pages print=true assign=pagesLinks link="index.php/UserList/?pageNo=%d&searchID=$searchID&action=$encodedAction&sortField=$sortField&sortOrder=$sortOrder"|concat:SID_ARG_2ND_NOT_ENCODED}
        
        <nav class="largeButtons">
                <ul>
                        {if $__wcf->session->getPermission('admin.user.canAddUser')}
-                               <li><a href="index.php?form=UserAdd{@SID_ARG_2ND}" title="{lang}wcf.acp.user.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.user.add{/lang}</span></a></li>
+                               <li><a href="index.php/UserAdd/{@SID_ARG_1ST}" title="{lang}wcf.acp.user.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.user.add{/lang}</span></a></li>
                        {/if}
-                       <li><a href="index.php?form=UserSearch{@SID_ARG_2ND}" title="{lang}wcf.acp.user.search{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/search1.svg" alt="" /> <span>{lang}wcf.acp.user.search{/lang}</span></a></li>
+                       <li><a href="index.php/UserSearch/{@SID_ARG_1ST}" title="{lang}wcf.acp.user.search{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/search1.svg" alt="" /> <span>{lang}wcf.acp.user.search{/lang}</span></a></li>
                        {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                </ul>
        </nav>
@@ -36,7 +36,7 @@
 <div class="border boxTitle">
        <nav class="menu">
                <ul>
-                       <li{if $action == ''} class="active"{/if}><a href="index.php?page=UserList{@SID_ARG_2ND}"><span>{lang}wcf.acp.user.list.all{/lang}</span> <span class="badge" title="{lang}wcf.acp.user.list.count{/lang}">{#$items}</span></a></li>
+                       <li{if $action == ''} class="active"{/if}><a href="index.php/UserList/{@SID_ARG_1ST}"><span>{lang}wcf.acp.user.list.all{/lang}</span> <span class="badge" title="{lang}wcf.acp.user.list.count{/lang}">{#$items}</span></a></li>
                        {if $additionalUserListOptions|isset}{@$additionalUserListOptions}{/if}
                </ul>
        </nav>
                        <thead>
                                <tr class="tableHead">
                                        <th class="columnMark"><label><input type="checkbox" class="clipboardMarkAll" /></label></th>
-                                       <th class="columnID columnUserID{if $sortField == 'userID'} active{/if}" colspan="2"><a href="index.php?page=UserList&amp;searchID={@$searchID}&amp;action={@$encodedAction}&amp;pageNo={@$pageNo}&amp;sortField=userID&amp;sortOrder={if $sortField == 'userID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'userID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
-                                       <th class="columnTitle columnUsername{if $sortField == 'username'} active{/if}"><a href="index.php?page=UserList&amp;searchID={@$searchID}&amp;action={@$encodedAction}&amp;pageNo={@$pageNo}&amp;sortField=username&amp;sortOrder={if $sortField == 'username' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.username{/lang}{if $sortField == 'username'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnID columnUserID{if $sortField == 'userID'} active{/if}" colspan="2"><a href="index.php/UserList/?searchID={@$searchID}&amp;action={@$encodedAction}&amp;pageNo={@$pageNo}&amp;sortField=userID&amp;sortOrder={if $sortField == 'userID' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.global.objectID{/lang}{if $sortField == 'userID'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                       <th class="columnTitle columnUsername{if $sortField == 'username'} active{/if}"><a href="index.php/UserList/?searchID={@$searchID}&amp;action={@$encodedAction}&amp;pageNo={@$pageNo}&amp;sortField=username&amp;sortOrder={if $sortField == 'username' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}wcf.user.username{/lang}{if $sortField == 'username'} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
                                        
                                        {foreach from=$columnHeads key=column item=columnLanguageVariable}
-                                               <th class="column{$column|ucfirst}{if $sortField == $column} active{/if}"><a href="index.php?page=UserList&amp;searchID={@$searchID}&amp;action={@$encodedAction}&amp;pageNo={@$pageNo}&amp;sortField={$column}&amp;sortOrder={if $sortField == $column && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}{$columnLanguageVariable}{/lang}{if $sortField == $column} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
+                                               <th class="column{$column|ucfirst}{if $sortField == $column} active{/if}"><a href="index.php/UserList/?searchID={@$searchID}&amp;action={@$encodedAction}&amp;pageNo={@$pageNo}&amp;sortField={$column}&amp;sortOrder={if $sortField == $column && $sortOrder == 'ASC'}DESC{else}ASC{/if}{@SID_ARG_2ND}">{lang}{$columnLanguageVariable}{/lang}{if $sortField == $column} <img src="{@RELATIVE_WCF_DIR}icon/sort{@$sortOrder}.svg" alt="" />{/if}</a></th>
                                        {/foreach}
                                        
                                        {if $additionalColumnHeads|isset}{@$additionalColumnHeads}{/if}
                                                        <td class="columnMark"><input type="checkbox" class="clipboardItem" data-objectID="{@$user->userID}" /></td>
                                                        <td class="columnIcon">
                                                                {if $user->editable}
-                                                                       <a href="index.php?form=UserEdit&amp;userID={@$user->userID}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/edit1.svg" alt="" title="{lang}wcf.acp.user.edit{/lang}" class="balloonTooltip" /></a>
+                                                                       <a href="index.php/UserEdit/{@$user->userID}/{@SID_ARG_1ST}"><img src="{@RELATIVE_WCF_DIR}icon/edit1.svg" alt="" title="{lang}wcf.acp.user.edit{/lang}" class="balloonTooltip" /></a>
                                                                {else}
                                                                        <img src="{@RELATIVE_WCF_DIR}icon/edit1D.svg" alt="" title="{lang}wcf.acp.user.edit{/lang}" />
                                                                {/if}
                                                                {if $user->deletable}
-                                                                       <a onclick="return confirm('{lang}wcf.acp.user.delete.sure{/lang}')" href="index.php?action=UserDelete&amp;userID={@$user->userID}&amp;url={@$encodedURL}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.user.delete{/lang}" class="balloonTooltip" /></a>
+                                                                       <a onclick="return confirm('{lang}wcf.acp.user.delete.sure{/lang}')" href="index.php/UserDelete/{@$user->userID}/?url={@$encodedURL}{@SID_ARG_2ND}"><img src="{@RELATIVE_WCF_DIR}icon/delete1.svg" alt="" title="{lang}wcf.acp.user.delete{/lang}" class="balloonTooltip" /></a>
                                                                {else}
                                                                        <img src="{@RELATIVE_WCF_DIR}icon/delete1D.svg" alt="" title="{lang}wcf.acp.user.delete{/lang}" />
                                                                {/if}
@@ -77,7 +77,7 @@
                                                                {if $additionalButtons[$user->userID]|isset}{@$additionalButtons[$user->userID]}{/if}
                                                        </td>
                                                        <td class="columnID columnUserID"><p>{@$user->userID}</p></td>
-                                                       <td class="columnTitle columnUsername"><p>{if $user->editable}<a title="{lang}wcf.acp.user.edit{/lang}" href="index.php?form=UserEdit&amp;userID={@$user->userID}{@SID_ARG_2ND}">{$user->username}</a>{else}{$user->username}{/if}</p></td>
+                                                       <td class="columnTitle columnUsername"><p>{if $user->editable}<a title="{lang}wcf.acp.user.edit{/lang}" href="index.php/UserEdit/{@$user->userID}/{@SID_ARG_1ST}">{$user->username}</a>{else}{$user->username}{/if}</p></td>
                                        
                                                        {foreach from=$columnHeads key=column item=columnLanguageVariable}
                                                                <td class="column{$column|ucfirst}"><p>{if $columnValues[$user->userID][$column]|isset}{@$columnValues[$user->userID][$column]}{/if}</p></td>
                <nav class="largeButtons">
                        <ul>
                                {if $__wcf->session->getPermission('admin.user.canAddUser')}
-                                       <li><a href="index.php?form=UserAdd{@SID_ARG_2ND}" title="{lang}wcf.acp.user.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.user.add{/lang}</span></a></li>
+                                       <li><a href="index.php/UserAdd/{@SID_ARG_1ST}" title="{lang}wcf.acp.user.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.user.add{/lang}</span></a></li>
                                {/if}
-                               <li><a href="index.php?form=UserSearch{@SID_ARG_2ND}" title="{lang}wcf.acp.user.search{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/search1.svg" alt="" /> <span>{lang}wcf.acp.user.search{/lang}</span></a></li>
+                               <li><a href="index.php/UserSearch/{@SID_ARG_1ST}" title="{lang}wcf.acp.user.search{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/search1.svg" alt="" /> <span>{lang}wcf.acp.user.search{/lang}</span></a></li>
                                {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                        </ul>
                </nav>
index 27c8efc463e6338d2c24bba901481d03b1a478b4..fc30edf28ffef60573b4435d8f9f3cc1812b69b6 100644 (file)
 <div class="contentHeader">
        <nav class="largeButtons">
                <ul>
-                       <li><a href="index.php?page=UserList{@SID_ARG_2ND}" title="{lang}wcf.acp.menu.link.user.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/users1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.user.list{/lang}</span></a></li>
-                       <li><a href="index.php?form=UserSearch{@SID_ARG_2ND}" title="{lang}wcf.acp.user.search{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/search1.svg" alt="" /> <span>{lang}wcf.acp.user.search{/lang}</span></a></li>
+                       <li><a href="index.php/UserList/{@SID_ARG_1ST}" title="{lang}wcf.acp.menu.link.user.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/users1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.user.list{/lang}</span></a></li>
+                       <li><a href="index.php/UserSearch/{@SID_ARG_1ST}" title="{lang}wcf.acp.user.search{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/search1.svg" alt="" /> <span>{lang}wcf.acp.user.search{/lang}</span></a></li>
                        {if $additionalLargeButtons|isset}{@$additionalLargeButtons}{/if}
                </ul>
        </nav>
 </div>
 
-<form method="post" action="index.php?form=UserMail">
+<form method="post" action="index.php/UserMail/">
        <div class="border content">
                
                {if $action == ''}
@@ -49,7 +49,7 @@
                                <legend>{lang}wcf.acp.user.sendMail.markedUsers{/lang}</legend>
                                
                                <div>
-                                       {implode from=$users item=$user}<a href="index.php?form=UserEdit&amp;userID={@$user->userID}{@SID_ARG_2ND}">{$user}</a>{/implode}
+                                       {implode from=$users item=$user}<a href="index.php/UserEdit/{@$user->userID}/{@SID_ARG_1ST}">{$user}</a>{/implode}
                                </div>
                        </fieldset>     
                {/if}
index 6e7daf4019ea2815ce0209f244c26e16f3875c4d..a79499d80303af0a7405b5b2293487b3dea6d5d0 100644 (file)
        <nav class="largeButtons">
                <ul>
                        {if $__wcf->session->getPermission('admin.user.canAddUser')}
-                               <li><a href="index.php?form=UserAdd{@SID_ARG_2ND}" title="{lang}wcf.acp.user.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.user.add{/lang}</span></a></li>
+                               <li><a href="index.php/UserAdd/{@SID_ARG_1ST}" title="{lang}wcf.acp.user.add{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/add1.svg" alt="" /> <span>{lang}wcf.acp.user.add{/lang}</span></a></li>
                        {/if}
-                       <li><a href="index.php?page=UserList{@SID_ARG_2ND}" title="{lang}wcf.acp.menu.link.user.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/users1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.user.list{/lang}</span></a></li>
+                       <li><a href="index.php/UserList/{@SID_ARG_1ST}" title="{lang}wcf.acp.menu.link.user.list{/lang}"><img src="{@RELATIVE_WCF_DIR}icon/users1.svg" alt="" /> <span>{lang}wcf.acp.menu.link.user.list{/lang}</span></a></li>
                </ul>
        </nav>
 </div>
 
-<form method="post" action="index.php?form=UserSearch">
+<form method="post" action="index.php/UserSearch/">
        <div class="border content">
                
                <fieldset>
index 5869997496ee95533f0964681ffc5a83cbe0c6bd..07a842bdbd7b1c3498dfabffea10c0d564c54073 100644 (file)
@@ -82,7 +82,7 @@
 
 <p class="warning">{lang}wcf.acp.user.massProcessing.warning{/lang}</p>
 
-<form method="post" action="index.php?form=UsersMassProcessing">
+<form method="post" action="index.php/UsersMassProcessing/">
        <div class="border content">
                
                <hgroup class="subHeading">
index abe9eed14854e0cca18ed773c354c58e90749a3d..3268afdd6cbe1a205469d14026633d7663d7f76c 100644 (file)
@@ -483,12 +483,12 @@ WCF.Clipboard = {
                
                this._actionProxy = new WCF.Action.Proxy({
                        success: $.proxy(this._actionSuccess, this),
-                       url: 'index.php?action=ClipboardProxy&t=' + SECURITY_TOKEN + SID_ARG_2ND
+                       url: 'index.php/ClipboardProxy/?t=' + SECURITY_TOKEN + SID_ARG_2ND
                });
                
                this._proxy = new WCF.Action.Proxy({
                        success: $.proxy(this._success, this),
-                       url: 'index.php?action=Clipboard&t=' + SECURITY_TOKEN + SID_ARG_2ND
+                       url: 'index.php/Clipboard/?t=' + SECURITY_TOKEN + SID_ARG_2ND
                });
                
                // init containers first
@@ -512,7 +512,7 @@ WCF.Clipboard = {
                                pageClassName: this._page
                        },
                        success: $.proxy(this._loadMarkedItemsSuccess, this),
-                       url: 'index.php?action=ClipboardLoadMarkedItems&t=' + SECURITY_TOKEN + SID_ARG_2ND
+                       url: 'index.php/ClipboardLoadMarkedItems/?t=' + SECURITY_TOKEN + SID_ARG_2ND
                });
        },
        
@@ -898,7 +898,7 @@ WCF.Action.Proxy.prototype = {
                        failure: null,
                        success: null,
                        type: 'POST',
-                       url: 'index.php?action=AJAXProxy&t=' + SECURITY_TOKEN + SID_ARG_2ND
+                       url: 'index.php/AJAXProxy/?t=' + SECURITY_TOKEN + SID_ARG_2ND
                }, options);
                
                this.confirmationDialog = null;
index b5d0b3b23db6dd3257180bbf404f0ccdf34eff6b..d593ce0b186db99a5746808cbc34bcc84e303ca9 100755 (executable)
@@ -83,7 +83,7 @@ class MasterPasswordForm extends ACPForm {
                
                // forward
                if (empty($this->url)) {
-                       $this->url = 'index.php?page=Index'.SID_ARG_2ND_NOT_ENCODED;
+                       $this->url = 'index.php/Index/'.SID_ARG_1ST;
                }
                HeaderUtil::redirect($this->url, false);
                exit;
index 7c1f3580863b7422b5496d5e0bdcdf5c9ded6e8b..48c3eebe05ed2691c7938af5a26a7fe81490d4db 100755 (executable)
@@ -231,7 +231,7 @@ class PackageStartInstallForm extends ACPForm {
                $this->saved();
                
                // open queue
-               HeaderUtil::redirect('index.php?page=Package&action=openQueue&processNo='.$processNo.''.SID_ARG_2ND_NOT_ENCODED);
+               HeaderUtil::redirect('index.php/Package/?action=openQueue&processNo='.$processNo.SID_ARG_2ND_NOT_ENCODED);
                exit;
        }
        
index 4e12584ddb7230590f07613376b30fac736c5fbf..f311efa233775c217fc999c249daa2e30a28a74c 100755 (executable)
@@ -103,7 +103,7 @@ class PackageUpdateForm extends ACPForm {
                        $this->saved();
                        
                        // open queue
-                       HeaderUtil::redirect('index.php?page=Package&action=openQueue&processNo='.$processNo.''.SID_ARG_2ND_NOT_ENCODED);
+                       HeaderUtil::redirect('index.php/Package/?action=openQueue&processNo='.$processNo.''.SID_ARG_2ND_NOT_ENCODED);
                        exit;
                }
        }
index 6ca77b7f8c2097b5f150e706da581c8ce4eb56a1..2191fc444510a3e83db849cc70b1b629ce0492f3 100644 (file)
@@ -242,7 +242,7 @@ class PackageUpdateSearchForm extends ACPForm {
                $this->saved();
                
                // forward
-               HeaderUtil::redirect('index.php?page=PackageUpdateSearchResult&searchID='.$search->searchID.''.SID_ARG_2ND_NOT_ENCODED);
+               HeaderUtil::redirect('index.php/PackageUpdateSearchResult/'.$search->searchID.'/'.SID_ARG_1ST);
                exit;
        }
        
index f9f18b19c8bcf3c2846d0c41c280d0faa9129eec..dfe10e4da4f53204f2df1d8e214544b9b4f918c8 100755 (executable)
@@ -214,7 +214,7 @@ class UserSearchForm extends UserOptionListForm {
                $this->saved();
                
                // forward to result page
-               HeaderUtil::redirect('index.php?page=UserList&searchID='.$this->searchID.'&sortField='.rawurlencode($this->sortField).'&sortOrder='.rawurlencode($this->sortOrder).''.SID_ARG_2ND_NOT_ENCODED);
+               HeaderUtil::redirect('index.php/UserList/?searchID='.$this->searchID.'&sortField='.rawurlencode($this->sortField).'&sortOrder='.rawurlencode($this->sortOrder).''.SID_ARG_2ND_NOT_ENCODED);
                exit;
        }
        
index 157cb6ec51f8fba71e9c665d39ff02df39cd4506..3a739229285f662dd791cf960751c9fa4825f213 100644 (file)
@@ -197,7 +197,7 @@ class UsersMassProcessingForm extends UserOptionListForm {
                                // show worker template
                                WCF::getTPL()->assign(array(
                                        'pageTitle' => WCF::getLanguage()->get('wcf.acp.user.sendMail'),
-                                       'url' => 'index.php?action=UserMail&mailID='.$mailID.''.SID_ARG_2ND_NOT_ENCODED
+                                       'url' => 'index.php/UserMail/'.$mailID.'/'.SID_ARG_1ST
                                ));
                                WCF::getTPL()->display('worker');
                                exit;
diff --git a/wcfsetup/install/files/lib/acp/page/DetailedPackageListPage.class.php b/wcfsetup/install/files/lib/acp/page/DetailedPackageListPage.class.php
new file mode 100644 (file)
index 0000000..c196d40
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+namespace wcf\acp\page;
+use wcf\system\menu\acp\ACPMenu;
+use wcf\data\package\PackageList;
+use wcf\page\SortablePage;
+use wcf\system\WCF;
+
+/**
+ * Shows a list of all installed packages.
+ * 
+ * @author     Marcel Werk
+ * @copyright  2001-2011 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    com.woltlab.wcf
+ * @subpackage acp.page
+ * @category   Community Framework
+ */
+class DetailedPackageListPage extends SortablePage {
+       /**
+        * @see wcf\page\AbstractPage::$neededPermissions
+        */
+       public $neededPermissions = array('admin.system.package.canUpdatePackage', 'admin.system.package.canUninstallPackage');
+       
+       /**
+        * @see wcf\page\MultipleLinkPage::$itemsPerPage
+        */
+       public $itemsPerPage = 50;
+       
+       /**
+        * @see wcf\page\SortablePage::$defaultSortField
+        */
+       public $defaultSortField = 'packageType';
+       
+       /**
+        * @see wcf\page\SortablePage::$defaultSortOrder
+        */
+       public $defaultSortOrder = 'DESC';
+       
+       /**
+        * @see wcf\page\SortablePage::$validSortFields
+        */
+       public $validSortFields = array('packageID', 'package', 'packageDir', 'packageName', 'instanceNo', 'packageDescription', 'packageVersion', 'packageDate', 'packageURL', 'parentPackageID', 'isUnique', 'standalone', 'author', 'authorURL', 'installDate', 'updateDate');
+       
+       /**
+        * @see wcf\page\MultipleLinkPage::$objectListClassName
+        */     
+       public $objectListClassName = 'wcf\data\package\PackageList';
+       
+       /**
+        * @see wcf\page\MultipleLinkPage::readObjects()
+        */     
+       protected function readObjects() {
+               $this->sqlOrderBy = 'package.'.($this->sortField == 'packageType' ? 'standalone '.$this->sortOrder.', package.parentPackageID '.$this->sortOrder : $this->sortField.' '.$this->sortOrder).($this->sortField != 'packageName' ? ', package.packageName ASC' : '');
+               
+               parent::readObjects();
+       }
+       
+       /**
+        * @see wcf\page\IPage::show()
+        */
+       public function show() {
+               // enable menu item
+               ACPMenu::getInstance()->setActiveMenuItem('wcf.acp.menu.link.package.list');
+               
+               parent::show();
+       }
+}
index 466c14d6f032345bc797752d67ecd67fb206293d..d3dd9f8a8515aaf2615268649e3254c873db2fc7 100755 (executable)
@@ -1,63 +1,69 @@
 <?php
 namespace wcf\acp\page;
-use wcf\system\menu\acp\ACPMenu;
+use wcf\data\package\Package;
 use wcf\data\package\PackageList;
-use wcf\page\SortablePage;
+use wcf\page\AbstractPage;
+use wcf\system\menu\acp\ACPMenu;
 use wcf\system\WCF;
 
-/**
- * Shows a list of all installed packages.
- * 
- * @author     Marcel Werk
- * @copyright  2001-2011 WoltLab GmbH
- * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package    com.woltlab.wcf
- * @subpackage acp.page
- * @category   Community Framework
- */
-class PackageListPage extends SortablePage {
-       /**
-        * @see wcf\page\AbstractPage::$templateName
-        */
-       public $templateName = 'packageList';
-       
+class PackageListPage extends AbstractPage {
        /**
-        * @see wcf\page\AbstractPage::$neededPermissions
+        * list of applications
+        * @var wcf\data\package\PackageList
         */
-       public $neededPermissions = array('admin.system.package.canUpdatePackage', 'admin.system.package.canUninstallPackage');
+       protected $applicationList = null;
        
        /**
-        * @see wcf\page\MultipleLinkPage::$itemsPerPage
+        * plugin count
+        * @var integer
         */
-       public $itemsPerPage = 50;
+       protected $pluginCount = 0;
        
        /**
-        * @see wcf\page\SortablePage::$defaultSortField
+        * list of plugins
+        * @var wcf\data\package\PackageList
         */
-       public $defaultSortField = 'packageType';
+       protected $pluginList = null;
        
        /**
-        * @see wcf\page\SortablePage::$defaultSortOrder
+        * @see wcf\page\IPage::readData()
         */
-       public $defaultSortOrder = 'DESC';
+       public function readData() {
+               parent::readData();
+               
+               // read applications
+               $this->applicationList = new PackageList();
+               $this->applicationList->getConditionBuilder()->add("package.standalone = ?", array(1));
+               
+               // DEBUG ONLY - remove comment to exclude WCF from display
+               //$this->applicationList->getConditionBuilder()->add("package.packageID <> ?", array(1));
+               // DEBUG ONLY
+               
+               $this->applicationList->sqlLimit = 0;
+               $this->applicationList->readObjects();
+               
+               // read plugins
+               $this->pluginList = Package::getPluginList();
+               
+               // count total plugins
+               $this->pluginCount = $this->pluginList->countObjects();
+               
+               // read plugins
+               $this->pluginList->sqlLimit = 1;
+               $this->pluginList->readObjects();
+       }
        
        /**
-        * @see wcf\page\SortablePage::$validSortFields
+        * @see wcf\page\IPage::assignVariables()
         */
-       public $validSortFields = array('packageID', 'package', 'packageDir', 'packageName', 'instanceNo', 'packageDescription', 'packageVersion', 'packageDate', 'packageURL', 'parentPackageID', 'isUnique', 'standalone', 'author', 'authorURL', 'installDate', 'updateDate');
-       
-       /**
-        * @see wcf\page\MultipleLinkPage::$objectListClassName
-        */     
-       public $objectListClassName = 'wcf\data\package\PackageList';
-       
-       /**
-        * @see wcf\page\MultipleLinkPage::readObjects()
-        */     
-       protected function readObjects() {
-               $this->sqlOrderBy = 'package.'.($this->sortField == 'packageType' ? 'standalone '.$this->sortOrder.', package.parentPackageID '.$this->sortOrder : $this->sortField.' '.$this->sortOrder).($this->sortField != 'packageName' ? ', package.packageName ASC' : '');
+       public function assignVariables() {
+               parent::assignVariables();
                
-               parent::readObjects();
+               WCF::getTPL()->assign(array(
+                       'applications' => $this->applicationList,
+                       'plugins' => $this->pluginList,
+                       'pluginsCount' => $this->pluginCount
+               ));
        }
        
        /**
index 05141b848fec5fc0fdb05904954d37961b909f9e..e4d8c5e5d44cde4b66e2428c07d709553a792690 100755 (executable)
@@ -64,7 +64,7 @@ class PackageViewPage extends AbstractPage {
        public function readParameters() {
                parent::readParameters();
                
-               if (isset($_REQUEST['packageID'])) $this->packageID = intval($_REQUEST['packageID']);
+               if (isset($_REQUEST['id'])) $this->packageID = intval($_REQUEST['id']);
                $this->package = new Package($this->packageID);
                if (!$this->package->packageID) {
                        throw new IllegalLinkException();
index 002d3c2489a2fac67a3d3748755dc1e589fd1293..1004d6f276e9544291450683676447d8dc9261e3 100755 (executable)
@@ -114,7 +114,7 @@ class UserListPage extends SortablePage {
                $this->readUsers();
                
                // build page url
-               $this->url = 'index.php?page=UserList&searchID='.$this->searchID.'&action='.rawurlencode($this->action).'&pageNo='.$this->pageNo.'&sortField='.$this->sortField.'&sortOrder='.$this->sortOrder.''.SID_ARG_2ND_NOT_ENCODED;
+               $this->url = 'index.php/UserList/?searchID='.$this->searchID.'&action='.rawurlencode($this->action).'&pageNo='.$this->pageNo.'&sortField='.$this->sortField.'&sortOrder='.$this->sortOrder.''.SID_ARG_2ND_NOT_ENCODED;
        }
        
        /**
index 452cace7897b252d6bc921a9fb5522a5afdd7735..300e777d4d943776a74378c67fce64fe816d17e0 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace wcf\data\package;
 use wcf\data\AbstractDatabaseObjectAction;
+use wcf\system\WCF;
 
 /**
  * Executes package-related actions.
@@ -32,4 +33,29 @@ class PackageAction extends AbstractDatabaseObjectAction {
         * @see wcf\data\AbstractDatabaseObjectAction::$permissionsUpdate
         */
        protected $permissionsUpdate = array('admin.system.package.canUpdatePackage');
+       
+       /**
+        * @todo        Implement validation
+        */
+       public function validateGetPluginList() {}
+       
+       /**
+        * Returns a list of plugins.
+        * 
+        * @return      array
+        */
+       public function getPluginList() {
+               $pluginList = Package::getPluginList();
+               $pluginList->sqlLimit = 1;
+               $pluginList->sqlOffset = (($this->parameters['activePage'] - 1) * 1);
+               $pluginList->readObjects();
+               
+               WCF::getTPL()->assign(array(
+                       'plugins' => $pluginList
+               ));
+               return array(
+                       'activePage' => $this->parameters['activePage'],
+                       'template' => WCF::getTPL()->fetch('packageListPlugins')
+               );
+       }
 }
index 089b0d4b50d58af1ec654b44c7459c856335465e..155944c8722c9cd37899c53eb30cfc3b2e46fdac 100644 (file)
@@ -45,9 +45,12 @@ class WCFACP extends WCF {
         * Does the user authentication.
         */
        protected function initAuth() {
+               /**
+                * @todo        FIX THIS!
+                */
                if ((!isset($_REQUEST['page']) || ($_REQUEST['page'] != 'Logout' && $_REQUEST['page'] != 'ACPCaptcha')) && (isset($_REQUEST['page']) || !isset($_REQUEST['form']) || $_REQUEST['form'] != 'Login')) {
                        if (WCF::getUser()->userID == 0) {
-                               util\HeaderUtil::redirect('index.php?form=Login'.SID_ARG_2ND_NOT_ENCODED);
+                               util\HeaderUtil::redirect('index.php/Login/'.SID_ARG_1ST);
                                exit;
                        }
                        else {
index 3b6d478ddd2bef48bc3cb6823887788a835dcbd9..b3b6bf648aee02f7c66dedc6d0a30b6b1e33d918 100644 (file)
@@ -83,7 +83,7 @@ class ACPMenuCacheBuilder implements ICacheBuilder {
                                        'packageID' => $packageID,
                                        'menuItem' => 'wcf.acp.option.category.'.$row['categoryName'],
                                        'parentMenuItem' => 'wcf.acp.menu.link.option.category',
-                                       'menuItemLink' => 'index.php?form=Option&categoryID='.$row['categoryID'],
+                                       'menuItemLink' => 'index.php/Option/'.$row['categoryID'].'/',
                                        'packageDir' => '',
                                        'permissions' => $row['permissions'],
                                        'options' => $row['options']
index 1d1bfe6a10f1f6c475262c1693981e3d9f85d7dd..33c8f2412f45f391d0f246313bafc4acb755b02b 100644 (file)
@@ -525,11 +525,11 @@ class PackageInstallationDispatcher {
                $packageInstallation = $statement->fetchArray();
                
                if (!isset($packageInstallation['queueID'])) {
-                       HeaderUtil::redirect('index.php?page=PackageList'.SID_ARG_2ND_NOT_ENCODED);
+                       HeaderUtil::redirect('index.php/PackageList/?'.SID_ARG_1ST);
                        exit;
                }
                else {
-                       HeaderUtil::redirect('index.php?page=Package&action='.$packageInstallation['action'].'&queueID='.$packageInstallation['queueID'].''.SID_ARG_2ND_NOT_ENCODED);
+                       HeaderUtil::redirect('index.php/Package/?action='.$packageInstallation['action'].'&queueID='.$packageInstallation['queueID'].''.SID_ARG_2ND_NOT_ENCODED);
                        exit;
                }
        }
index 7361f45d342bd36d9038bb5da56dfcfc76bdffbd..7b768f8b1f34ff02b71b58807ea3efcc8c88d4a1 100644 (file)
@@ -280,7 +280,7 @@ class PackageUninstallationDispatcher extends PackageInstallationDispatcher {
                        ));
                }
                
-               HeaderUtil::redirect('index.php?page=Package&action=openQueue&processNo='.$processNo.''.SID_ARG_2ND_NOT_ENCODED);
+               HeaderUtil::redirect('index.php/Package/?action=openQueue&processNo='.$processNo.''.SID_ARG_2ND_NOT_ENCODED);
                exit;
        }
 }
index 23702203b8b884a6f6d987b965d69fc9c60cf872..cea5ada08dccde1c90ce6a9793943d3afe889b0e 100644 (file)
@@ -28,25 +28,12 @@ class RequestHandler extends SingletonFactory {
         * @param       boolean         $isACP
         */
        public function handle($application = 'wcf', $isACP = false) {
-               // default values
-               $pageName = 'Index';
-               $pageType = 'page';
-               
-               if (!empty($_GET['page']) || !empty($_POST['page'])) {
-                       $pageName = (!empty($_GET['page']) ? $_GET['page'] : $_POST['page']);
-                       $pageType = 'page';
-               }
-               else if (!empty($_GET['form']) || !empty($_POST['form'])) {
-                       $pageName = (!empty($_GET['form']) ? $_GET['form'] : $_POST['form']);
-                       $pageType = 'form';
-               }
-               else if (!empty($_GET['action']) || !empty($_POST['action'])) {
-                       $pageName = (!empty($_GET['action']) ? $_GET['action'] : $_POST['action']);
-                       $pageType = 'action';
+               if (!RouteHandler::getInstance()->matches($isACP)) {
+                       throw new SystemException("Cannot handle request, no valid route provided.");
                }
                
                // build request
-               $this->buildRequest($pageName, $pageType, $application, $isACP);
+               $this->buildRequest($application, $isACP);
                // start request
                $this->activeRequest->execute();
        }
@@ -54,40 +41,60 @@ class RequestHandler extends SingletonFactory {
        /**
         * Builds a new request.
         *
-        * @param       string          $pageName
         * @param       string          $application
-        * @param       string          $pageType
         * @param       boolean         $isACP
         */
-       protected function buildRequest($pageName, $pageType, $application, $isACP) {
+       protected function buildRequest($application, $isACP) {
                try {
+                       $routeData = RouteHandler::getInstance()->getRouteData();
+                       $controller = $routeData['controller'];
+                       
                        // validate class name
-                       if (!preg_match('~^[a-z0-9_]+$~i', $pageName)) {
-                               throw new SystemException("Illegal class name '".$pageName."'");
+                       if (!preg_match('~^[a-z0-9_]+$~i', $controller)) {
+                               throw new SystemException("Illegal class name '".$controller."'");
                        }
                        
                        // find class
-                       $className = $application.'\\'.($isACP ? 'acp\\' : '').$pageType.'\\'.ucfirst($pageName).ucfirst($pageType);
-                       if ($application != 'wcf' && !class_exists($className)) {
-                               $className = 'wcf\\'.($isACP ? 'acp\\' : '').$pageType.'\\'.ucfirst($pageName).ucfirst($pageType);
-                       }
-                       if (!class_exists($className)) {
-                               throw new SystemException("unable to find class '".$className."'");
-                       }
+                       $classData = $this->getClassData($controller, 'page', $application, $isACP);
+                       if ($classData === null) $classData = $this->getClassData($controller, 'form', $application, $isACP);
+                       if ($classData === null) $classData = $this->getClassData($controller, 'action', $application, $isACP);
                        
-                       // check whether the class is abstract
-                       $reflectionClass = new \ReflectionClass($className);
-                       if ($reflectionClass->isAbstract()) {
-                               throw new SystemException("class '".$className."' is abstract");
+                       if ($classData === null) {
+                               throw new SystemException("unable to find class for controller '".$controller."'");
+                       }
+                       else if (!class_exists($classData['className'])) {
+                               throw new SystemException("unable to find class '".$classData['className']."'");
                        }
                        
-                       $this->activeRequest = new Request($className, $pageName, $pageType);
+                       $this->activeRequest = new Request($classData['className'], $classData['controller'], $classData['pageType']);
                }
                catch (SystemException $e) {
                        throw new IllegalLinkException();
                }
        }
        
+       protected function getClassData($controller, $pageType, $application, $isACP) {
+               $className = $application.'\\'.($isACP ? 'acp\\' : '').$pageType.'\\'.ucfirst($controller).ucfirst($pageType);
+               if ($application != 'wcf' && !class_exists($className)) {
+                       $className = 'wcf\\'.($isACP ? 'acp\\' : '').$pageType.'\\'.ucfirst($controller).ucfirst($pageType);
+               }
+               if (!class_exists($className)) {
+                       return null;
+               }
+               
+               // check whether the class is abstract
+               $reflectionClass = new \ReflectionClass($className);
+               if ($reflectionClass->isAbstract()) {
+                       return null;
+               }
+               
+               return array(
+                       'className' => $className,
+                       'controller' => $controller,
+                       'pageType' => $pageType
+               );
+       }
+       
        /**
         * Returns the active request object.
         *
diff --git a/wcfsetup/install/files/lib/system/request/Route.class.php b/wcfsetup/install/files/lib/system/request/Route.class.php
new file mode 100644 (file)
index 0000000..62fb7d5
--- /dev/null
@@ -0,0 +1,191 @@
+<?php
+namespace wcf\system\request;
+use wcf\system\exception\SystemException;
+
+/**
+ * Route implementation to resolve HTTP requests.
+ * 
+ * Inspired by routing mechanism used by ASP.NET MVC and released under the terms of
+ * the Microsoft Public License (MS-PL) http://www.opensource.org/licenses/ms-pl.html
+ * 
+ * @author     Alexander Ebert
+ * @copyright  2001-2011 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    com.woltlab.wcf
+ * @subpackage system.request
+ * @category   Community Framework
+ */
+class Route {
+       /**
+        * route is restricted to ACP
+        * @var boolean
+        */
+       protected $isACP = false;
+       
+       /**
+        * schema component options
+        * @var array
+        */
+       protected $parameterOptions = array();
+       
+       /**
+        * route name
+        * @var string
+        */
+       protected $routeName = '';
+       
+       /**
+        * route schema data
+        * @var array
+        */
+       protected $routeSchema = array();
+       
+       /**
+        * parsed route data
+        * @var array
+        */
+       protected $routeData = null;
+       
+       /**
+        * Creates a new route.
+        * 
+        * @param       string          $routeName
+        * @param       boolean         $isACP
+        */
+       public function __construct($routeName, $isACP = false) {
+               $this->isACP = $isACP;
+               $this->routeName = $routeName;
+       }
+       
+       /**
+        * Sets route schema, e.g. /{controller}/{id}
+        * 
+        * @param       string          $routeSchema
+        */
+       public function setSchema($routeSchema) {
+               $schemaParts = $this->getParts($routeSchema);
+               $hasController = false;
+               $pattern = '~^{[a-zA-Z]+}$~';
+               foreach ($schemaParts as &$part) {
+                       if (!preg_match($pattern, $part)) {
+                               throw new SystemException("Placeholder expected, but invalid string '" . $part . "' given.");
+                       }
+                       
+                       $part = str_replace(array('{', '}'), '', $part);
+                       if ($part == 'controller') {
+                               $hasController = true;
+                       }
+               }
+               
+               // each route must define a controller
+               if (!$hasController) {
+                       throw new SystemException('Route schema does not provide a valid placeholder for controller.');
+               }
+               
+               $this->routeSchema = $schemaParts;
+       }
+       
+       /**
+        * Sets options for a route parameter.
+        * 
+        * @param       string          $key
+        * @param       string          $default
+        * @param       string          $regexPattern
+        * @param       boolean         $isOptional
+        */
+       public function setParameterOption($key, $default = null, $regexPattern = null, $isOptional = false) {
+               if ($key == 'controller' && (empty($default) && $isOptional)) {
+                       throw new SystemException('Routes require a controller, it is not possible to regard them as optional without a default value.');
+               }
+               
+               $this->parameterOptions[$key] = array(
+                       'default' => $default,
+                       'isOptional' => $isOptional,
+                       'regexPattern' => $regexPattern
+               );
+       }
+       
+       /**
+        * Returns true, if given request url matches this route.
+        * 
+        * @param       string          $requestURL
+        * @return      boolean
+        */
+       public function matches($requestURL) {
+               $urlParts = $this->getParts($requestURL);
+               $data = array();
+               
+               // handle each route schema component
+               for ($i = 0, $size = count($this->routeSchema); $i < $size; $i++) {
+                       $schemaPart = $this->routeSchema[$i];
+                       
+                       if (isset($urlParts[$i])) {
+                               if (isset($this->parameterOptions[$schemaPart])) {
+                                       // validate parameter against a regex pattern
+                                       if ($this->parameterOptions[$schemaPart]['regexPattern'] !== null) {
+                                               $pattern = '~^' . $this->parameterOptions[$schemaPart]['regexPattern'] . '$~';
+                                               if (!preg_match($pattern, $urlParts[$i])) {
+                                                       return false;
+                                               }
+                                       }
+                               }
+                               
+                               // url component passed previous validation
+                               $data[$schemaPart] = $urlParts[$i];
+                       }
+                       else {
+                               if (isset($this->parameterOptions[$schemaPart])) {
+                                       // default value is provided
+                                       if ($this->parameterOptions[$schemaPart]['default'] !== null) {
+                                               $data[$schemaPart] = $this->parameterOptions[$schemaPart]['default'];
+                                               continue;
+                                       }
+                                       
+                                       // required parameter is missing
+                                       if (!$this->parameterOptions[$schemaPart]['isOptional']) {
+                                               return false;
+                                       }
+                               }
+                       }
+               }
+               
+               $this->routeData = $data;
+               return true;
+       }
+       
+       /**
+        * Returns parsed route data.
+        * 
+        * @return      array
+        */
+       public function getRouteData() {
+               return $this->routeData;
+       }
+       
+       /**
+        * Returns non-empty URL components.
+        * 
+        * @param       string          $requestURL
+        * @return      array
+        */
+       protected function getParts($requestURL) {
+               $urlParts = preg_split('~(\/|\-|\_|\.)~', $requestURL);
+               foreach ($urlParts as $index => $part) {
+                       if (empty($part)) {
+                               unset($urlParts[$index]);
+                       }
+               }
+               
+               // re-index parts
+               return array_values($urlParts);
+       }
+       
+       /**
+        * Returns true if route applies for ACP.
+        * 
+        * @return      boolean
+        */
+       public function isACP() {
+               return $this->isACP;
+       }
+}
diff --git a/wcfsetup/install/files/lib/system/request/RouteHandler.class.php b/wcfsetup/install/files/lib/system/request/RouteHandler.class.php
new file mode 100644 (file)
index 0000000..bb0146e
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+namespace wcf\system\request;
+use wcf\system\SingletonFactory;
+
+/**
+ * Handles routes for HTTP requests.
+ * 
+ * Inspired by routing mechanism used by ASP.NET MVC and released under the terms of
+ * the Microsoft Public License (MS-PL) http://www.opensource.org/licenses/ms-pl.html
+ * 
+ * @author     Alexander Ebert
+ * @copyright  2001-2011 WoltLab GmbH
+ * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @package    com.woltlab.wcf
+ * @subpackage system.request
+ * @category   Community Framework
+ */
+class RouteHandler extends SingletonFactory {
+       /**
+        * list of available routes
+        * @var array<wcf\system\request\Route>
+        */
+       protected $routes = array();
+       
+       /**
+        * parsed route data
+        * @var array
+        */
+       protected $routeData = null;
+       
+       /**
+        * @see wcf\system\SingletonFactory::init()
+        */
+       protected function init() {
+               $this->addDefaultRoutes();
+       }
+       
+       /**
+        * Adds default routes.
+        */
+       protected function addDefaultRoutes() {
+               $acpRoute = new Route('ACP_default', true);
+               $acpRoute->setSchema('/{controller}/{id}');
+               $acpRoute->setParameterOption('controller', 'Index', null, true);
+               $acpRoute->setParameterOption('id', null, '\d+', true);
+               $this->addRoute($acpRoute);
+               
+               $defaultRoute = new Route('default');
+               $defaultRoute->setSchema('/{controller}/{id}');
+               $defaultRoute->setParameterOption('controller', 'Index', null, true);
+               $defaultRoute->setParameterOption('id', null, '\d+', true);
+               $this->addRoute($defaultRoute);
+       }
+       
+       /**
+        * Adds a new route to the beginning of all routes.
+        * 
+        * @param       wcf\system\request\Route        $route
+        */
+       public function addRoute(Route $route) {
+               array_unshift($this->routes, $route);
+       }
+       
+       /**
+        * Returns true, if a route matches. Please bear in mind, that the
+        * first route which is able to consume all path components is used,
+        * even if other routes may fit better. Route order is crucial!
+        * 
+        * @param       boolean         $isACP
+        * @return      boolean
+        */
+       public function matches($isACP) {
+               $pathInfo = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : '';
+               
+               foreach ($this->routes as $route) {
+                       if ($isACP != $route->isACP()) {
+                               continue;
+                       }
+                       
+                       if ($route->matches($pathInfo)) {
+                               $this->routeData = $route->getRouteData();
+                               $this->registerRouteData();
+                               return true;
+                       }
+               }
+               
+               return false;
+       }
+       
+       /**
+        * Returns parsed route data
+        * 
+        * @return      array
+        */
+       public function getRouteData() {
+               return $this->routeData;
+       }
+       
+       /**
+        * Registers route data within $_GET and $_REQUEST.
+        */     
+       protected function registerRouteData() {
+               foreach ($this->routeData as $key => $value) {
+                       $_GET[$key] = $value;
+                       $_REQUEST[$key] = $value;
+               }
+       }
+}