| 1 | {include file='header' pageTitle='wcf.acp.exceptionLog'} |
| 2 | <script type="text/javascript"> |
| 3 | //<![CDATA[ |
| 4 | $(function() { |
| 5 | {if $exceptionID}window.location.hash = '{$exceptionID|encodeJS}';{/if} |
| 6 | WCF.Collapsible.Simple.init(); |
| 7 | |
| 8 | $('#exceptionID').on('keyup keydown keypress', function () { |
| 9 | if ($.trim($(this).val()) == '') { |
| 10 | $('#logFile').enable().parents('dl').removeClass('disabled'); |
| 11 | } |
| 12 | else { |
| 13 | $('#logFile').disable().parents('dl').addClass('disabled'); |
| 14 | } |
| 15 | }).trigger('keypress'); |
| 16 | |
| 17 | $('.jsCopyException').click(function () { |
| 18 | $(this).select(); |
| 19 | }); |
| 20 | }); |
| 21 | //]]> |
| 22 | </script> |
| 23 | |
| 24 | <header class="boxHeadline"> |
| 25 | <h1>{lang}wcf.acp.exceptionLog{/lang}</h1> |
| 26 | </header> |
| 27 | |
| 28 | {if !$logFiles|empty} |
| 29 | <form action="{link controller='ExceptionLogView'}{/link}"> |
| 30 | <div class="container containerPadding marginTop"> |
| 31 | <fieldset><legend>{lang}wcf.acp.exceptionLog.search{/lang}</legend> |
| 32 | <dl> |
| 33 | <dt><label for="exceptionID">{lang}wcf.acp.exceptionLog.search.exceptionID{/lang}</label></dt> |
| 34 | <dd> |
| 35 | <input type="text" id="exceptionID" name="exceptionID" value="{$exceptionID}" autofocus="autofocus" class="medium" /> |
| 36 | </dd> |
| 37 | </dl> |
| 38 | <dl> |
| 39 | <dt><label for="logFile">{lang}wcf.acp.exceptionLog.search.logFile{/lang}</label></dt> |
| 40 | <dd> |
| 41 | <select id="logFile" name="logFile"> |
| 42 | {htmlOptions options=$logFiles selected=$logFile} |
| 43 | </select> |
| 44 | </dd> |
| 45 | </dl> |
| 46 | </fieldset> |
| 47 | |
| 48 | <div class="formSubmit"> |
| 49 | <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" /> |
| 50 | {@SID_INPUT_TAG} |
| 51 | </div> |
| 52 | </div> |
| 53 | </form> |
| 54 | {/if} |
| 55 | |
| 56 | <div class="contentNavigation"> |
| 57 | {pages print=true controller="ExceptionLogView" link="pageNo=%d&logFile=$logFile"} |
| 58 | |
| 59 | {hascontent} |
| 60 | <nav> |
| 61 | <ul> |
| 62 | {content} |
| 63 | {event name='contentNavigationButtonsTop'} |
| 64 | {/content} |
| 65 | </ul> |
| 66 | </nav> |
| 67 | {/hascontent} |
| 68 | </div> |
| 69 | |
| 70 | {if !$logFiles|empty} |
| 71 | {if $logFile} |
| 72 | {foreach from=$exceptions item='exception' key='exceptionKey'} |
| 73 | <div class="tabularBox tabularBoxTitle marginTop" id="{$exceptionKey}"> |
| 74 | <header> |
| 75 | <h2><a class="jsCollapsible jsTooltip" data-is-open="{if $exceptionKey == $exceptionID}1{else}0{/if}" data-collapsible-container="exception_{$exceptionKey}" title="{lang}wcf.global.button.collapsible{/lang}" class="jsTooltip"><span class="icon icon16 icon-chevron-{if $exceptionKey == $exceptionID}down{else}right{/if}"></span></a> {$exception[message]}</h2> |
| 76 | <small>{$exception[date]|strtotime|plainTime}</small> |
| 77 | </header> |
| 78 | |
| 79 | <div id="exception_{$exceptionKey}" class="container containerPadding" {if $exceptionKey != $exceptionID} style="display: none;"{/if}> |
| 80 | <dl> |
| 81 | <dt>{lang}wcf.acp.exceptionLog.exception.file{/lang}</dt> |
| 82 | <dd>{$exception[file]} ({$exception[line]})</dd> |
| 83 | </dl> |
| 84 | <dl> |
| 85 | <dt>{lang}wcf.acp.exceptionLog.exception.phpVersion{/lang}</dt> |
| 86 | <dd>{$exception[phpVersion]}</dd> |
| 87 | </dl> |
| 88 | <dl> |
| 89 | <dt>{lang}wcf.acp.exceptionLog.exception.wcfVersion{/lang}</dt> |
| 90 | <dd>{$exception[wcfVersion]}</dd> |
| 91 | </dl> |
| 92 | <dl> |
| 93 | <dt>{lang}wcf.acp.exceptionLog.exception.requestURI{/lang}</dt> |
| 94 | <dd>{$exception[requestURI]}</dd> |
| 95 | </dl> |
| 96 | <dl> |
| 97 | <dt>{lang}wcf.acp.exceptionLog.exception.referrer{/lang}</dt> |
| 98 | <dd>{$exception[referrer]}</dd> |
| 99 | </dl> |
| 100 | <dl> |
| 101 | <dt>{lang}wcf.acp.exceptionLog.exception.userAgent{/lang}</dt> |
| 102 | <dd>{$exception[userAgent]}</dd> |
| 103 | </dl> |
| 104 | <dl> |
| 105 | <dt>{lang}wcf.acp.exceptionLog.exception.stacktrace{/lang}</dt> |
| 106 | <dd style="font-family: monospace; word-wrap: wrap-all; word-break: break-all;"> |
| 107 | <ul> |
| 108 | <li>{@"</li><li>"|implode:$exception[stacktrace]}</li> |
| 109 | </ul> |
| 110 | </dd> |
| 111 | </dl> |
| 112 | <dl> |
| 113 | <dt>{lang}wcf.acp.exceptionLog.exception.copy{/lang}</dt> |
| 114 | <dd><textarea rows="5" cols="40" class="jsCopyException" readonly="readonly">{$exception[0]}</textarea></dd> |
| 115 | </dl> |
| 116 | </div> |
| 117 | </div> |
| 118 | {/foreach} |
| 119 | {elseif $exceptionID} |
| 120 | <p class="error">{lang}wcf.acp.exceptionLog.exceptionNotFound{/lang}</p> |
| 121 | {/if} |
| 122 | {else} |
| 123 | <p class="info">{lang}wcf.acp.exceptionLog.noneAvailable{/lang}</p> |
| 124 | {/if} |
| 125 | |
| 126 | {include file='footer'} |