issue:17256358 - added issuetracker module

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4484 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
haneul 2008-09-09 01:39:39 +00:00
parent 8f6568e5a7
commit 5cccd30a27
163 changed files with 7363 additions and 0 deletions

View file

@ -0,0 +1,210 @@
@charset "utf-8";
td.vtop { vertical-align:top; }
/* skin Title */
.skinTitle { border:3px solid #DDDDDD; background-color:#FEFFF0; padding:15px; margin-bottom:15px; color:#666666; font-weight:bold; }
.skinTitle blockquote { margin:5px 0 0 0; padding:5px 0 0 0; font-weight:normal; border-top:1px solid #DDDDDD; }
/* main navigation */
div.issueNav { clear:both; overflow:hidden; height:23px; margin-bottom:10px; position:relative;}
.issueNav ul { position:absolute; top:0; right:0; height:23px; margin:0; padding:0;z-index:2;}
.issueNav li { float:left; list-style:none; margin:0 0 0 10px; padding:5px 7px 0 7px; height:16px; border:1px solid #AAAAAA; border-bottom:none;}
.issueNav li.unselected { border-bottom:1px solid #AAAAAA; background-color:#FFFCF0;}
.issueNav li a { text-decoration:none; color:#7D6608; }
.issueNav li a:hover { color:#544301;}
.issueNav li.selected { font-weight:bold; color:#544301; border-bottom:1px solid #FFFFFF;}
.issueNav li.selected a { font-weight:bold; }
.issueNav .bottomLine { height:22px; position:absolute; top:0; left:0; width:100%; border-bottom:1px solid #AAAAAA; z-index:1;}
/* issue list */
form.close { display:none; }
form.issueSearch { padding:0; margin:0 0 10px 0; overflow:hidden; }
form.issueSearch ul { margin:0; padding: 0; }
form.issueSearch ul li { list-style:none; float:left; padding:5px 10px 0 0; white-space:nowrap; }
form.issueSearch ul li.displayOpt { clear:left; width:100%; }
form.issueSearch ul li.keywordSearch { clear:left; }
form.issueSearch select { width:130px; }
form.issueSearch input.inputTypeText { width:124px; }
form.issueSearch input.inputTypeSubmit { width:130px; border:1px solid; border-color:#d8d8d8 #a6a6a6 #a6a6a6 #d8d8d8; height:20px; background:#EFEFEF; font-size:1em; _font-size:9pt; }
form.issueSearch ul li ol { margin:0 2px 0 0; padding:0; border-bottom:none; }
form.issueSearch ul li ol li { list-style:none; white-space:nowrap; overflow:hidden; float:left; letter-spacing:-2px;}
table.issues { border:0; border-spacing:0; border:1px solid #333333; overflow:hidden; }
table.issues thead tr { background:url("../images/tableHeader.gif") repeat left top; height:20px; color:#FFFFFF; }
table.issues thead tr th { width:10px;}
table.issues thead tr th div { white-space:nowrap; margin:0; }
table.issues thead tr th.title { width:100%; }
table.issues tbody td { white-space:nowrap; padding:5px 2px; text-align:center; border-bottom:1px solid #EEEEEE; }
table.issues tbody td a { text-decoration:none; color:#555555; }
table.issues tbody td.no { text-align:center; font-family:tahoma; font-size:8pt; }
table.issues tbody td.title { white-space:normal; font-weight:bold; text-align:left; }
table.issues tbody td.title strong.comment { background:url("../images/iconComment.gif") no-repeat left 1px; padding-left:15px; font-size:8pt; font-family:tahoma; font-weight:normal; }
table.issues tbody td.title strong.trackback { background:url("../images/iconTrackback.gif") no-repeat left 1px; padding-left:15px; font-size:8pt; font-family:tahoma; font-weight:normal; color:#8CCF3C;}
table.issues tbody td.regdate { text-align:center; font-family:tahoma; font-size:8pt; }
table.issues tbody td.nick_name { text-align:left; }
div.pageNavigation { margin:10px 0 0 0; text-align:center; padding:5px 3px; height:30px; }
div.pageNavigation span { padding:3px 5px; border:1px solid #DDDDDD; color:#888888; margin:0 3px; }
div.pageNavigation span:hover { border-color:#888888; }
div.pageNavigation span a { text-decoration:none; color:#888888; }
div.pageNavigation span a:hover { color:#444444; }
div.pageNavigation span.current { text-decoration:none; padding:3px; margin:0 3px; color:#888888; font-weight:bold; border:none; }
/* milestone */
table.milestones { width:100%; clear:both; border:0; border-spacing:0; table-layout:fixed; border:1px solid #333333; border-bottom:none; }
table.milestones thead tr { background:url("../images/tableHeader.gif") repeat left top; height:20px; color:#FFFFFF; }
table.milestones thead tr th { white-space:nowrap; }
table.milestones tbody tr.title td { background-color:#EFEFEF; }
table.milestones tbody td { padding:5px; text-align:center; border-bottom:1px solid #EEEEEE; }
table.milestones tbody td.title { font-weight:bold; text-align:left; }
table.milestones tbody td.title a { text-decoration:none; color:#444444; }
table.milestones tbody td.deadline { color:#0A6E03; font-family:tahoma; font-size:9pt; }
table.milestones tbody td.status a { text-decoration:none; font-family:tahoma; font-size:8pt; font-weight:bold;}
table.milestones tbody td.total a { text-decoration:none; color:#444444; font-family:tahoma; font-size:8pt; font-weight:bold;}
table.milestones tbody td.description { text-align:left; padding-left:10px; border-bottom:1px solid #333333; }
table.milestones tbody td.completed { text-decoration:line-through; }
table.milestones tbody td.released_date { text-align:right; color:#EF4B18; font-family:tahoma; font-size:9pt; }
/* download */
table.downloads { width:100%; clear:both; border:0; border-spacing:0; table-layout:fixed; border:1px solid #333333;}
table.downloads thead tr { background:url("../images/tableHeader.gif") repeat left top; height:20px; color:#FFFFFF; }
table.downloads td.package { background-color:#EFEFEF; padding:3px 0 5px 5px; border-top:1px solid #333333; }
table.downloads td.package h3 { color:#030C83; font-size:9pt; font-weight:bold; margin:0; padding:0; float:left; }
table.downloads td.package blockquote { clear:both; padding:5px; border:1px dotted #AAAAAA; background-color:#F3F3F3; margin:5px 5px 5px 0; }
table.downloads td.packageLeft { background-color:#EFEFEF; }
table.downloads td.null { background-color:#EFEFEF; }
table.downloads td.nullLine { background-color:#EFEFEF; border-top:1px solid #AAAAAA; }
table.downloads td.moreRelease { background-color:#EFEFEF; border-top:1px solid #333333; text-align:right; padding:5px; }
table.downloads td.moreRelease a { color:#4753EE; text-decoration:none; }
table.downloads td.release { padding:5px; border-left:1px solid #AAAAAA; border-top:1px solid #AAAAAA; background-color:#ECEDF5; }
table.downloads td.release h3 { font-size:9pt; font-weight:bold; margin:0; padding:0; float:left; }
table.downloads td.release h3 a { text-decoration:none; color:#444444; }
table.downloads td.release h3 a:hover { text-decoration:underline; }
table.downloads td.release span { float:left; margin:0 0 0 10px; font-size:8pt; font-family:tahoma; color:#AAAAAA; }
table.downloads td.releaseLeft { border-left:1px solid #AAAAAA; }
table.downloads td.none_release { padding:5px; border-left:1px solid #AAAAAA; border-top:1px solid #AAAAAA; background-color:#EEEEEE; color:#888888;}
table.downloads td.releaseNoteTitle { border-left:1px solid #AAAAAA; background-color:#EFEFEF; padding:5px; border-top:1px solid #DDDDDD; font-weight:bold; color:#058FC2;}
table.downloads td.releaseNote { border-left:1px solid #AAAAAA; padding:5px; border-top:1px dotted #DDDDDD; }
table.downloads td.releaseChangesTitle { border-left:1px solid #AAAAAA; background-color:#EFEFEF; padding:5px; border-top:1px solid #DDDDDD; font-weight:bold; color:#C24305;}
table.downloads td.releaseChanges { border-left:1px solid #AAAAAA; padding:5px; border-top:1px dotted #DDDDDD; border-bottom:1px solid #DDDDDD;}
table.downloads td.releaseFilesTitle { border-left:1px solid #AAAAAA; background-color:#EFEFEF; padding:5px; border-top:1px solid #DDDDDD; font-weight:bold; color:#444444;}
table.downloads td.filename { padding:5px 5px 5px 15px; background:url("../images/file.gif") no-repeat left 5px; }
table.downloads td.filename a { padding:5px; color:#000000; text-decoration:none; }
table.downloads td.filename a:hover { text-decoration:underline; }
table.downloads td.filename a:visited { color:#AAAAAA; }
table.downloads td.filesize { padding:5px; color:#999999; font-family:tahoma; font-size:8pt; text-align:center;}
table.downloads td.download_count { padding:5px; color:#999999; font-family:tahoma; font-size:8pt; text-align:center;}
table td.summaryText div { line-height:20px; padding-left:20px; cursor:pointer;}
table td.summaryText div.open { background:url("../images/opener.gif") no-repeat left 4px; overflow:visible; }
table td.summaryText div.close { background:url("../images/closer.gif") no-repeat left 4px; height:20px; overflow:hidden; }
/* alertMessage */
blockquote.alertMessage { margin:50px auto 20px auto; width:300px; border-bottom:1px solid #DDDDDD; padding:10px; color:#555555; }
ul.alertNav { margin:0 auto; width:300px; padding:0; }
ul.alertNav li { list-style:none; float:right; margin:0; padding:0; }
/* new Issue */
.newIssue table { border:0; border-spacing:0; overflow:hidden; width:100%; border-top:1px solid #EEEEEE; }
.newIssue table tr th { text-align:right; border-bottom:1px solid #EEEEEE; padding:8px 0 5px 0; vertical-align:top; }
.newIssue table tr td { border-bottom:1px solid #EEEEEE; padding:5px 0 5px 0; }
.newIssue table tr th label { white-space:nowrap; font-weight:normal; color:#DB7201; margin:0 10px 0 10px; }
.newIssue table tr td input.wide { width:98%; }
.newIssue table tr td textarea.wide { width:98%; height:80px; }
.newIssue table tr td ul { margin:0; padding:0; }
.newIssue table tr td ol { margin:0; padding:0; }
.newIssue table tr td li { list-style:none; border-bottom:1px solid #EFEFEF; padding-bottom:3px; }
.newIssue table tr td p { margin:5px 0 0 0; padding:0; color:#888888; }
.newIssue dl.option { margin:0 !important; padding:0 !important; }
.newIssue dl.option dd { margin:0 10px 0 0 !important; padding:0 !important; float:left; }
div.display_date { cursor:pointer; width:80px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; margin-right:10px;}
div.editor table { width:95%; }
/* view Issue */
.viewIssue { }
.viewIssue table { border-spacing:0; overflow:hidden; width:100%; border:1px solid #AAAAAA; background-color:#FFFFF6;}
.viewIssue table tr th { text-align:right; border-bottom:1px solid #EEEEEE; padding:8px 10px 5px 10px; vertical-align:top; color:#898700; font-weight:normal;}
.viewIssue table tr th.title { color:#444444; font-size:13pt; text-align:left; font-weight:bold; }
.viewIssue table tr th.title span { font-size:9pt; color:#4F86B0;}
.viewIssue table tr td { border-bottom:1px solid #EEEEEE; padding:5px 0 5px 0; color:#3B3A00; }
.viewIssue table tr td.description { color:#444444; text-align:left; padding:20px; }
.viewIssue table tr td.description a { color:#3A945E; text-decoration:none; }
.viewIssue table tr td.description a:hover { text-decoration:underline; }
.viewIssue table tr td ul.tag { margin:0; padding:0; }
.viewIssue table tr td ul.tag li { list-style:none; float:left; }
.viewIssue table tr td ul.tag li a { text-decoration:none; color:#3B3A00; }
.viewIssue table tr td.inputPassword { padding:20px; text-align:center; }
.viewIssue table tr td.inputPassword form input.inputTypeText { height:15px; }
.viewIssue table tr td.inputPassword form input.inputTypeSubmit { border:1px solid; border-color:#d8d8d8 #a6a6a6 #a6a6a6 #d8d8d8; height:20px; background:#EFEFEF; }
.viewIssue div.button { clear:both; float:right; margin-top:10px; }
.viewIssue div.button ul { margin:0; padding:0; }
.viewIssue div.button ul li { list-style:none; color:#AAAAAA; float:left; margin-left:10px; }
.viewIssue div.button ul li a { text-decoration:none; color:#666666; font-weight:bold; }
fieldset.history { border:1px solid #CCCCCC; margin-top:10px; }
fieldset.history legend { padding:0 10px; }
fieldset.history legend span.date { font-size:8pt; font-family:tahoma; color:#AAAAAA; margin-right:10px; }
fieldset.history ul { margin:0; padding:0; }
fieldset.history ul li { list-style:none; }
fieldset.history ul li a { color:#3A945E; text-decoration:none; }
fieldset.history ul li a:hover { text-decoration:underline; }
fieldset.history ul li ol { margin:5px 0 0 0; padding:0; }
fieldset.history ul li ol li { margin-left:10px; padding-left:14px; list-style:none; margin-bottom:8px; background:url("../images/bul.gif") no-repeat left 1px;}
fieldset.history ul li ol li span.source { color:#B04F4F; }
fieldset.history ul li ol li span.target { color:#4F86B0; font-weight:bold; }
fieldset.history ul li ol li span.key { color:#888888; font-weight:bold; }
fieldset.history ul li.content { padding:10px; color:#444444;}
.document_popup_menu { cursor:pointer; text-align:right; background:none; background:url(../images/document_menu.gif) no-repeat right top; padding:0 15px 0 0; height:18px; margin-top:20px; }
/* delete Issue */
.deleteIssue { width:40%; margin:0 auto; }
.deleteIssue h3 { text-align:center; margin:30px 0 10px 0; padding:0 0 10px 0; border-bottom:1px solid #DDDDDD; }
.deleteIssue ul.button { margin:0 0 20px 0; padding:0; text-align:center; }
.deleteIssue ul.button li { list-style:none; display:inline; margin-left:10px; }
/* view Trackback */
.viewTrackback { border:1px solid #C3D5A5; margin-top:10px; padding:10px; }
.viewTrackback h3 { margin:0; padding:0; font-size:9pt; font-weight:normal; color:#335000; }
.viewTrackback h3 a { font-weight:bold; text-decoration:none; color:#335000; }
.viewTrackback h3 address { display:inline; font-size:8pt; font-family:tahoma; color:#4A931D; }
.viewTrackback ul { padding:5px 0; margin:5px 0; border-top:1px solid #C3D5A5; overflow:hidden;}
.viewTrackback ul li { list-style:none; color:#558404; float:left; margin-right:10px; }
.viewTrackback ul li address { margin-bottom:5px; }
.viewTrackback ul li a { text-decoration:none; color:#558404; }
.viewTrackback ul li.date { font-size:8pt; font-family:tahoma; }
.viewTrackback ul li.excerpt { clear:both; color:#335000; }
/* histories */
.issueHistories { border:1px solid #BABABA; padding:10px; margin-top:10px; }
.newHistory { border:1px solid #BABABA; padding:10px; margin-top:10px; }
.newHistory table { border-top:none; }
.newHistory table tr th { border-bottom:none; }
.newHistory table tr td { border-bottom:none; }
.newHistory table tr td ul li { border-bottom:none; margin-bottom:5px; }
.newHistory table tr td ul li label { margin:0 10px 0 10px; color:#444444; }
.newHistory table tr td ul li label { margin:0 10px 0 10px; color:#444444; }
.newHistory table tr td textarea { height:200px !important; }
/* issue status color */
.issue_new, .issue_new a { color:#333333 !important; }
.issue_assign, .issue_assign a { color:#0A7DBE !important; }
.issue_resolve, .issue_resolve a { color:#079B2D !important; }
.issue_reopen, .issue_reopen a { color:#9B5A07 !important; }
.issue_postponed, .issue_postponed a { color:#9E9425 !important; }
.issue_invalid, .issue_invalid a { color:#949494 !important; }
.issue_duplicated, .issue_duplicted a { color:#949494 !important; }
.issue_reviewing, .issue_reviewing a { color:#DD075A !important; }

View file

@ -0,0 +1,45 @@
@charset "utf-8";
.sourceBrowser h3 { background:url("../images/tableHeader.gif") repeat left top; height:20px; font-size:10pt; font-family:tahoma; color:#FFFFFF; margin:0; padding:0 0 0 10px; clear:both; }
.sourceBrowser h1 { background-color:#EEEEEE; padding:10px; font-size:11pt; font-family:tahoma; color:#444444; clear:both; margin:0 0 10px 0; text-decoration:underline; }
.sourceBrowser blockquote { border:1px solid #444444; background-color:#444444; margin:0 0 10px 0; padding:5px; font-size:9pt; color:#EFEFEF; clear:both; }
.sourceBrowser blockquote strong { margin-bottom:10px; display:block;}
.sourceBrowser ul { border:1px solid #888888; background-color:#AAAAAA; margin:0 0 5px 0; padding:5px 0 0 5px; height:20px; overflow:hidden; }
.sourceBrowser ul li { float:left; list-style:none; padding:0; margin:0 10px 0 0; color:#CCCCCC; }
.sourceBrowser ul li a { font-weight:bold; color:green; text-decoration:none; color:#FFFFFF;}
.sourceBrowser ul li.file a { float:left; list-style:none; padding:0; margin:0 10px 0 0; color:#B5FFC1;}
.sourceBrowser ol { margin:0; padding:0; float:right; overflow:hidden; height:30px; }
.sourceBrowser ol li { float:left; list-style:none; padding:0; margin:0 10px 0 0; color:#AAAAAA; font-size:9pt; }
.sourceBrowser ol li a { font-weight:normal; color:#555555;; text-decoration:none; }
.sourceBrowser table { width:100%; clear:both; border:0; border-spacing:0; table-layout:fixed; border:1px solid #333333; margin-bottom:10px; }
.sourceBrowser table thead tr { background:url("../images/tableHeader.gif") repeat left top; height:20px; color:#FFFFFF; font-family:tahoma; font-size:8pt; font-weight:bold; }
.sourceBrowser table tr th.filename {color:#ffffff; padding:4px; font-size:9pt; font-family:tahoma; text-align:left;}
.sourceBrowser table tr.revision td { text-align:center; font-weight:bold; font-size:8pt; font-family:tahoma;}
.sourceBrowser table tr.line td { font-size:8pt; font-family:tahoma;}
.sourceBrowser table tr.line td.deleted { color:red; }
.sourceBrowser table tr.line td.modified { color:green; }
.sourceBrowser table tr.line td.added { color:blue; }
.sourceBrowser table tr.code td { color:#222222; font-size:9pt; }
.sourceBrowser table tr td { border-bottom:1px solid #EEEEEE; vertical-align:top; padding-top:3px; color:#888888; font-family:tahoma; font-size:9pt; background-color:#FFFFFF; }
.sourceBrowser table tbody tr.revision td { background-color:#DDDDDD; }
.sourceBrowser table tbody tr.line td { background-color:#F3F3F3; border-bottom:1px solid #EEEEEE; text-align:center;}
.sourceBrowser table tr.over td { background-color:#EFEFEF; }
.sourceBrowser table td a { text-decoration:none; }
.sourceBrowser table td.before { color:red; }
.sourceBrowser table td.after { color:blue; }
.sourceBrowser table td.directory { background:url("../images/folder.gif") no-repeat 4px 3px; padding-left:22px;}
.sourceBrowser table td.file { background:url("../images/fileItem.gif") no-repeat 4px 3px; padding-left:22px;}
.sourceBrowser table td.directory a { color:#333333; }
.sourceBrowser table td.file a { color:#222222; }
.sourceBrowser table td.log { white-space:nowrap; color:red; text-align:center;}
.sourceBrowser table td.age { white-space:nowrap; text-align:left;}
.sourceBrowser table td.log a { color:red;}
.sourceBrowser table td span.author { font-weight:bold; color:#000000; }
.sourceBrowser pre { clear:both; font-size:9pt; font-family:tahoma; border:1px dotted #DDDDDD; background-color:#F3F3F3; padding:5px; color:#444444; }
.sourceBrowser input.btnCompare { margin-bottom:10px; }

View file

@ -0,0 +1,2 @@
@charset "utf-8";

View file

@ -0,0 +1,21 @@
<!--%import("filter/delete_issue.xml")-->
<!--#include("header.html")-->
<div class="deleteIssue">
<h3>{$lang->confirm_delete}</h3>
<form action="./" method="get" onsubmit="return procFilter(this, delete_issue)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<ul class="button">
<li><input type="submit" value="{$lang->cmd_delete}" accesskey="s" /></li>
<li><input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','dispIssuetrackerViewIssue')}'; return false;" /></li>
</ul>
</form>
</div>
<!--#include("footer.html")-->

View file

@ -0,0 +1,21 @@
<!--%import("filter/delete_trackback.xml")-->
<!--#include("header.html")-->
<div class="deleteIssue">
<h3>{$lang->confirm_delete}</h3>
<form action="./" method="get" onsubmit="return procFilter(this, delete_trackback)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="trackback_srl" value="{$trackback_srl}" />
<ul class="button">
<li><input type="submit" value="{$lang->cmd_delete}" accesskey="s" /></li>
<li><input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','dispIssuetrackerViewIssue')}'; return false;" /></li>
</ul>
</form>
</div>

View file

@ -0,0 +1,90 @@
<!--#include("header.html")-->
<table class="downloads" cellspacing="0">
<col width="90" />
<col width="50" />
<col width="*" />
<col width="90" />
<col width="120" />
<thead>
<tr>
<th>{$lang->package}</th>
<th>{$lang->release}</th>
<th>{$lang->filename}</th>
<th>{$lang->filesize}</th>
<th>{$lang->download_count}</th>
</thead>
<tbody>
<!--@foreach($package_list as $key => $val)-->
<tr>
<td class="summaryText package" colspan="4">
<div class="close">
<h3>{$val->title} ({count($val->releases)}/{$val->release_count})</h3>
<blockquote>{nl2br($val->description)}</blockquote>
</div>
</td>
<td class="moreRelease vtop">
<!--@if($release_srl && $release)-->
<a href="{getUrl('release_srl','','package_srl',$release->package_srl)}">{$lang->cmd_back}</a>
<!--@else if($package_srl)-->
<a href="{getUrl('package_srl','')}">{$lang->cmd_back}</a>
<!--@else if($val->release_count>0)-->
<a href="{getUrl('package_srl',$val->package_srl)}">{$lang->cmd_view_all}</a>
<!--@end-->
</td>
</tr>
<!--@if(count($val->releases))-->
<!--@foreach($val->releases as $k => $v)-->
<tr>
<td class="packageLeft">&nbsp;</td>
<td colspan="4" class="release"><h3><a href="{getUrl('package_srl',$v->package_srl,'release_srl',$v->release_srl)}">{$v->title}</a></h3> <span>({zdate($v->regdate, "Y-m-d H:i")})</span></td>
</tr>
<!--@if($release)-->
<tr>
<td class="packageLeft">&nbsp;</td>
<td colspan="4" class="releaseNoteTitle">{$lang->release_note}</td>
</tr>
<tr>
<td class="packageLeft">&nbsp;</td>
<td colspan="4" class="releaseNote">{str_replace(' ','&nbsp;&nbsp;',nl2br($release->release_note))}&nbsp;</td>
</tr>
<tr>
<td class="packageLeft">&nbsp;</td>
<td colspan="4" class="releaseChangesTitle">{$lang->release_changes}</td>
</tr>
<tr>
<td class="packageLeft">&nbsp;</td>
<td colspan="4" class="releaseChanges">{str_replace(' ','&nbsp;&nbsp;',nl2br($release->release_changes))}&nbsp;</td>
</tr>
<tr>
<td class="packageLeft">&nbsp;</td>
<td colspan="4" class="releaseFilesTitle">{$lang->attached_file}</td>
</tr>
<!--@end-->
<!--@foreach($v->files as $file)-->
<tr>
<td class="packageLeft">&nbsp;</td>
<td class="releaseLeft">&nbsp;</td>
<td class="filename"><a href="{$file->download_url}" name="attach_{$file->file_srl}" <!--@if($file->comment)-->rel="{str_replace("\n","<br />",htmlspecialchars($file->comment))}"<!--@end-->>{$file->source_filename}</a></td>
<td class="filesize">{FileHandler::filesize($file->file_size)}</td>
<td class="download_count">{$file->download_count}</td>
</tr>
<!--@end-->
<!--@end-->
<tr>
<td class="null">&nbsp;</td>
<td colspan="4" class="nullLine">&nbsp;</td>
</tr>
<!--@else-->
<tr>
<td class="packageLeft">&nbsp;</td>
<td colspan="4" class="none_release">{$lang->msg_no_releases}</td>
</tr>
<tr>
<td class="null">&nbsp;</td>
<td colspan="4" class="nullLine">&nbsp;</td>
</tr>
<!--@end-->
<!--@end-->
</tbody>
</table>

View file

@ -0,0 +1,86 @@
<!--// 이 파일은 extra_vars의 form을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!--// calendar -->
<!--%import("../../../../common/js/calendar.min.js",optimized=false)-->
<!--@if($lang_type == 'ko')-->
<!--%import("../../../../common/js/calendar-ko.js",optimized=false)-->
<!--@elseif($lang_type == 'es')-->
<!--%import("../../../../common/js/calendar-es.js",optimized=false)-->
<!--@elseif($lang_type == 'ge')-->
<!--%import("../../../../common/js/calendar-ge.js",optimized=false)-->
<!--@elseif($lang_type == 'ru')-->
<!--%import("../../../../common/js/calendar-ru.js",optimized=false)-->
<!--@elseif($lang_type == 'zh-CN')-->
<!--%import("../../../../common/js/calendar-zh-CN.js",optimized=false)-->
<!--@else-->
<!--%import("../../../../common/js/calendar-en.js",optimized=false)-->
<!--@end-->
<!--%import("../../../../common/js/calendar-setup.js",optimized=false)-->
<!--%import("../../../../common/css/calendar-system.css",optimized=false)-->
<!--// type=select,checkbox이고 기본값이 , 로 연결되어 있으면 , 를 기준으로 explode하여 배열로 만든다 -->
<!--@if(in_array($val->type,array('select','checkbox'))&&strpos($val->default,",")!==false)-->
{@ $val->default = explode(',',$val->default) }
<!--@end-->
<!--// 확장변수의 이름을 지정 -->
{@ $val->column_name = "extra_vars".$key}
<!--// 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
{@ $val->value = $oIssue->getExtraValue($key)}
<!--// 일반 text -->
<!--@if($val->type == 'text')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText wide" />
<!--// 홈페이지 주소 -->
<!--@elseif($val->type == 'homepage')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText wide" />
<!-- Email 주소 -->
<!--@elseif($val->type == 'email_address')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="inputTypeText wide" />
<!--// 전화번호 -->
<!--@elseif($val->type == 'tel')-->
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[0])}" size="4" class="inputTypeText" /> -
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" size="4" class="inputTypeText" /> -
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[2])}" size="4" class="inputTypeText" />
<!--// textarea -->
<!--@elseif($val->type == 'textarea')-->
<textarea name="{$val->column_name}" class="inputTypeTextArea wide">{htmlspecialchars($val->value)}</textarea>
<!--// 다중 선택 -->
<!--@elseif($val->type == 'checkbox')-->
<!--@if($val->default)-->
<ul>
<!--@foreach($val->default as $v)-->
<li><input type="checkbox" name="{$val->column_name}" value="{$v}" <!--@if($v==$val->value||is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/> {$v}</li>
<!--@end-->
</ul>
<!--@end-->
<!--// 단일 선택 -->
<!--@elseif($val->type == 'select')-->
<select name="{$val->column_name}">
<!--@if($val->default)-->
<!--@foreach($val->default as $v)-->
<option value="{$v}" <!--@if($v == $val->value)-->selected="selected"<!--@end-->>{$v}</option>
<!--@end-->
<!--@end-->
</select>
<!--// 날짜 입력 -->
<!--@elseif($val->type == 'date')-->
<input type="hidden" name="{$val->column_name}" id="date_{$val->column_name}" value="{$val->value}" />
<div class="display_date" id="str_{$val->column_name}">{zdate($val->value,"Y-m-d")}</div>
<script type="text/javascript">
DyCalendar.setup( { firstDay : 0, inputField : "date_{$val->column_name}", ifFormat : "%Y%m%d", displayArea : "str_{$val->column_name}", daFormat : "%Y-%m-%d"});
</script>
<!--@end-->
<!--@if($val->desc)-->
<p>{$val->desc}</p>
<!--@end-->

View file

@ -0,0 +1,64 @@
<!--// 이 파일은 extra_vars의 결과값을 출력하는 파일이며 다른 스킨에서 그대로 가져가서 css만 바꾸어 주면 된다 -->
<!--// 확장변수의 이름을 지정 -->
{@ $val->column_name = "extra_vars".$key}
<!--// 확장변수의 값을 documentItem::getExtraValue로 가져옴 -->
{@ $val->value = $oIssue->getExtraValue($key)}
{@ $_tmp_value = array(); }
<!--// 일반 text -->
<!--@if($val->type == 'text')-->
{htmlspecialchars($val->value)}
<!--// 홈페이지 주소 -->
<!--@elseif($val->type == 'homepage')-->
<!--@if($val->value)-->
<a href="{htmlspecialchars($val->value)}" onclick="window.open(this.href);return false;">{$val->value}</a>
<!--@else-->
&nbsp;
<!--@end-->
<!--// Email 주소 -->
<!--@elseif($val->type == 'email_address')-->
<!--@if($val->value)-->
<a href="mailto:{htmlspecialchars($val->value)}">{$val->value}</a>
<!--@else-->
&nbsp;
<!--@end-->
<!--// 전화번호 -->
<!--@elseif($val->type == 'tel')-->
{htmlspecialchars($val->value[0])}
<!--@if($val->value[1])-->-<!--@end-->
{htmlspecialchars($val->value[1])}
<!--@if($val->value[2])-->-<!--@end-->
{htmlspecialchars($val->value[2])}
&nbsp;
<!--// textarea -->
<!--@elseif($val->type == 'textarea')-->
{nl2br(htmlspecialchars($val->value))}
&nbsp;
<!--// 다중 선택 -->
<!--@elseif($val->type == 'checkbox')-->
<!--@if(!is_array($val->value))-->{@ $val->value = array($val->value) }<!--@end-->
<!--@foreach($val->value as $v)-->
{@ $_tmp_value[] = htmlspecialchars($v)}
<!--@end-->
{implode(",",$_tmp_value)}
&nbsp;
<!--// 단일 선택 -->
<!--@elseif($val->type == 'select')-->
{htmlspecialchars($val->value)}
&nbsp;
<!--// 날짜 입력 -->
<!--@elseif($val->type == 'date')-->
{zdate($val->value,"Y-m-d")}
&nbsp;
<!--@end-->
<!--@if(!$val->value)-->&nbsp;<!--@end-->

View file

@ -0,0 +1,16 @@
<filter name="delete_issue" module="issuetracker" act="procIssuetrackerDeleteIssue">
<form>
<node target="document_srl" required="true" />
</form>
<parameter>
<param name="mid" target="mid" />
<param name="page" target="page" />
<param name="document_srl" target="document_srl" />
</parameter>
<response callback_func="completeDeleteIssue">
<tag name="error" />
<tag name="message" />
<tag name="mid" />
<tag name="page" />
</response>
</filter>

View file

@ -0,0 +1,18 @@
<filter name="delete_trackback" module="issuetracker" act="procIssuetrackerDeleteTrackback">
<form>
<node target="trackback_srl" required="true" />
</form>
<parameter>
<param name="mid" target="mid" />
<param name="page" target="page" />
<param name="document_srl" target="document_srl" />
<param name="trackback_srl" target="trackback_srl" />
</parameter>
<response callback_func="completeDeleteTrackback">
<tag name="error" />
<tag name="message" />
<tag name="mid" />
<tag name="document_srl" />
<tag name="page" />
</response>
</filter>

View file

@ -0,0 +1,16 @@
<filter name="input_password" module="issuetracker" act="procIssuetrackerVerificationPassword" >
<form>
<node target="document_srl" required="true" />
<node target="password" required="true" />
</form>
<parameter>
<param name="mid" target="mid" />
<param name="document_srl" target="document_srl" />
<param name="comment_srl" target="comment_srl" />
<param name="password" target="password" />
</parameter>
<response>
<tag name="error" />
<tag name="message" />
</response>
</filter>

View file

@ -0,0 +1,20 @@
<filter name="insert" module="issuetracker" act="procIssuetrackerInsertIssue" confirm_msg_code="confirm_submit">
<form>
<node target="title" required="true" minlength="1" maxlength="250" />
<node target="type_srl" required="true" />
<node target="component_srl" required="true" />
<node target="package_srl" required="true" />
<node target="occured_version_srl" required="true" />
<node target="nick_name" required="true" />
<node target="password" required="true" />
<node target="email_address" maxlength="250" />
<node target="homepage" maxlength="250"/>
<node target="content" required="true" />
</form>
<response callback_func="completeIssueInserted">
<tag name="error" />
<tag name="message" />
<tag name="mid" />
<tag name="document_srl" />
</response>
</filter>

View file

@ -0,0 +1,22 @@
<filter name="insert_history" module="issuetracker" act="procIssuetrackerInsertHistory" confirm_msg_code="confirm_submit">
<form>
<node target="milestone_srl" />
<node target="priority_srl" required="true" />
<node target="type_srl" required="true" />
<node target="component_srl" required="true" />
<node target="package_srl" required="true" />
<node target="occured_version_srl" required="true" />
<node target="action" />
<node target="status" />
<node target="assignee_srl" />
<node target="nick_name" required="true" />
<node target="password" required="true" />
<node target="content" />
</form>
<response callback_func="completeHistoryInserted">
<tag name="error" />
<tag name="message" />
<tag name="mid" />
<tag name="document_srl" />
</response>
</filter>

View file

@ -0,0 +1,33 @@
<!--// JS 파일 로드 -->
<!--%import("js/issuetracker.js")-->
<!--// 컬러셋 체크 -->
<!--@if(!$module_info->colorset)-->
{@$module_info->colorset = "white"}
<!--@end-->
<!--// CSS 파일 로드 (컬러셋에 따라서) -->
<!--%import("css/common.css")-->
<!--@if($module_info->colorset == "white")--> <!--%import("css/white.css")--> <!--@end-->
<!--@if($module_info->projectTitle)-->
<div class="skinTitle">
{$module_info->projectTitle}
<!--@if($module_info->projectDescription)-->
<blockquote>{nl2br($module_info->projectDescription)}</blockquote>
<!--@end-->
</div>
<!--@end-->
<div class="issueNav">
<ul class="issueNav">
<!--@foreach($lang->project_menus as $key => $value)-->
<li class="<!--@if($act==$key)-->selected<!--@else-->unselected<!--@end-->"><a href="{getUrl('','mid',$mid,'act',$key)}">{$value}</a></li>
<!--@end-->
</ul>
<div class="bottomLine"></div>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 B

View file

@ -0,0 +1,24 @@
<!--%import("filter/input_password.xml")-->
<!--@if(!$form_include)--><!--#include("header.html")--><!--@end-->
<div class="smallBox w400">
<div class="header">
<h3>{$lang->msg_input_password}</h3>
</div>
<form action="./" method="get" onsubmit="return procFilter(this, input_password)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="comment_srl" value="{$comment_srl}" />
<div class="inputPassword">
<input type="password" name="password" id="cpw" class="inputTypeText" />
<span class="button"><input type="submit" value="{$lang->cmd_input}" accesskey="s" /></span>
<a href="{getUrl('act','')}" class="button"><span>{$lang->cmd_cancel}</span></a>
</div>
</form>
</div>

View file

@ -0,0 +1,182 @@
<!--#include('header.html')-->
<form action="{Context::getRequestUri()}" method="get" class="issueSearch">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="{$act}" />
<input type="hidden" name="d" value="1" />
<ul>
<li>
<select name="milestone_srl">
<option value="">{$lang->milestone}</option>
<!--@foreach($project->milestones as $key => $val)-->
<option value="{$val->milestone_srl}" <!--@if($val->milestone_srl==$milestone_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</li>
<li>
<select name="priority_srl">
<option value="">{$lang->priority}</option>
<!--@foreach($project->priorities as $key => $val)-->
<option value="{$val->priority_srl}" <!--@if($val->priority_srl==$priority_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</li>
<li>
<select name="type_srl">
<option value="">{$lang->type}</option>
<!--@foreach($project->types as $key => $val)-->
<option value="{$val->type_srl}" <!--@if($val->type_srl==$type_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</li>
<li>
<select name="component_srl">
<option value="">{$lang->component}</option>
<!--@foreach($project->components as $key => $val)-->
<option value="{$val->component_srl}" <!--@if($val->component_srl==$component_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</li>
<li>
<select name="package_srl" onchange="showRelease(this, this.form);">
<option value="">{$lang->package}</option>
<!--@foreach($project->packages as $key => $val)-->
<option value="{$val->package_srl}" <!--@if($val->package_srl==$package_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</li>
<li>
<select name="release_srl">
<option value="">{$lang->release}</option>
<!--@foreach($project->packages as $key => $val)-->
<!--@foreach($project->releases as $k => $v)-->
<!--@if($val->package_srl == $v->package_srl)-->
<option value="{$v->release_srl}" <!--@if($v->release_srl==$release_srl)-->selected="selected"<!--@end-->>{$v->title}</option>
<!--@end-->
<!--@end-->
<!--@end-->
</select>
</li>
<li>
<select name="assignee_srl">
<option value="">{$lang->assignee}</option>
<!--@foreach($commiters as $val)-->
<option value="{$val->member_srl}" <!--@if($val->member_srl==$assignee_srl)-->selected="selected"<!--@end-->>{$val->nick_name} ({$val->user_id})</option>
<!--@end-->
</select>
</li>
<li>
<!--@foreach($lang->status_list as $key => $val)-->
<input name="status[]" type="checkbox" value="{$key}" <!--@if(in_array($key,$status))-->checked="checked"<!--@end--> id="status_{$key}"/><label for="status_{$key}" class="issue_{$key}">{$val}</label>
<!--@end-->
</li>
</ul>
<ul>
<li class="keywordSearch">
<select name="search_target" class="searchTarget">
<!--@foreach($search_option as $key => $val)-->
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!--@end-->
</select>
</li>
<li><input type="input" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText" /></li>
<li><input type="submit" value="{$lang->cmd_search}" class="inputTypeSubmit" /></li>
<li><input type="button" value="{$lang->cmd_cancel}" class="inputTypeSubmit" onclick="location.href='{getUrl('','mid',$mid,'act',$act)}';return false;"/></li>
<li class="displayOpt">
<ol>
<!--@foreach($display_option as $key => $val)-->
<li><input type="checkbox" name="d_{$key}" value="1" id="display_{$key}" <!--@if($val->checked)-->checked="checked"<!--@end--> <!--@if($key=='title')-->disabled="disabled"<!--@end--> /><label for="display_{$key}">{$val->title}</label></li>
<!--@end-->
</ol>
</li>
</ul>
<div class="clear"></div>
</form>
<form action="./" method="get" class="close">
<!--@foreach($project->packages as $key => $val)-->
<select id="release_{$val->package_srl}">
<option value="">{$lang->release}</option>
<!--@foreach($project->releases as $k => $v)-->
<!--@if($val->package_srl == $v->package_srl)-->
<option value="{$v->release_srl}" <!--@if($v->release_srl==$release_srl)-->selected="selected"<!--@end-->>{$v->title}</option>
<!--@end-->
<!--@end-->
</select>
<!--@end-->
</form>
<table class="issues" cellspacing="0">
<thead>
<tr>
<!--@foreach($display_option as $k => $v)-->
<!--@if($v->checked)-->
<th class="{$k}"><div>{$v->title}</div></th>
<!--@end-->
<!--@end-->
</tr>
</thead>
<tbody>
<!--@foreach($issue_list as $no=>$val)-->
<tr>
<!--@foreach($display_option as $k => $v)-->
<!--@if($v->checked)-->
<!--@if($k == 'no')-->
<td class="no">{$no}</td>
<!--@elseif($k == 'title')-->
<td class="title issue_{$val->get('status')}">
<a href="{getUrl('document_srl', $val->get('document_srl'))}">{$val->getTitle()}</a>
{$val->printExtraImages(60*60*24)}
<!--@if($val->getCommentCount())-->
<strong class="comment">{$val->getCommentCount()}</strong>
<!--@end-->
<!--@if($val->getTrackbackCount())-->
<strong class="trackback">{$val->getTrackbackCount()}</strong>
<!--@end-->
</td>
<!--@elseif($k == 'milestone')-->
<td class="milestone"><a href="{getUrl('milestone_srl', $val->get('milestone_srl'))}">{$val->getMilestoneTitle()}</a></td>
<!--@elseif($k == 'priority')-->
<td class="priority"><a href="{getUrl('priority_srl',$val->get('priority_srl'))}">{$val->getPriorityTitle()}</a></td>
<!--@elseif($k == 'type')-->
<td class="type"><a href="{getUrl('type_srl', $val->get('type_srl'))}">{$val->getTypeTitle()}</a></td>
<!--@elseif($k == 'component')-->
<td class="component"><a href="{getUrl('component_srl',$val->get('component_srl'))}">{$val->getComponentTitle()}</a></td>
<!--@elseif($k == 'status')-->
<td class="status issue_{$val->get('status')}"><a href="{getUrl('status', $val->get('status'))}">{$val->getStatus()}</a></td>
<!--@elseif($k == 'occured_version')-->
<td class="occured_version"><a href="{getUrl('release_srl',$val->get('occured_version_srl'))}">{$val->getOccuredVersionTitle()}</a></td>
<!--@elseif($k == 'package')-->
<td class="package"><a href="{getUrl('package_srl',$val->get('package_srl'))}">{$val->getPackageTitle()}</a></td>
<!--@elseif($k == 'regdate')-->
<td class="regdate">{$val->getRegdate("Y-m-d")}</td>
<!--@elseif($k == 'assignee')-->
<td class="nick_name">
<!--@if($val->get('assignee_srl'))-->
<span class="member_{$val->get('assignee_srl')}">{$val->get('assignee_name')}</span>
<!--@else-->
&nbsp;
<!--@end-->
</td>
<!--@elseif($k == 'writer')-->
<td class="nick_name"><span class="member_{$val->getMemberSrl()}">{$val->getNickName()}</span></td>
<!--@end-->
<!--@end-->
<!--@end-->
</tr>
<!--@end-->
</tbody>
</table>
<!--@if($page_navigation->total_page>1)-->
<div class="pageNavigation">
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<span class="current">{$page_no}</span>
<!--@else-->
<span><a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a></span>
<!--@end-->
<!--@end-->
</div>
<!--@end-->

View file

@ -0,0 +1,133 @@
/**
* @file modules/board/js/board.js
* @author zero (zero@nzeo.com)
* @brief board 모듈의 javascript
**/
/* 글쓰기 작성후 */
function completeIssueInserted(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var mid = ret_obj['mid'];
var document_srl = ret_obj['document_srl'];
//alert(message);
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','dispIssuetrackerViewIssue');
location.href = url;
}
/* 히스토리 작성후 */
function completeHistoryInserted(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var mid = ret_obj['mid'];
var document_srl = ret_obj['document_srl'];
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','dispIssuetrackerViewIssue');
location.href = url;
}
/* 글 삭제 */
function completeDeleteIssue(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var mid = ret_obj['mid'];
var page = ret_obj['page'];
var url = current_url.setQuery('mid',mid).setQuery('act','dispIssuetrackerViewIssue').setQuery('document_srl','');
if(page) url = url.setQuery('page',page);
//alert(message);
location.href = url;
}
/* 트랙백 삭제 */
function completeDeleteTrackback(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var mid = ret_obj['mid'];
var document_srl = ret_obj['document_srl'];
var page = ret_obj['page'];
var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act','dispIssuetrackerViewIssue');
if(page) url = url.setQuery('page',page);
location.href = url;
}
/* 내용 숨김/열기 */
xAddEventListener(document,'click',openSummaryText);
function openSummaryText(evt) {
var e = new xEvent(evt);
if(!e.target) return;
var pObj = e.target;
while(pObj) {
if(pObj.nodeName == "DIV" && (pObj.className == "open" || pObj.className == "close")) {
if(pObj.className == 'open') {
pObj.className = 'close';
} else if(pObj.className == 'close') {
pObj.className = 'open';
}
}
pObj = pObj.parentNode;
}
}
/* title 레이어 */
xAddEventListener(document,'mouseover',showTitleLayer);
function showTitleLayer(evt) {
var e = new xEvent(evt);
var obj = e.target;
var layer = xGetElementById("titleLayer");
if(!obj || obj.nodeName != 'A' || !obj.getAttribute('rel')) {
if(layer) layer.style.visibility = "hidden";
return;
}
if(!layer) {
layer = xCreateElement("DIV");
layer.id = "titleLayer";
layer.style.border = "1px solid #F3B95E";
layer.style.backgroundColor = "#FBF2E4";
layer.style.padding = "5px";
layer.style.color = "#000000";
layer.style.visibility = "hidden";
layer.style.position = "absolute";
window.document.body.appendChild(layer);
}
var text = obj.getAttribute('rel');
xInnerHtml(layer, text);
xLeft(layer, e.pageX+5);
xTop(layer, e.pageY+5);
layer.style.visibility = "visible";
evt.cancel = true;
//evt.returnValue = false;
}
/* issue list에서 배포판 선택 */
function showRelease(obj, fo_obj) {
var packge_srl = obj.options[obj.selectedIndex].value;
var target = xGetElementById('release_'+packge_srl);
if(!packge_srl || !target) return;
var sel = fo_obj.release_srl;
while(sel.options.length) {
sel.remove(0);
}
for(var i=0;i<target.options.length;i++) {
var opt = xCreateElement('option');
opt.text = target.options[i].text;
opt.value = target.options[i].value;
try {
sel.add(opt, null);
} catch(e) {
sel.add(opt);
}
}
}

View file

@ -0,0 +1,37 @@
xAddEventListener(document, 'click', chkRevSelect);
function chkRevSelect(evt) {
var e = new xEvent(evt);
if(!e.target || e.target.nodeName != 'INPUT') return;
var name = e.target.name;
if(!/^(b|e)rev$/.test(name)) return;
var fo = xGetElementById('logForm');
var erev = 0;
var brev = 0;
var eObj = fo.erev;
for(var i=0;i<eObj.length;i++) {
if(eObj[i].checked) erev = parseInt(eObj[i].value,10);
}
var bObj = fo.brev;
for(var i=0;i<bObj.length;i++) {
if(bObj[i].checked) brev = parseInt(bObj[i].value,10);
}
if(erev<=brev) {
for(var i=0;i<eObj.length;i++) {
var value = eObj[i].value;
if(value<=brev) {
if(i>0) eObj[i-1].checked = true;
else {
eObj[0].checked = true;
bObj[1].checked = true;
}
break;
}
}
}
}

View file

@ -0,0 +1,10 @@
<!--#include("header.html")-->
<blockquote class="alertMessage">{$message}</blockquote>
<ul class="alertNav">
<!--@if(!$is_logged)-->
<li><a href="{getUrl('act','dispMemberLoginForm')}" class="button"><span>{$lang->cmd_login}</span></a></li>
<!--@end-->
<li><a href="#" onclick="history.back(); return false;" class="button"><span>{$lang->cmd_back}</span></a></li>
</ul>

View file

@ -0,0 +1,42 @@
<!--#include('header.html')-->
<table class="milestones" cellspacing="0">
<thead>
<tr>
{@ $col_count = 4 }
<th colspan="2">{$lang->milestone}</th>
<th>{$lang->deadline}</th>
<!--@foreach($lang->status_list as $k => $v)-->
{@ $col_count += 1 }
<th>{$v}</th>
<!--@end-->
<th>{$lang->total_issue}</th>
</tr>
</thead>
<tbody>
<!--@foreach($milestones as $val)-->
<!--@if($val->milestone_srl == 0)-->
{@ $val->title = $lang->not_assigned}
{@ $val->description = $lang->not_assigned_description}
<!--@end-->
<tr class="title">
<td class="title <!--@if($val->is_completed=='Y')-->completed<!--@end-->" <!--@if($val->is_completed!='Y')-->colspan="2"<!--@end-->>
<a href="{getUrl('','mid',$mid,'act','dispIssuetrackerViewIssue','milestone_srl', $val->milestone_srl)}">{$val->title}</a>
</td>
<!--@if($val->is_completed == 'Y')-->
<td class="released_date">
{zdate($val->released_date, "Y-m-d")}
</td>
<!--@end-->
<td class="deadline">{zdate($val->deadline, 'Y-m-d')}</td>
<!--@foreach($lang->status_list as $k => $v)-->
<td class="status issue_{$k}"> <a href="{getUrl('','mid',$mid,'act','dispIssuetrackerViewIssue','milestone_srl', $val->milestone_srl,'status[]',$k)}">{number_format($val->issues[$k])}</a></td>
<!--@end-->
<td class="total"> <a href="{getUrl('','mid',$mid,'act','dispIssuetrackerViewIssue','milestone_srl', $val->milestone_srl,'status[]','')}">{number_format($val->issues['total'])}</a></td>
</tr>
<tr>
<td colspan="{$col_count}" class="summaryText description"><div class="close">{nl2br($val->description)}&nbsp;</div></td>
</tr>
<!--@end-->
</tbody>
</table>

View file

@ -0,0 +1,166 @@
<!--%import("filter/insert.xml")-->
<!--#include("header.html")-->
<form action="./" method="post" onsubmit="return procFilter(this, window.insert)" id="fo_write">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="content" value="{$oIssue->getContentText()}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<div class="newIssue">
<table cellspacing="0">
<col width="140" />
<col width="*" />
<col width="140" />
<col width="*" />
<tr>
<th><label for="inputTitle">{$lang->title} :</label></th>
<td colspan="2">
<input type="text" name="title" id="inputTitle" class="inputTypeText wide" value="{htmlspecialchars($oIssue->getTitleText())}" />
</td>
<td>
<!--@if($grant->manager)-->
{@ $_color = array('555555','222288','226622','2266EE','8866CC','88AA66','EE2222','EE6622','EEAA22','EEEE22') }
<select name="title_color" id="title_color" <!--@if($oIssue->get('title_color'))-->style="background-color:#{$oIssue->get('title_color')};"<!--@end--> onchange="this.style.backgroundColor=this.options[this.selectedIndex].style.backgroundColor;">
<option value="" style="background-color:#FFFFFF;">{$lang->title_color}</option>
<!--@foreach($_color as $_col)-->
<option value="{$_col}" style="background-color:#{$_col}" <!--@if($oIssue->get('title_color')==$_col)-->selected="selected"<!--@end-->>{$lang->title_color}</option>
<!--@end-->
</select>
<!--@end-->
&nbsp;
</td>
</tr>
<tr>
<th><label>{$lang->cmd_option} :</label></th>
<td colspan="3">
<dl class="option">
<!--@if($grant->manager)-->
<dd>
<input type="checkbox" name="title_bold" id="title_bold" value="Y" <!--@if($oIssue->get('title_bold')=='Y')-->checked="checked"<!--@end--> />
<label for="title_bold">{$lang->title_bold}</label>
</dd>
<dd>
<input type="checkbox" name="lock_comment" value="Y" <!--@if($oIssue->isLocked())-->checked="checked"<!--@end--> id="lock_comment" />
<label for="lock_comment">{$lang->lock_comment}</label>
</dd>
<!--@endif-->
<dd>
<input type="checkbox" name="is_secret" value="Y" <!--@if($oIssue->isSecret())-->checked="checked"<!--@end--> id="is_secret" />
<label for="is_secret">{$lang->secret}</label>
</dd>
<dd>
<input type="checkbox" name="allow_comment" value="Y" <!--@if($oIssue->allowComment())-->checked="checked"<!--@end--> id="allow_comment" />
<label for="allow_comment">{$lang->allow_comment}</label>
</dd>
<dd>
<input type="checkbox" name="allow_trackback" value="Y" <!--@if($oIssue->allowTrackback())-->checked="checked"<!--@end--> id="allow_trackback" />
<label for="allow_trackback">{$lang->allow_trackback}</label>
</dd>
<!--@if($is_logged)-->
<dd>
<input type="checkbox" name="notify_message" value="Y" <!--@if($oIssue->useNotify())-->checked="checked"<!--@end--> id="notify_message" />
<label for="notify_message">{$lang->notify}</label>
</dd>
<!--@end-->
</dl>
</td>
</tr>
<!--@if(!$oIssue->isExists())-->
<tr>
<th><label for="inputType">{$lang->type} :</label></th>
<td>
<select name="type_srl" id="inputType">
<option value="">{$lang->type}</option>
<!--@foreach($project->types as $key => $val)-->
<option value="{$val->type_srl}" <!--@if($val->type_srl==$oIssue->get('type_srl'))-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</td>
<th><label for="inputComponent">{$lang->component} :</label></th>
<td>
<select name="component_srl" id="inputComponent">
<option value="">{$lang->component}</option>
<!--@foreach($project->components as $key => $val)-->
<option value="{$val->component_srl}" <!--@if($val->component_srl==$oIssue->get('component_srl'))-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</td>
</tr>
<tr>
<th><label for="inputPackage">{$lang->occured_version} :</label></th>
<td colspan="3">
<select name="package_srl" id="inputPackage">
<option value="">{$lang->package}</option>
<!--@foreach($project->packages as $key => $val)-->
<option value="{$val->package_srl}" <!--@if($val->package_srl==$oIssue->get('package_srl'))-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
<select name="occured_version_srl">
<option value="">{$lang->release}</option>
<!--@foreach($project->packages as $key => $val)-->
<!--@foreach($project->releases as $k => $v)-->
<!--@if($val->package_srl == $v->package_srl)-->
<option value="{$v->release_srl}" <!--@if($v->release_srl==$oIssue->get('occured_version_srl'))-->selected="selected"<!--@end-->>{$v->title}</option>
<!--@end-->
<!--@end-->
<!--@end-->
</select>
</td>
</tr>
<!--@end-->
<!--@if($module_info->extra_vars)--><!--@foreach($module_info->extra_vars as $key => $val)-->
<!--@if($val->name)-->
<tr>
<th><label>{$val->name} <!--@if($val->is_required=='Y')-->*<!--@end--> :</label></th>
<td colspan="3"><!--#include("./extra_var_form.html")--></td>
</tr>
<!--@end-->
<!--@end--><!--@end-->
<tr>
<th><label for="inputTags">{$lang->tag} :</label></th>
<td colspan="3"><input type="text" name="tags" value="{htmlspecialchars($oIssue->get('tags'))}" class="inputTypeText wide" /></td>
</tr>
<!--@if(!$is_logged)-->
<tr>
<th><label for="userName">{$lang->writer} :</label></th>
<td><input type="text" name="nick_name" value="{$oIssue->getNickName()}" class="userName inputTypeText" id="userName"/></td>
<th><label for="userPw">{$lang->password} :</label></th>
<td><input type="password" name="password" value="" id="userPw" class="userPw inputTypeText" /></td>
</tr>
<tr>
<th><label for="emailAddress">{$lang->email_address} :</label></th>
<td><input type="text" name="email_address" value="{htmlspecialchars($oIssue->get('email_address'))}" id="emailAddress" class="emailAddress inputTypeText"/></td>
<th><label for="homePage">{$lang->homepage} :</label></th>
<td><input type="text" name="homepage" value="{htmlspecialchars($oIssue->get('homepage'))}" id="homePage" class="homePage inputTypeText"/></td>
</tr>
<!--@end-->
<tr>
<td colspan="4"><div class="editor">{$oIssue->getEditor()}</div></td>
</tr>
<tr>
<td colspan="4" class="tRight">
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
<span class="button"><input type="button" value="{$lang->cmd_back}" onclick="location.href='{getUrl('act','dispIssuetrackerViewIssue')}'" /></span>
</td>
</tr>
</table>
</div>
</form>
<form action="./" method="get" class="close">
<!--@foreach($project->packages as $key => $val)-->
<select id="release_{$val->package_srl}">
<option value="">{$lang->release}</option>
<!--@foreach($project->releases as $k => $v)-->
<!--@if($val->package_srl == $v->package_srl)-->
<option value="{$v->release_srl}" <!--@if($v->release_srl==$release_srl)-->selected="selected"<!--@end-->>{$v->title}</option>
<!--@end-->
<!--@end-->
</select>
<!--@end-->
</form>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<skin version="0.2">
<title xml:lang="ko">XE IssueTracker 기본 스킨</title>
<description xml:lang="ko">XE IssueTracker의 기본 스킨입니다. </description>
<version>0.1</version>
<date>2008-08-11</date>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
<name xml:lang="ko">zero</name>
</author>
<colorset>
<color name="white" src="screenshot/white.gif">
<title xml:lang="ko">일반</title>
</color>
<color name="black" src="screenshot/black.gif">
<title xml:lang="ko">검은색 배경용</title>
</color>
</colorset>
<extra_vars>
<group>
<title xml:lang="ko">기본 설정</title>
<var name="projectTitle" type="text">
<title xml:lang="ko">이슈트래커 제목</title>
<description xml:lang="ko">이슈트래커의 상단에 큰 제목으로 표시가 됩니다.</description>
</var>
<var name="projectDescription" type="textarea">
<title xml:lang="ko">이슈트래커 설명</title>
<description xml:lang="ko">입력하시면 이슈트래커의 메인에 설명이 노출됩니다.</description>
</var>
</group>
</extra_vars>
</skin>

View file

@ -0,0 +1,42 @@
<!--#include("source_header.html")-->
<h3>Diff between revs {$brev} to revs {$erev}</h3>
<h1>{$path}</h1>
<ol>
<li>[<a href="{getUrl('type','log','path',urlencode($path),'erev',$erev,'brev',$brev)}">view log</a>]</li>
</ol>
<!--@if($comp)-->
<!--@foreach($comp as $item)-->
<table>
<col width="*" />
<col width="*" />
<thead>
<tr>
<th colspan="2" class="filename">{$item->filename}</th>
</tr>
</thead>
<tbody>
<tr class="revision">
<td class="before">Rev. {$item->before_revision}</td>
<td class="after">Rev. {$item->after_revision}</td>
</tr>
<!--@foreach($item->changed as $change)-->
<tr class="line">
<td class="before">line {$change->before_line}</td>
<td class="after">line {$change->after_line}</td>
</tr>
<!--@for($i=0;$i<count($change->before_code);$i++)-->
<tr class="code">
<td>{nl2br(str_replace(' ','&nbsp;&nbsp;',htmlspecialchars($change->before_code[$i])))}</td>
<td>{nl2br(str_replace(' ','&nbsp;&nbsp;',htmlspecialchars($change->after_code[$i])))}</td>
</tr>
<!--@end-->
<!--@end-->
</tbody>
</table>
<!--@end-->
<!--@end-->
<!--#include("source_footer.html")-->

View file

@ -0,0 +1,40 @@
<!--#include("source_header.html")-->
<h3>Diff between revs {$brev} to revs {$erev}</h3>
<h1>{$path}</h1>
<ol>
<li>[<a href="{getUrl('type','log','path',urlencode($path),'erev',$erev,'brev',$brev)}">view log</a>]</li>
<li>[<a href="{getUrl('type','file','path',urlencode($path),'revs',$erev)}">view code</a>]</li>
</ol>
<!--@if($diff)-->
<table>
<col width="80" />
<col width="*" />
<col width="*" />
<thead>
<tr>
<th>Status</th>
<th class="before">Rev. {$brev}</th>
<th class="after">Rev. {$erev}</th>
</tr>
</thead>
<tbody>
<!--@foreach($diff as $item)-->
<tr class="line">
<td rowspan="2" class="tCenter {$item->diff_type}">{$item->diff_type}</td>
<td class="before">line {$item->before_line}</td>
<td class="after">line {$item->after_line}</td>
</tr>
<tr class="code">
<td>{nl2br(htmlspecialchars($item->before_code))}</td>
<td>{nl2br(htmlspecialchars($item->after_code))}</td>
</tr>
<!--@end-->
</tbody>
</table>
<!--@end-->
<!--#include("source_footer.html")-->

View file

@ -0,0 +1,20 @@
<!--#include("source_header.html")-->
<h3>Revision {$content->revision} (checked in by {$content->author}, {$content->ago} ago)</h3>
<h1>{$path}</h1>
<!--@if($content->msg)-->
<blockquote>{$content->msg}</blockquote>
<!--@end-->
<ol>
<li>[<a href="{getUrl('type','log','path',urlencode($path), 'erev', $revs?$revs:'')}">view log</a>]</li>
<!--@if($brev)-->
<li>[<a href="{getUrl('type','diff','path',urlencode($path),'erev',$erev, 'brev', $brev)}">compare with previous</a>]</li>
<!--@end-->
</ol>
<pre>{htmlspecialchars($content->content)}</pre>
<!--#include("source_footer.html")-->

View file

@ -0,0 +1 @@
</div>

View file

@ -0,0 +1,28 @@
<!--#include("header.html")-->
<!--%import("css/svn.css")-->
<!--%import("js/svn.js")-->
<div class="sourceBrowser">
<!--@if($path_tree)-->
<ul>
<!--@foreach($path_tree as $key => $val)-->
<!--@if($key == '/' || substr($val,-1)=='/')-->
<li>
<!--@if($key=='/')-->
<a href="{getUrl('type','','path',urlencode($val), revs, $revs)}">root</a>
<!--@else-->
<a href="{getUrl('type','','path',urlencode($val), revs, $revs)}">{$key}</a>
<!--@end-->
/
</li>
<!--@else-->
<li class="file"><a href="{getUrl('type','file','path',urlencode($val),'revs','','erev','','brev','')}">{$key}</a></li>
<!--@end-->
<!--@end-->
</ul>
<div class="clear"></div>
<!--@end-->

View file

@ -0,0 +1,33 @@
<!--#include("source_header.html")-->
<table cellspacing="0">
<col width="180" />
<col width="100" />
<col width="150" />
<col width="*" />
<thead>
<tr>
<th>Name</th>
<th>Revision</th>
<th>Age</th>
<th>Last Change</th>
</tr>
</thead>
<tbody>
<!--@foreach($list as $item)-->
<!--@if($item->type == 'file')-->
{@ $type = 'file' }
<!--@else-->
{@ $type = '' }
<!--@end-->
<tr onmouseover="this.className='over'" onmouseout="this.className=''" >
<td class="{$item->type}"><a href="{getUrl('type',$type, path, urlencode($item->path), 'revs', $revs)}">{$item->name}</a></td>
<td class="log"><a href="{getUrl('type','log','path',urlencode($item->path),'erev',$revs?$revs:'')}">{$item->revision}</a></td>
<td class="age">{$item->gap}</td>
<td class="summaryText"><div class="close"><span class="author">{$item->author}</span> {$item->msg?': '.$item->msg:''}</div></td>
</tr>
<!--@end-->
</tbody>
</table>
<!--#include("source_footer.html")-->

View file

@ -0,0 +1,62 @@
<!--#include("source_header.html")-->
<h1>{$path}</h1>
<!--@if($content->msg)-->
<blockquote>
<strong>Revision {$current->revision} (checked in by {$current->author}, {$current->ago} ago)</strong>
{$current->msg}
</blockquote>
<!--@end-->
<!--@if($logs)-->
<!--@if(substr($path,-1)=='/')-->
{@ $type = 'compare'}
<!--@else-->
{@ $type = 'diff'}
<!--@end-->
<!--@end-->
<form action="./index.php" id="logForm" method="get">
<input type="hidden" name="path" value="{htmlspecialchars($path)}" />
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="{$act}" />
<input type="hidden" name="type" value="{$type}" />
<input type="submit" value="compare" class="btnCompare" />
<table>
<col width="80" />
<col width="30" />
<col width="30" />
<col width="*" />
<col width="120" />
<col width="230" />
<thead>
<tr>
<th>Revision</th>
<th>ER</th>
<th>BR</th>
<th>Message</th>
<th>Author</th>
<th>Age/ Date</th>
</tr>
</thead>
<tbody>
<!--@foreach($logs as $item)-->
<!--@if(!$brev && $item->revision < $erev)--> {@ $brev = $item->revision } <!--@end-->
<!--@if($item->paths[0]->path)--> {@ $p = $item->paths[0]->path} <!--@else--> {@ $p = $path } <!--@end-->
<tr>
<td class="log"><a href="{getUrl('type','file','path',urlencode($p),'revs',$item->revision)}">{$item->revision}</a></td>
<td class="tCenter"><input type="radio" name="erev" value="{$item->revision}" <!--@if($erev==$item->revision)-->checked="checked"<!--@end--> /></td>
<td class="tCenter"><input type="radio" name="brev" value="{$item->revision}" <!--@if($brev==$item->revision)-->checked="checked"<!--@end--> /></td>
<td class="summaryText"><div class="close">{$item->msg}&nbsp;</div></td>
<td class="tCenter"><span class="author">{$item->author}</span></td>
<td>{$item->gap} ({$item->date})</td>
</tr>
<!--@end-->
</table>
<input type="submit" value="compare" class="btnCompare" />
</form>
<!--#include("source_footer.html")-->

View file

@ -0,0 +1,265 @@
<!--#include("header.html")-->
<div class="viewIssue">
<table cellspacing="0">
<col width="140" />
<col width="*" />
<col width="140" />
<col width="*" />
<tr>
<th colspan="3" class="title">{$oIssue->getTitle()} <span>- {$oIssue->getStatus()}</span></th>
<td><SPAn class="member_{$oIssue->getMemberSrl()}">{$oIssue->getNickName()}</span></td>
</tr>
<!--@if(!$oIssue->isSecret() || $oIssue->isGranted())-->
<tr>
<th>{$lang->milestone} :</th>
<td>{$oIssue->getMilestoneTitle()}</td>
<th>{$lang->priority} :</th>
<td>{$oIssue->getPriorityTitle()}</td>
</tr>
<tr>
<th>{$lang->type} :</th>
<td>{$oIssue->getTypeTitle()}</td>
<th>{$lang->component} :</th>
<td>{$oIssue->getComponentTitle()}</td>
</tr>
<tr>
<th>{$lang->package} :</th>
<td>{$oIssue->getPackageTitle()}</td>
<th>{$lang->occured_version} :</th>
<td>{$oIssue->getReleaseTitle()}</td>
</tr>
<tr>
<th>{$lang->status} :</th>
<td>{$oIssue->getStatus()}</td>
<th>{$lang->assignee} :</th>
<td>
<!--@if($oIssue->get('assignee_srl'))-->
<span class="member_{$oIssue->get('assignee_srl')}">{$oIssue->get('assignee_name')}</span>
<!--@else-->
&nbsp;
<!--@end-->
</td>
</tr>
<!--@if($module_info->extra_vars)--><!--@foreach($module_info->extra_vars as $key => $val)-->
<!--@if($val->name)-->
<tr>
<th>{$val->name} :</th>
<td colspan="3"><!--#include("./extra_var_value.html")--></td>
</tr>
<!--@end-->
<!--@end--><!--@end-->
{@ $tag_list = $oIssue->get('tag_list') }
<!--@if(count($tag_list))-->
<tr>
<th><label for="inputTags">{$lang->tag} :</label></th>
<td colspan="3">
<ul class="tag">
<!--@for($i=0;$i<count($tag_list);$i++)-->
{@ $tag = $tag_list[$i]; }
<li><a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}" rel="tag">{htmlspecialchars($tag)}</a><!--@if($i<count($tag_list)-1)-->,&nbsp;<!--@end--></li>
<!--@end-->
</ul>
</td>
</tr>
<!--@end-->
<tr>
<td colspan="4" class="description">{$oIssue->getContent()}</td>
</tr>
<!--@else-->
<tr>
<td colspan="4" class="inputPassword">
<!--%import("filter/input_password.xml")-->
<form action="./" method="get" onsubmit="return procFilter(this, input_password)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$oIssue->document_srl}" />
{$lang->password} :
<input type="password" name="password" id="cpw" class="inputTypeText" />
<input type="submit" value="{$lang->cmd_input}" accesskey="s" class="inputTypeSubmit"/>
</form>
</td>
</tr>
<!--@end-->
</table>
<div class="button">
<ul>
<!--@if($oIssue->isGranted())-->
<li>[<a href="{getUrl('act','dispIssuetrackerDeleteIssue')}">{$lang->cmd_delete}</a>]</li>
<li>[<a href="{getUrl('act','dispIssuetrackerNewIssue')}">{$lang->cmd_modify}</a>]</li>
<!--@end-->
<li>[<a href="{getUrl('document_srl','')}">{$lang->cmd_back}</a>]</li>
</ul>
</div>
<div class="clear"></div>
</div>
<!--@if($oIssue->allowTrackback())-->
<div class="viewTrackback">
<h3>{$lang->trackback} : <a href="{$oIssue->getTrackbackUrl()}" onclick="return false;">{$oIssue->getTrackbackUrl()}</a> <address>({$oIssue->getTrackbackCount()})</address></h3>
<!--@if($oIssue->getTrackbackCount())-->
<!--@foreach($oIssue->getTrackbacks() as $key => $val)-->
<ul>
<li><a name="trackback_{$val->trackback_srl}"></a><address><a href="{$val->url}" onclick="winopen(this.href);return false;">{htmlspecialchars($val->title)} - {htmlspecialchars($val->blog_name)}</a></address></li>
<li class="date">
{zdate($val->regdate, "Y.m.d H:i")}
({$val->ipaddress})
</li>
<li><a href="{getUrl('act','dispIssuetrackerDeleteTrackback','trackback_srl',$val->trackback_srl)}"><img src="./images/buttonDeleteX.gif" alt="" /></a></li>
<li class="excerpt">{$val->excerpt}</li>
</ul>
<div class="clear"></div>
<!--@end-->
<!--@end-->
</div>
<!--@end-->
{@ $histories = $oIssue->get('histories') }
<!--@if($histories)-->
<!--@foreach($histories as $history)-->
<fieldset class="history">
<legend>
<span class="date">{zdate($history->regdate, "Y-m-d H:i")}</span>
<span class="member_{$history->member_srl}">{$history->nick_name}</span>
</legend>
<ul>
<!--@if($history->history && count($history->history))-->
<li>
<ol>
<!--@foreach($history->history as $key => $val)-->
<li>{$val}</li>
<!--@end-->
</ol>
</li>
<!--@end-->
<!--@if($history->content)-->
<li class="content">{nl2br($history->content)}</li>
<!--@end-->
</ul>
</fieldset>
<!--@end-->
<!--@end-->
<!--@if($grant->ticket_write || $grant->commiter)-->
<!--%import("./filter/insert_history.xml")-->
<div class="newIssue newHistory">
<form action="./" method="post" onsubmit="return procFilter(this, insert_history)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="target_srl" value="{$oIssue->get('target_srl')}" />
<table cellspacing="0">
<col width="140" />
<col width="*" />
<col width="140" />
<col width="*" />
<!--@if($grant->commiter)-->
<tr>
<th><label for="inputMilestone">{$lang->milestone} :</label></th>
<td>
<select name="milestone_srl" id="inputMilestone">
<option value="0">{$lang->milestone}</option>
<!--@foreach($project->milestones as $val)-->
<option value="{$val->milestone_srl}" <!--@if($oIssue->get('milestone_srl')==$val->milestone_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</td>
<th><label for="inputPriority">{$lang->priority} :</label></th>
<td>
<select name="priority_srl" id="inputPriority">
<option value="">{$lang->priority}</option>
<!--@foreach($project->priorities as $key => $val)-->
<option value="{$val->priority_srl}" <!--@if($val->priority_srl==$oIssue->get('priority_srl'))-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</td>
</tr>
<tr>
<th><label for="inputType">{$lang->type} :</label></th>
<td>
<select name="type_srl" id="inputType">
<option value="">{$lang->type}</option>
<!--@foreach($project->types as $key => $val)-->
<option value="{$val->type_srl}" <!--@if($val->type_srl==$oIssue->get('type_srl'))-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</td>
<th><label for="inputComponent">{$lang->component} :</label></th>
<td>
<select name="component_srl" id="inputComponent">
<option value="">{$lang->component}</option>
<!--@foreach($project->components as $key => $val)-->
<option value="{$val->component_srl}" <!--@if($val->component_srl==$oIssue->get('component_srl'))-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
</td>
</tr>
<tr>
<th><label for="inputPackage">{$lang->occured_version} :</label></th>
<td colspan="3">
<select name="package_srl" id="inputPackage">
<option value="">{$lang->package}</option>
<!--@foreach($project->packages as $key => $val)-->
<option value="{$val->package_srl}" <!--@if($val->package_srl==$oIssue->get('package_srl'))-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
<select name="occured_version_srl">
<option value="">{$lang->release}</option>
<!--@foreach($project->packages as $key => $val)-->
<!--@foreach($project->releases as $k => $v)-->
<!--@if($val->package_srl == $v->package_srl)-->
<option value="{$v->release_srl}" <!--@if($v->release_srl==$oIssue->get('occured_version_srl'))-->selected="selected"<!--@end-->>{$v->title}</option>
<!--@end-->
<!--@end-->
<!--@end-->
</select>
</td>
</tr>
<tr>
<th><label>{$lang->action} :</label></th>
<td colspan="3">
<ul>
<li>
<input type="radio" name="action" value="resolve" id="actResolve" /><label for="actResolve">{$lang->cmd_resolve_as}</label>
<select name="status" onchange="xGetElementById('actResolve').checked='checked'">
<!--@foreach($lang->status_list as $key => $val)-->
<option value="{$key}" <!--@if($oIssue->get('status')==$key)-->selected="selected"<!--@end-->>{$val}</option>
<!--@end-->
</select>
</li>
<li>
<input type="radio" name="action" value="reassign" id="actReassign" /><label for="actReassign">{$lang->cmd_reassign}</label>
<select name="assignee_srl" onchange="xGetElementById('actReassign').checked='checked'">
<!--@foreach($commiters as $key => $val)-->
<option value="{$val->member_srl}" <!--@if($oIssue->get('assignee_srl')==$val->member_srl)-->selected="selected"<!--@end-->>{$val->nick_name} ({$val->user_id})</option>
<!--@end-->
</select>
</li>
<li><input type="radio" name="action" value="accept" id="actAccept" /><label for="actAccept">{$lang->cmd_accept}</label></li>
</ul>
</td>
</tr>
<!--@end-->
<!--@if(!$is_logged)-->
<tr>
<th><label for="userName">{$lang->writer} :</label></th>
<td><input type="text" name="nick_name" value="" class="userName inputTypeText" id="userName"/></td>
<th><label for="userPw">{$lang->password} :</label></th>
<td><input type="password" name="password" value="" id="userPw" class="userPw inputTypeText" /></td>
</tr>
<!--@end-->
<tr>
<td colspan="4">
<textarea name="content" id="inputContent" class="inputTypeTextArea wide"></textarea>
</td>
</tr>
<tr>
<td colspan="4" class="tCenter">
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
</td>
</tr>
</table>
</form>
</div>
<!--@end-->