SmartIT_Extensions/BMC/smart-it-full-helix/views/layout-configuration/title-bar-component/title-bar.html

146 lines
9.8 KiB
HTML

<!--Ticket header section-->
<div loading-spinner if="state.isDataLoading" centered="true" overlay="true"></div>
<div ux-id="title-bar" ng-class="{'highlight-section':!ticket.summary}" class="title-bar__section col-md-12" role="region" tabindex="0" auto-focus>
<div class="ticket__basic-info">
<!--First Row-->
<div ux-id="title-summary" ng-if="!editMode">
<div ng-if="!ticket.summary" class="ticket__required-field">
<i class="icon-exclamation_triangle"></i> {{'ticket.notification.draft.missingTitle' | i18n}}
</div>
<div ux-id="ticket-title-value" tabindex="0" class="title-bar__summary" ng-if="isFullVersion" title="{{summaryField.value}}" ng-bind-html="summaryField.value | securelinky:'_blank'"></div>
<div class="title-bar__summary" ng-if="!isFullVersion" >
<a class="ticket__summary" ui-sref="{{ticket.type}}({id: ticket.id})">{{summaryField.value}}</a>
</div>
</div>
<div ux-id="field_title" ng-if="editMode">
<label class="label_control-wrap">
<span id="titleLabel" class="label__text"
potentially-required-field
field-name="summary"
itsm-required="{{summaryField.ootb}}"
entity="ticket">
{{'common.labels.title' | i18n}}
</span>
<input type="text" class="edit-header__title form-control" ng-change="onSummaryChange()" ng-model="summaryField.value"
title="{{summaryField.value}}" potentially-required-field
field-name="summary"
itsm-required="{{summaryField.ootb}}"
ng-disabled="!isSummaryEditable"
entity="ticket" maxlength="{{summaryField.maxLength}}" aria-labelledby="titleLabel">
<character-limit-message field="summaryField.value" limit="{{summaryField.maxLength}}"></character-limit-message>
</label>
</div>
<!--Second Row-->
<div class="pull-left row col-md-12" ng-class="{'title-bar__display': !editMode}">
<div ux-id="ticket-type" class="title-bar__display-id" ng-if="!editMode">
<div class="ticket__icon">
<span ux-id="ticket-icon" class="{{iconClass()}}"></span>
</div>
<div ux-id="ticket-type-value" class="title-bar__display-id-label">{{'ticket.type.' + ticket.type | i18n}} </div>
</div>
<!--configurable section-->
<div ng-if="titleBarPanelId" ng-class="(editMode) ? 'col-md-12 row' : ''" class="title-bar__configuration-section panel-field-area">
<custom-field-area ux-id="title-bar-custom-fields" ticket="ticket"
metadata="metadata"
panel-id="{{titleBarPanelId}}"
stacked="true"
class="editable-content-section-block {{editMode ? '' : 'title-bar__configuration-section-custom-area'}}"
update-is-handled-by-parent="true"
is-title-bar="true">
</custom-field-area>
</div>
</div>
<!--Third Row-->
<div ng-if="!editMode" class="title-bar__information-section">
<div class="pull-left">
<div ux-id="last-updated" class="title-bar__lastupdated">{{'ticket.list.lastUpdated' | i18n : (ticket.modifiedDate | humanizedAbsoluteDateFormat)}}</div>
</div>
<div class="pull-right" ng-if="!isFullVersion">
<a ux-id="view-full-link" class="ticket__name-link" aria-label="{{ fullDetailsText }}"
ui-sref="{{ticket.type}}({id: ticket.id})">{{ fullDetailsText }}</a>
</div>
<div class="ticket-controls" ng-if="isFullVersion">
<div ux-id="need-attention-ticket" title="{{ needsAttentionFlag.value === 'Yes' ? 'controls.action.unflag' : 'controls.action.flag' | i18n }}" class="profile-action-bar__item"
aria-label="{{ needsAttentionFlag.value === 'Yes' ? 'controls.action.unflag' : 'controls.action.flag' | i18n }}" role="button" tabindex="0"
ng-class="{'title-bar__needs-attention': (needsAttentionFlag.value === 'Yes')}"
ng-if="needsAttentionFlag.visibility && (ticket.type === 'incident' || ticket.type === 'workorder') && !((ticket.status.value === 'Rejected' || ticket.status.value === 'Cancelled' || ticket.status.value === 'Closed') && needsAttentionFlag.value === 'No')"
ng-click="ticketActions.toggleNeedAttentionFlag()" ng-enter="ticketActions.toggleNeedAttentionFlag()">
<i ng-class="needsAttentionFlag.value === 'Yes' ? 'icon-flag': 'icon-flag_o'"></i>
</div>
<div ux-id="need-attention-ticket" title="{{ 'ticket.needsAttention.flag.disabled' | i18n : (ticket.status.value | localizeLabel: 'status': ticket.type) }}" class="profile-action-bar__item title-bar__needs-attention-disabled"
aria-label="{{ 'ticket.needsAttention.flag.disabled' | i18n : (ticket.status.value | localizeLabel: 'status': ticket.type) }}"
ng-class="{'title-bar__needs-attention': (needsAttentionFlag.value === 'Yes')}"
ng-if="needsAttentionFlag.visibility && (ticket.type === 'incident' || ticket.type === 'workorder') && ((ticket.status.value === 'Rejected' || ticket.status.value === 'Cancelled' || ticket.status.value === 'Closed') && needsAttentionFlag.value === 'No')">
<i ng-class="needsAttentionFlag.value === 'Yes' ? 'icon-flag': 'icon-flag_o'"></i>
</div>
<div class="profile-action-bar__item" ng-if="!isDraft && ticket.accessMappings.assigneeSelfAssignmentAllowed">
<button ux-id="assign-to-me-btn" type="button" class="btn_link" ng-disabled="!isAssignToMeEnabled()" ng-click="ticketActions.assignToMe($event)"
title="{{'common.labels.assignToMe' | i18n}}" aria-label="{{'common.labels.assignToMe' | i18n}}" tabindex="0">
<i class="icon-user_plus"></i>
</button>
</div>
<div class="profile-action-bar__item dropdown" ng-if="!isDraft">
<i ux-id="share-btn" role="button" class="icon-share dropdown-toggle" title="{{'controls.action.share' | i18n}}" aria-label="{{'controls.action.share' | i18n}}" tabindex="0"></i>
<ul class="profile-action-bar__item-menu dropdown-menu">
<li>
<div ux-id="share-ticket-email" class="dropdown-item" ng-click="ticketActions.share()" tabindex="0" role="menuitem">
{{'action.ticket.email' | i18n: ('common.labels.' + ticket.type | i18n) }}
</div>
</li>
<li ng-if='chatModel.connected'>
<a ux-id="share-ticket-chat" class="dropdown-item profile-action-bar__item-menu_start-chat" tabindex="0" role="menuitem">
{{(('chat.startFromTicket.headerMenu.' + ticket.type) | i18n) }}
</a>
</li>
</ul>
</div>
<div ux-id="follow-btn" class="profile-action-bar__item" ng-if="!isDraft" role="link" tabindex="0" ng-click="toggleFollowingFlag()" ng-enter="toggleFollowingFlag()"
title="{{(ticket.following? 'controls.action.unfollow' : 'controls.action.follow') | i18n}}"
aria-label="{{(ticket.following? 'controls.action.unfollow' : 'controls.action.follow') | i18n}}">
<i class="{{ticket.following? 'icon-star' : 'icon-star_o'}}"></i>
</div>
<div ux-id="print-btn" title="{{'controls.action.print' | i18n}}" class="profile-action-bar__item"
aria-label="{{'controls.action.print' | i18n}}" role="link" tabindex="0"
ng-click="ticketActions.showPrintDialog($event)" ng-enter="ticketActions.showPrintDialog($event)">
<i class="{{'icon-printer'}}"></i>
</div>
<div ux-id="refresh-btn" class="profile-action-bar__item" ng-if="!isDraft" role="link" tabindex="0" ng-click="refreshTicket()" ng-enter="refreshTicket()"
title="{{'common.labels.refresh' | i18n}}"
aria-label="{{'common.labels.refresh' | i18n}}">
<i class="icon-refresh"></i>
</div>
<div ux-id="copy-change-btn" class="profile-action-bar__item" ng-if="ticket.type == 'change' && ticketActions.copyChangeAllowed()" role="link" tabindex="0" ng-click="copyChangeTicket()" ng-enter="copyChangeTicket()"
title="{{'copychange.form.title' | i18n}}"
aria-label="{{'copychange.form.title' | i18n}}">
<i class="icon-files_copy_o"></i>
</div>
<div ux-id="reopen-btn" ng-class="{'profile-action-bar__item': true, 'profile-action-bar__item_text' : !userModel.isAccessibleUser}"
ng-if="!isDraft && (ticket.status.value == 'Cancelled' || ticket.status.value == 'Closed') && !ticket.reopenedDate && ticket.accessMappings.reopenActionAllowed">
<button type="button" title="{{'action.incident.reopen.tooltip' | i18n}}" ng-click="ticketActions.confirmAction('reopen')" class="btn_link font-size-l">
{{'controls.action.reopen' | i18n}}
</button>
</div>
<div ux-id="resume-btn" ng-class="{'profile-action-bar__item': true, 'profile-action-bar__item_text' : !userModel.isAccessibleUser}"
ng-if="ticket.type==='change' && (ticket.accessMappings.restartActionAllowed && ticket.status.value=='Rejected') ||
(ticket.accessMappings.restartActionAllowed && ticket.status.value=='Cancelled') ||
ticket.accessMappings.resumeActionAllowed">
<button type="button" ng-if="ticket.accessMappings.restartActionAllowed && ticket.status.value=='Rejected'"
title="{{'action.change.restart.tooltip.rejected' | i18n : (ticket.previousStatus.value | localizeLabel: 'status':'change')}}" ng-click="ticketActions.applyAction('restart')" class="font-size-l btn_link">
{{'controls.action.restart' | i18n}}
</button>
<button type="button" ng-if="ticket.accessMappings.restartActionAllowed && ticket.status.value=='Cancelled'"
title="{{'action.change.restart.tooltip.cancelled' | i18n}}" ng-click="ticketActions.applyAction('restart')" class="font-size-l btn_link">
{{'controls.action.restart' | i18n}}
</button>
<button type="button" ng-if="ticket.accessMappings.resumeActionAllowed"
title="{{'action.change.resume.tooltip' | i18n : (ticket.previousStatus.value | localizeLabel: 'status':'change')}}" ng-click="ticketActions.applyAction('resume')" class="font-size-l btn_link">
{{'controls.action.resume' | i18n}}
</button>
</div>
<launch-actions-dropdown ux-id="more-actions" ng-hide="hideMoreActionsButton || isDraft" hide-dropdown="hideMoreActionsButton" class="profile-action-bar__item profile-action-bar__item_text" context="ticket" drop-down-options="moreDropDownOptions"></launch-actions-dropdown>
</div>
</div>
</div>
</div>