}
};
+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.
*
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)
$('#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();
}, 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,
// 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)
// 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,
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,
</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&sessionLogID={@$sessionLogID}&pageNo={@$pageNo}&sortField=sessionAccessLogID&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&sessionLogID={@$sessionLogID}&pageNo={@$pageNo}&sortField=ipAddress&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&sessionLogID={@$sessionLogID}&pageNo={@$pageNo}&sortField=time&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&sessionLogID={@$sessionLogID}&pageNo={@$pageNo}&sortField=packageName&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&sessionLogID={@$sessionLogID}&pageNo={@$pageNo}&sortField=className&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&sessionLogID={@$sessionLogID}&pageNo={@$pageNo}&sortField=requestURI&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&sessionLogID={@$sessionLogID}&pageNo={@$pageNo}&sortField=requestMethod&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}&sortField=sessionAccessLogID&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}&sortField=ipAddress&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}&sortField=time&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}&sortField=packageName&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}&sortField=className&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}&sortField=requestURI&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}&sortField=requestMethod&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>
</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&pageNo={@$pageNo}&sortField=sessionLogID&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&pageNo={@$pageNo}&sortField=username&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&pageNo={@$pageNo}&sortField=ipAddress&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&pageNo={@$pageNo}&sortField=userAgent&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&pageNo={@$pageNo}&sortField=time&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&pageNo={@$pageNo}&sortField=lastActivityTime&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&pageNo={@$pageNo}&sortField=accesses&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}&sortField=sessionLogID&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}&sortField=username&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}&sortField=ipAddress&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}&sortField=userAgent&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}&sortField=time&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}&sortField=lastActivityTime&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}&sortField=accesses&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>
{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&sessionLogID={@$sessionLog->sessionLogID}{@SID_ARG_2ND}">{$sessionLog->username}</a></p></td>
- <td class="columnURL columnIpAddress"><p><a href="index.php?page=ACPSessionLog&sessionLogID={@$sessionLog->sessionLogID}{@SID_ARG_2ND}">{$sessionLog->ipAddress}</a>{if $sessionLog->hostname != $sessionLog->ipAddress}<br /><a href="index.php?page=ACPSessionLog&sessionLogID={@$sessionLog->sessionLogID}{@SID_ARG_2ND}">{$sessionLog->hostname}</a>{/if}</p></td>
- <td class="columnText columnUserAgent"><p><a href="index.php?page=ACPSessionLog&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>
<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>
<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>
<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&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>
</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&pageNo={@$pageNo}&sortField=cronjobID&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&pageNo={@$pageNo}&sortField=startMinute&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&pageNo={@$pageNo}&sortField=startHour&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&pageNo={@$pageNo}&sortField=startDom&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&pageNo={@$pageNo}&sortField=startMonth&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&pageNo={@$pageNo}&sortField=startDow&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&pageNo={@$pageNo}&sortField=description&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&pageNo={@$pageNo}&sortField=nextExec&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}&sortField=cronjobID&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}&sortField=startMinute&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}&sortField=startHour&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}&sortField=startDom&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}&sortField=startMonth&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}&sortField=startDow&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}&sortField=description&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}&sortField=nextExec&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>
{/if}
{if $cronjob->isEditable()}
- <a href="index.php?form=CronjobEdit&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&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>
</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&pageNo={@$pageNo}&sortField=cronjobID&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&pageNo={@$pageNo}&sortField=className&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&pageNo={@$pageNo}&sortField=description&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&pageNo={@$pageNo}&sortField=execTime&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}&sortField=cronjobID&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}&sortField=className&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}&sortField=description&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}&sortField=execTime&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>
--- /dev/null
+{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&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&pageNo={@$pageNo}&sortField=packageID&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&pageNo={@$pageNo}&sortField=packageName&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&pageNo={@$pageNo}&sortField=author&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&pageNo={@$pageNo}&sortField=packageVersion&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&pageNo={@$pageNo}&sortField=updateDate&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&action=update&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&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&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'}
<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&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>
<!-- 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>
<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>
{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>
<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'}
<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>
<p class="error">{lang}wcf.global.form.error{/lang}</p>
{/if}
-<form method="post" action="index.php?form=Option&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>
<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>
<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>
//]]>
</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>
<tbody>
{foreach from=$updatableInstances item=$package}
<tr>
- <td class="columnTitle"><p><a href="index.php?page=Package&action=install&queueID={@$queueID}&step=changeToUpdate&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&queueID={@$queueID}&step=changeToUpdate&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&action={@$action}&queueID={@$queueID}&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}&queueID={@$queueID}&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}
{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&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&pageNo={@$pageNo}&sortField=packageID&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&pageNo={@$pageNo}&sortField=packageName&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&pageNo={@$pageNo}&sortField=author&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&pageNo={@$pageNo}&sortField=packageVersion&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&pageNo={@$pageNo}&sortField=updateDate&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&action=update&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&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>
+
+ <gimme sum icon>
+
+ <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&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'}
--- /dev/null
+{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&action=update&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}
<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>
<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>
{if $packageObj->parentPackageID}
<dl>
<dt>{lang}wcf.acp.package.view.parent{/lang}</dt>
- <dd><a href="index.php?page=PackageView&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&action=update&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&action=startUninstall&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&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&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>
{/if}
{if $packageInstallationStack|count}
- <form method="post" action="index.php?form=PackageUpdate">
+ <form method="post" action="index.php/PackageUpdate/">
<div class="border content">
<fieldset>
<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>
{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>
</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>
<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&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&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&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&action=startUninstall&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&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&action=update&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&action=update&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&action=startUninstall&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&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&action=update&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&action=startUninstall&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&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'}
<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}&packageUpdateServerID={@$packageUpdateServerID}{/if}">
+<form method="post" action="index.php/UpdateServer{@$action|ucfirst}/{if $packageUpdateServerID|isset}{@$packageUpdateServerID}/{/if}">
<div class="border content">
<fieldset>
{/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&pageNo={@$pageNo}&sortField=packageUpdateServerID&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&pageNo={@$pageNo}&sortField=serverURL&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&pageNo={@$pageNo}&sortField=packages&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&pageNo={@$pageNo}&sortField=status&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&pageNo={@$pageNo}&sortField=errorMessage&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&pageNo={@$pageNo}&sortField=lastUpdateTime&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}&sortField=packageUpdateServerID&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}&sortField=serverURL&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}&sortField=packages&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}&sortField=status&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}&sortField=errorMessage&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}&sortField=lastUpdateTime&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&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&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>
{@$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}
<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>
<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">
<legend>{lang}wcf.acp.user.assignToGroup.markedUsers{/lang}</legend>
<ul>
- {implode from=$users item=$user}<li><a href="index.php?form=UserEdit&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>
</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&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>
<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>
</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>
<table class="bigList">
<thead>
<tr class="tableHead">
- <th class="columnID columnGroupID{if $sortField == 'groupID'} active{/if}" colspan="2"><a href="index.php?page=UserGroupList&pageNo={@$pageNo}&sortField=groupID&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&pageNo={@$pageNo}&sortField=groupName&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&pageNo={@$pageNo}&sortField=members&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}&sortField=groupID&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}&sortField=groupName&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}&sortField=members&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>
<tr id="groupContainer{@$group->groupID}">
<td class="columnIcon">
{if $group->isEditable()}
- <a href="index.php?form=UserGroupEdit&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}
{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&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&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>
{@$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>
{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>
<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&searchID={@$searchID}&action={@$encodedAction}&pageNo={@$pageNo}&sortField=userID&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&searchID={@$searchID}&action={@$encodedAction}&pageNo={@$pageNo}&sortField=username&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}&action={@$encodedAction}&pageNo={@$pageNo}&sortField=userID&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}&action={@$encodedAction}&pageNo={@$pageNo}&sortField=username&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&searchID={@$searchID}&action={@$encodedAction}&pageNo={@$pageNo}&sortField={$column}&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}&action={@$encodedAction}&pageNo={@$pageNo}&sortField={$column}&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&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&userID={@$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>
+ <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}
{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&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>
<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 == ''}
<legend>{lang}wcf.acp.user.sendMail.markedUsers{/lang}</legend>
<div>
- {implode from=$users item=$user}<a href="index.php?form=UserEdit&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}
<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>
<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">
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
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
});
},
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;
// 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;
$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;
}
$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;
}
}
$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;
}
$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;
}
// 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;
--- /dev/null
+<?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();
+ }
+}
<?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
+ ));
}
/**
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();
$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;
}
/**
<?php
namespace wcf\data\package;
use wcf\data\AbstractDatabaseObjectAction;
+use wcf\system\WCF;
/**
* Executes package-related actions.
* @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')
+ );
+ }
}
* 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 {
'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']
$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;
}
}
));
}
- 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;
}
}
* @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();
}
/**
* 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.
*
--- /dev/null
+<?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;
+ }
+}
--- /dev/null
+<?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;
+ }
+ }
+}