<script language="JavaScript">
<!--
var ema_id = '{$ema_id}';
{literal}
function openHistory(issue_id)
{
var features = 'width=520,height=400,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('history.php?iss_id=' + issue_id, '_impact', features);
popupWin.focus();
}
function openNotification(issue_id)
{
var features = 'width=440,height=400,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('notification.php?iss_id=' + issue_id, '_notification', features);
popupWin.focus();
}
function openAuthorizedReplier(issue_id)
{
var features = 'width=440,height=400,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('authorized_replier.php?iss_id=' + issue_id, '_replier', features);
popupWin.focus();
}
function signupAsAuthorizedReplier(issue_id)
{
var features = 'width=420,height=400,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('popup.php?cat=authorize_reply&iss_id=' + issue_id, '_authorizeReply', features);
popupWin.focus();
}
function selfAssign(issue_id)
{
var features = 'width=420,height=150,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('self_assign.php?iss_id=' + issue_id, '_selfAssign', features);
popupWin.focus();
}
function unassign(issue_id)
{
var features = 'width=420,height=400,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('popup.php?cat=unassign&iss_id=' + issue_id, '_unassign', features);
popupWin.focus();
}
function replyIssue(issue_id)
{
var features = 'width=740,height=580,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('send.php?cat=reply&ema_id=' + ema_id + '&issue_id=' + issue_id, '_replyIssue' + issue_id, features);
popupWin.focus();
}
function clearDuplicateStatus(issue_id)
{
var features = 'width=420,height=400,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('popup.php?cat=clear_duplicate&iss_id=' + issue_id, '_clearDuplicate', features);
popupWin.focus();
}
function changeIssueStatus(f, issue_id, current_status_id)
{
var new_status = getSelectedOption(f, 'new_status');
if (new_status == current_status_id) {
selectField(f, 'new_status');
alert('{/literal}{t escape=js}Please select the new status for this issue.{/t}{literal}');
} else {
var features = 'width=420,height=400,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('popup.php?cat=new_status&iss_id=' + issue_id + '&new_sta_id=' + new_status, '_newStatus', features);
popupWin.focus();
}
}
function editIncidentRedemption(issue_id)
{
var features = 'width=300,height=300,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('redeem_incident.php?iss_id=' + issue_id, '_flagIncident', features);
popupWin.focus();
}
function removeQuarantine(issue_id)
{
var features = 'width=420,height=400,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
var popupWin = window.open('popup.php?cat=remove_quarantine&iss_id=' + issue_id, '_removeQuarantine', features);
popupWin.focus();
}
function validateForm(f)
{
// if no emails accounts are setup, don't display confirmation message.
if (({/literal}{$current_role} < {$roles.developer}{literal}) && (ema_id != '') &&
!confirm("{/literal}{t escape=js}NOTE: If you need to send new information regarding this issue, please use the EMAIL related buttons available at the bottom of the screen.{/t}{literal}")) {
return false;
}
return true;
}
function collapseDescription()
{
if (isElementVisible(getPageElement('description1'))) {
changeVisibility('description_hidden', false);
} else {
changeVisibility('description_hidden', true);
}
}
//-->
</script>
{/literal}
<table width="100%" border="0" cellspacing="0" cellpadding="1" align="center">
<tr>
<td class="default">
{if $previous_issue}
<a class="link" title="{t}previous issue on your current active filter{/t}" href="view.php?id={$previous_issue}"><< {t}Previous Issue{/t}</a>
{/if}
</td>
<td class="default" align="right">
{if $next_issue}
<a class="link" title="{t}next issue on your current active filter{/t}" href="view.php?id={$next_issue}">{t}Next Issue{/t} >></a>
{/if}
</td>
</tr>
<tr>
<td colspan="2"><img height="10" src="{$rel_url}images/blank.gif"></td>
</tr>
</table>
{if $quarantine.iqu_status > 0}
<table bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="1" align="center">
<tr>
<td>
<table bgcolor="#FFFFFF" width="100%" cellspacing="1" cellpadding="2" border="0">
<tr>
<td><img src="{$rel_url}images/icons/error.gif" hspace="2" vspace="2" border="0" align="left"></td>
<td width="100%" align="center">
<span class="default">
<span style="font-weight: bold; font-size: 160%; color: red;">
{t}This Issue is Currently Quarantined{/t}
</span>
{include file="customer/$customer_backend_name/quarantine.tpl.html"}<br />
{if $current_role > $roles.customer && $quarantine.iqu_expiration != ''}
{t 1=$quarantine.time_till_expiration}Quarantine expires in %1{/t}<br />
{/if}
{t 1="faq.php" escape=no}Please see the <a class="link" href="%1">FAQ</a> for information regarding quarantined issues.{/t}
</span>
{if $current_role > $roles.developer}
<br /><br />
<input class="button" type="button" name="remove_quarantine" value="{t}Remove Quarantine{/t}" onClick="removeQuarantine({$issue.iss_id})">
{/if}
</td>
</tr>
</table>
</td>
</tr>
</table>
<br />
{/if}
{if $project_auto_switched == 1}
<center>
<span class="banner_red">
{t}Note: Project automatically switched to '{$current_project_name}' from '{$old_project}'.{/t}
</span>
</center>
<br />
{/if}
{if $issue.iss_private == 1}
<table bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="1" align="center">
<tr>
<td>
<table bgcolor="#FFFFFF" width="100%" cellspacing="1" cellpadding="2" border="0">
<tr>
<td width="100%" align="center" class="default" bgcolor="{$light_color}">
<b>{t}Note{/t} :</b>{t}This issue is marked private. Only Managers, the reporter and users assigned to the issue can view it.{/t}
</td>
</tr>
</table>
</td>
</tr>
</table>
<br />
{/if}
<table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="0" align="center" style="padding-left: 1;padding-right: 1;padding-top: 1;padding-bottom: 0">
<form method="get" action="update.php" name="view_form" onSubmit="javascript:return validateForm(this);">
<input type="hidden" name="id" value="{$issue.iss_id}">
<tr>
<td>
<table bgcolor="#FFFFFF" width="100%" cellspacing="1" cellpadding="2" border="0">
<tr>
<td colspan="2" class="default" nowrap>
<b>{t}Issue Overview{/t}</b> (ID: <a href="{$rel_url}view.php?id={$issue.iss_id}" title="{t}view issue details{/t}" class="link">{$issue.iss_id}</a>)
</td>
<td colspan="2" align="right" class="default">
{if $current_role > $roles.customer}
[ <a class="link" title="{t}edit the authorized repliers list for this issue{/t}" href="javascript:void(null);" onClick="javascript:openAuthorizedReplier({$smarty.get.id});">{t}Edit Authorized Replier List{/t}</a> ]
[ <a class="link" title="{t}edit the notification list for this issue{/t}" href="javascript:void(null);" onClick="javascript:openNotification({$smarty.get.id});">{t}Edit Notification List{/t}</a> ]
{/if}
[ <a class="link" title="{t}view the full history of changes on this issue{/t}" href="javascript:void(null);" onClick="javascript:openHistory({$smarty.get.id});">{t}History of Changes{/t}</a> ]
</td>
</tr>
{if $has_customer_integration and $issue.iss_customer_id}
<tr>
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Customer{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{$issue.customer_info.customer_name}
(<a href="#customer_details" class="link">{t}Complete Details{/t}</a>)
</td>
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Customer Contract{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{t}Support Level{/t}: {$issue.customer_info.support_level}
{if $issue.customer_info.support_options}
<br />
{t}Support Options{/t}: {$issue.customer_info.support_options}
{/if}
{if $issue.customer_info.is_per_incident}
<br />
{t}Redeemed Incident Types{/t}:
{strip}
{foreach from=$issue.redeemed_incidents item=incident_details name=incident_loop}
{if $incident_details.is_redeemed == 1}
{if not $smarty.foreach.incident_loop.first}, {/if}{$incident_details.title}
{assign var=has_redeemed_incident value=1}
{/if}
{/foreach}
{/strip}
{if $has_redeemed_incident != 1}<i>{t}None{/t}</i>{/if}
{/if}
</td>
</tr>
{/if}
<tr>
{* If we are not showing categories, put status here *}
{if $show_category == 1}
<td width="150" nowrap bgcolor="{$cell_color}" class="default_white">
<b>{t}Category{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{$issue.prc_title|escape:"html"}
</td>
{else}
<td width="150" bgcolor="{$cell_color}" class="default_white" rowspan="2">
<b>{t}Status{/t}:</b>
</td>
<td width="50%" bgcolor="{$issue.status_color}" class="default" rowspan="2">
{$issue.sta_title|escape:"html"}
</td>
{/if}
<td width="150" bgcolor="{$cell_color}" valign="top" class="default_white" nowrap>
<b>{t}Notification List{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" valign="top" class="default">
{if $subscribers.staff != ''}{t}Staff{/t}: {$subscribers.staff|replace:"<":"<"|replace:">":">"}{/if}
{if $subscribers.staff != '' and $subscribers.customers != ''}<br />{/if}
{if $subscribers.customers != ''}{t}Other{/t}: {$subscribers.customers|replace:"<":"<"|replace:">":">"}{/if}
</td>
</tr>
<tr>
{if $show_category == 1}
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Status{/t}:</b>
</td>
<td bgcolor="{$issue.status_color}" class="default">
{$issue.sta_title|escape:"html"}
</td>
{/if}
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Submitted Date{/t}:</b>
</td>
<td bgcolor="{$light_color}" class="default">
{$issue.iss_created_date}
</td>
</tr>
<tr>
<td {if $current_role == $roles.customer || $show_releases == 0}rowspan="2"{/if} width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Priority{/t}:</b>
</td>
<td {if $current_role == $roles.customer || $show_releases == 0}rowspan="2"{/if} bgcolor="{$light_color}" class="default">
{$issue.pri_title|escape:"html"}
</td>
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Last Updated Date{/t}:</b>
</td>
<td bgcolor="{$light_color}" class="default">
{$issue.iss_updated_date}
</td>
</tr>
<tr>
{if $current_role != $roles.customer && $show_releases == 1}
<td width="150" bgcolor="{$cell_color}" class="default_white">
<nobr><b>{t}Scheduled Release{/t}:</b> </nobr>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{$issue.pre_title|escape:"html"}
</td>
{/if}
<td nowrap width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Associated Issues{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{section name="i" loop=$issue.associated_issues_details}
{strip}
<a href="view.php?id={$issue.associated_issues_details[i].associated_issue}" title="{t}issue{/t} #{$issue.associated_issues_details[i].associated_issue} ({$issue.associated_issues_details[i].current_status}) - {$issue.associated_issues_details[i].associated_title|escape:"html"}" class="{if $issue.associated_issues_details[i].is_closed}closed_{/if}link">#{$issue.associated_issues_details[i].associated_issue}</a>
{if not $smarty.section.i.last},{/if}
{/strip}
{sectionelse}
<i>{t}No issues associated{/t}</i>
{/section}
</td>
</tr>
<tr>
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Resolution{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{$issue.iss_resolution}
</td>
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Expected Resolution Date{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{if $issue.iss_expected_resolution_date == 0}
<i>{t}No resolution date given{/t}</i>
{else}
{$issue.iss_expected_resolution_date|escape:"html"}
{/if}
</td>
</tr>
<tr>
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Percentage Complete{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{$issue.iss_percent_complete|default:"0"}%
</td>
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Estimated Dev. Time{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{$issue.iss_dev_time}
{if $issue.iss_dev_time != ''} {t}hours{/t}{/if}
</td>
</tr>
<tr>
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Reporter{/t}:</b>
</td>
<td width="50%" {if $current_role <= $roles.customer}colspan="3" {/if}bgcolor="{$light_color}" class="default">
<a href="list.php?reporter={$issue.iss_usr_id}&hide_closed=1" class="link">{$issue.reporter}</a>
</td>
{if $current_role > $roles.customer}
<td width="150" bgcolor="{$internal_color}" class="default_white">
<b>{t}Duplicates{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" class="default">
{if $issue.iss_duplicated_iss_id}
{t}Duplicate of{/t}: <a href="{$rel_url}view.php?id={$issue.iss_duplicated_iss_id}" title="{t}issue{/t} #{$issue.iss_duplicated_iss_id} ({$issue.duplicated_issue.current_status|escape:"html"}) - {$issue.duplicated_issue.title|escape:"html"}" class="{if $issue.duplicated_issue.is_closed}closed_{/if}link">#{$issue.iss_duplicated_iss_id}</a>
{/if}
{if $issue.duplicates_details|@count > 0}
{if $issue.iss_duplicated_iss_id}<br />{/if}
{t}Duplicated by{/t}:
{section name="i" loop=$issue.duplicates_details}
{strip}
<a href="{$rel_url}view.php?id={$issue.duplicates_details[i].issue_id}" title="{t}issue{/t} #{$issue.duplicates_details[i].issue_id} ({$issue.duplicates_details[i].current_status|escape:"html"}) - {$issue.duplicates_details[i].title|escape:"html"}" class="{if $issue.duplicates_details[i].is_closed}closed_{/if}link">#{$issue.duplicates_details[i].issue_id}</a>
{if not $smarty.section.i.last}, {/if}
{/strip}
{/section}
{/if}
</td>
{/if}
</tr>
<tr>
<td {if $current_role > $roles.customer && $groups|@count > 0}rowspan="2"{/if} width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Assignment{/t}:</b>
</td>
<td width="50%" {if $current_role <= $roles.customer}colspan="3" {elseif $groups|@count > 0}rowspan="2"{/if} bgcolor="{$light_color}" class="default">
{$issue.assignments}
</td>
{if $current_role > $roles.customer}
<td width="150" bgcolor="{$internal_color}" valign="top" class="default_white" nowrap>
<b>{t}Authorized Repliers{/t}:</b>
</td>
<td width="50%" bgcolor="{$light_color}" valign="top" class="default">
{if $issue.authorized_repliers.users|@count > 0}
{t}Staff{/t}:
{section name="replier" loop=$issue.authorized_repliers.users}
{strip}
{$issue.authorized_repliers.users[replier].replier|replace:"<":"<"|replace:">":">"}
{if $smarty.section.replier.last != 1}, {/if}
{/strip}
{/section}
<br />
{/if}
{if $issue.authorized_repliers.other|@count > 0}
{t}Other{/t}:
{section name="replier" loop=$issue.authorized_repliers.other}
{strip}
{$issue.authorized_repliers.other[replier].replier|replace:"<":"<"|replace:">":">"}
{if $smarty.section.replier.last != 1}, {/if}
{/strip}
{/section}
{/if}
</td>
{/if}
</tr>
{* Display Group if a group is set and user is above a customer *}
{if $current_role > $roles.customer && $groups|@count > 0}
<tr>
<td width="150" bgcolor="{$internal_color}" class="default_white">
<b>{t}Group{/t}:</b>
</td>
<td colspan="3" bgcolor="{$light_color}" class="default">
{$issue.group.grp_name}
</td>
</tr>
{/if}
<tr>
<td width="150" bgcolor="{$cell_color}" class="default_white">
<b>{t}Summary{/t}:</b><img src="images/blank.gif" height="1" width="150">
</td>
<td colspan="3" bgcolor="{$dark_color}" class="default">
{$issue.iss_summary|escape:"html"}
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="0" align="center" style="padding-left: 1;padding-right: 1;padding-top:0">
<tr>
<td>
<table bgcolor="#FFFFFF" width="100%" cellspacing="1" cellpadding="2" border="0" style="border-collapse: separate; border-spacing: 1px 0px;">
<tr>
<td align="left" valign="top" bgcolor="{$cell_color}" width="150">
<center class="default_white">
{if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari or $browser.opera5up or $browser.safari or $browser.opera5up}
[ <a id="description_link" class="white_link" href="javascript:void(null);" onClick="javascript:toggleVisibility('description');collapseDescription();">{get_innerhtml element_name="description"}</a> ]
{/if}
</center>
<span class="default_white"><b>{t}Initial Description{/t}:</b></span><br />
<span class="small_default_white">(<a class="white_link" href="javascript:void(null);" onClick="javascript:displayFixedWidth('issue_description');">{t}fixed width font{/t}</a>)</span><br />
<img src="images/blank.gif" height="1" width="150">
</td>
<td bgcolor="{$dark_color}" id="issue_description" class="default">
<span id="description1" {get_display_style element_name="description"}>{$issue.iss_description|activateLinks:"link"}</span>
<span id="description_hidden" style="display: none"><i>{t}Description is currently collapsed{/t}. <a class="link" href="javascript:void(null);" onClick="javascript:toggleVisibility('description');collapseDescription();">{t}Click to expand.{/t}</a></i></span>
{literal}
<script>
collapseDescription();
</script>
{/literal}
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="0" align="center" style="padding-left: 1;padding-right: 1;padding-top: 0;padding-bottom: 1">
<tr>
<td>
<table bgcolor="#FFFFFF" width="100%" cellspacing="1" cellpadding="2" border="0" style="padding-top: 0px">
{if $current_role > $roles.reporter}
<tr bgcolor="{$cell_color}">
<td colspan="4">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
{if $current_role > $roles.customer}
<td nowrap>
{if $is_user_assigned == 1}
{if $allow_unassigned_issues == 'yes' || $issue.assigned_users|@count > 1}
<input class="button" type="button" value="{t}Unassign Issue{/t}" onClick="javascript:unassign({$issue.iss_id});">
{/if}
{else}
<input class="button" type="button" value="{t}Assign Issue To Myself{/t}" onClick="javascript:selfAssign({$issue.iss_id});">
{/if}
</td>
{/if}
<td width="100%" align="center">
<input class="button" type="submit" value="{t}Update Issue{/t}">
{if $current_role >= $roles.standard_user and $app_setup.support_email == 'enabled' and $ema_id != ''}
<input class="button" type="button" value="{t}Reply{/t}" onClick="javascript:replyIssue({$issue.iss_id});">
{/if}
</td>
{if $current_role > $roles.customer}
<td nowrap>
<nobr>
{if not $issue.sta_is_closed}
{if $issue.duplicates == ''}
{if $issue.iss_duplicated_iss_id}
<input class="button" type="button" value="{t}Clear Duplicate Status{/t}" onClick="javascript:clearDuplicateStatus({$issue.iss_id});">
{else}
<input class="button" type="button" value="{t}Mark as Duplicate{/t}" onClick="javascript:window.location.href='duplicate.php?id={$issue.iss_id}';">
{/if}
{/if}
<input class="button" type="button" value="{t}Close Issue{/t}" onClick="javascript:window.location.href='close.php?id={$issue.iss_id}';">
{/if}
</nobr>
</td>
{/if}
</tr>
</table>
</td>
</tr>
{/if}
{if $current_role > $roles.customer}
<tr bgcolor="{$dark_color}">
<td colspan="4" align="right">
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width="50%">
{if $is_user_authorized != 1}
<input type="button" value="{t}Signup as Authorized Replier{/t}" class="button" onClick="javascript:signupAsAuthorizedReplier({$issue.iss_id});">
{/if}
{if $issue.customer_info.is_per_incident}
<input type="button" value="{t}Edit Incident Redemption{/t}" class="button" onClick="javascript:editIncidentRedemption({$issue.iss_id});">
{/if}
</td>
<td width="50%" align="right">
{if $statuses != ''}
<input type="button" value="{t}Change Status To{/t} >" class="button" onClick="javascript:changeIssueStatus(this.form, '{$issue.iss_id}', '{$issue.iss_sta_id}');">
<select class="default" name="new_status">
{html_options options=$statuses selected=$issue.iss_sta_id}
</select>
{/if}
</td>
</tr>
</table>
</td>
</tr>
{/if}
</table>
</td>
</tr>
</form>
</table>