275 lines
15 KiB
Plaintext
275 lines
15 KiB
Plaintext
# --
|
|
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
|
|
# --
|
|
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
|
|
# the enclosed file COPYING for license information (GPL). If you
|
|
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
|
|
# --
|
|
|
|
[% RenderBlockStart("Overview") %]
|
|
<div class="MainBox ARIARoleMain LayoutFixedSidebar SidebarFirst">
|
|
<h1 class="InvisibleText">[% Translate("SLA Management") | html %]</h1>
|
|
|
|
[% BreadcrumbPath = [
|
|
{
|
|
Name => Translate('SLA Management'),
|
|
Link => Env("Action"),
|
|
},
|
|
]
|
|
%]
|
|
|
|
[% IF Data.SLAID %]
|
|
[% USE EditTitle = String(Translate("Edit SLA")) %]
|
|
[% BreadcrumbPath.push({ Name => EditTitle.append( ': ', Data.SLAName ) }) %]
|
|
[% ELSIF Data.Subaction == "SLAEdit" %]
|
|
[% BreadcrumbPath.push({ Name => Translate("Add SLA"),}) %]
|
|
[% END %]
|
|
|
|
[% INCLUDE "Breadcrumb.tt" Path = BreadcrumbPath %]
|
|
|
|
<div class="Clear"></div>
|
|
<div class="SidebarColumn">
|
|
|
|
[% RenderBlockStart("ActionList") %]
|
|
<div class="WidgetSimple">
|
|
<div class="Header">
|
|
<h2>[% Translate("Actions") | html %]</h2>
|
|
</div>
|
|
<div class="Content">
|
|
<ul class="ActionList">
|
|
|
|
[% RenderBlockStart("ActionOverview") %]
|
|
<li>
|
|
<a href="[% Env("Baselink") %]Action=[% Env("Action") %]" class="CallForAction Fullsize Center"><span><i class="fa fa-caret-left"></i>[% Translate("Go to overview") | html %]</span></a>
|
|
</li>
|
|
[% RenderBlockEnd("ActionOverview") %]
|
|
|
|
[% RenderBlockStart("ActionAdd") %]
|
|
<li>
|
|
<a class="CallForAction Fullsize Center" href="[% Env("Baselink") %]Action=[% Env("Action") %];Subaction=SLAEdit">
|
|
<span><i class="fa fa-plus-square"></i>[% Translate("Add SLA") | html %]</span>
|
|
</a>
|
|
</li>
|
|
[% RenderBlockEnd("ActionAdd") %]
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
[% RenderBlockEnd("ActionList") %]
|
|
[% RenderBlockStart("Filter") %]
|
|
<div class="WidgetSimple">
|
|
<div class="Header">
|
|
<h2><label for="FilterSLAs">[% Translate("Filter for SLAs") | html %]</label></h2>
|
|
</div>
|
|
<div class="Content">
|
|
<input type="text" id="FilterSLAs" class="FilterBox" placeholder="[% Translate("Just start typing to filter...") | html %]" name="FilterSLAs" value="" title="[% Translate("Filter for SLAs") | html %]">
|
|
</div>
|
|
</div>
|
|
[% RenderBlockEnd("Filter") %]
|
|
</div>
|
|
|
|
<div class="ContentColumn">
|
|
<div class="WidgetSimple">
|
|
[% RenderBlockStart("OverviewList") %]
|
|
<div class="Header">
|
|
<h2>[% Translate("List") | html %]</h2>
|
|
</div>
|
|
<div class="Content">
|
|
|
|
<table class="DataTable" id="SLAs">
|
|
<thead>
|
|
<tr>
|
|
<th>[% Translate("SLA") | html %]</th>
|
|
<th>[% Translate("Service") | html %]</th>
|
|
<th>[% Translate("Comment") | html %]</th>
|
|
<th>[% Translate("Validity") | html %]</th>
|
|
<th>[% Translate("Changed") | html %]</th>
|
|
<th>[% Translate("Created") | html %]</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% RenderBlockStart("NoDataFoundMsg") %]
|
|
<tr>
|
|
<td colspan="6">
|
|
[% Translate("No data found.") | html %]
|
|
</td>
|
|
</tr>
|
|
[% RenderBlockEnd("NoDataFoundMsg") %]
|
|
[% RenderBlockStart("OverviewListRow") %]
|
|
<tr [% IF Data.ValidID && Data.ValidID != 1 %]class="Invalid"[% END %]>
|
|
<td><a class="AsBlock" href="[% Env("Baselink") %]Action=[% Env("Action") %];Subaction=SLAEdit;SLAID=[% Data.SLAID | uri %]">[% Data.Name | html %]</a></td>
|
|
<td>[% Data.Service | html %]</td>
|
|
<td title="[% Data.Comment | html %]">[% Data.Comment | truncate(26) | html %]</td>
|
|
<td>[% Translate(Data.Valid) | html %]</td>
|
|
<td>[% Data.ChangeTime | Localize("TimeShort") %]</td>
|
|
<td>[% Data.CreateTime | Localize("TimeShort") %]</td>
|
|
</tr>
|
|
[% RenderBlockEnd("OverviewListRow") %]
|
|
<tr class="FilterMessage Hidden">
|
|
<td colspan="6">[% Translate("No matches found.") | html %]</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
[% RenderBlockEnd("OverviewList") %]
|
|
|
|
[% RenderBlockStart("SLAEdit") %]
|
|
<div class="Header">
|
|
[% IF !Data.SLAID %]
|
|
<h2>[% Translate("Add SLA") | html %]</h2>
|
|
[% ELSE %]
|
|
<h2>[% Translate("Edit SLA") | html %]</h2>
|
|
[% END %]
|
|
</div>
|
|
<div class="Content">
|
|
|
|
<form action="[% Env("CGIHandle") %]" method="post" class="Validate PreventMultipleSubmits">
|
|
<input type="hidden" name="Action" value="[% Env("Action") %]"/>
|
|
<input type="hidden" name="Subaction" value="SLASave"/>
|
|
<input type="hidden" name="SLAID" value="[% Data.SLAID | html %]"/>
|
|
[% IF Data.SLAID %]
|
|
<input type="hidden" name="ContinueAfterSave" id="ContinueAfterSave" value=""/>
|
|
[% END %]
|
|
<fieldset class="TableLike">
|
|
|
|
<label class="Mandatory" for="Name"><span class="Marker">*</span> [% Translate("SLA") | html %]:</label>
|
|
<div class="Field">
|
|
<input type="text" name="Name" id="Name" value="[% Data.Name | html %]" class="W50pc Validate_Required [% Data.NameInvalid | html %]" maxlength="200"/>
|
|
<div id="NameError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
|
|
<div id="NameServerError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
|
|
<label for="ServiceIDs">[% Translate("Service") | html %]:</label>
|
|
<div class="Field">
|
|
[% Data.ServiceOptionStrg %]
|
|
</div>
|
|
<div class="Clear"></div>
|
|
|
|
<label for="Calendar">[% Translate("Calendar") | html %]:</label>
|
|
<div class="Field">
|
|
[% Data.CalendarOptionStrg %]
|
|
</div>
|
|
<div class="Clear"></div>
|
|
|
|
<label for="FirstResponseTime">[% Translate("Escalation - first response time") | html %] ([% Translate("minutes") | html %]):</label>
|
|
<div class="Field">
|
|
<input type="text" name="FirstResponseTime" id="FirstResponseTime" value="[% Data.FirstResponseTime | html %]" class="W50px Validate_Number" maxlength="10"/>
|
|
<div id="FirstResponseTimeError" class="TooltipErrorMessage"><p>[% Translate("Please write only numbers!") | html %]</p></div>
|
|
(<label for="FirstResponseNotify">[% Translate("Notify by") | html %]</label> [% Data.FirstResponseNotifyOptionStrg %])
|
|
<p class="FieldExplanation">
|
|
[% Translate("0 = no escalation") | html %] - 24 [% Translate("hours") | html %] = 1440 [% Translate("minutes") | html %] - [% Translate("Only business hours are counted.") | html %]
|
|
</p>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
|
|
<label for="UpdateTime">[% Translate("Escalation - update time") | html %] ([% Translate("minutes") | html %]):</label>
|
|
<div class="Field">
|
|
<input type="text" name="UpdateTime" id="UpdateTime" value="[% Data.UpdateTime | html %]" class="W50px Validate_Number" maxlength="10"/>
|
|
<div id="UpdateTimeError" class="TooltipErrorMessage"><p>[% Translate("Please write only numbers!") | html %]</p></div>
|
|
(<label for="UpdateNotify">[% Translate("Notify by") | html %]</label> [% Data.UpdateNotifyOptionStrg %])
|
|
<p class="FieldExplanation">
|
|
[% Translate("0 = no escalation") | html %] - 24 [% Translate("hours") | html %] = 1440 [% Translate("minutes") | html %] - [% Translate("Only business hours are counted.") | html %]
|
|
</p>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
|
|
<label for="SolutionTime">[% Translate("Escalation - solution time") | html %] ([% Translate("minutes") | html %]):</label>
|
|
<div class="Field">
|
|
<input type="text" name="SolutionTime" id="SolutionTime" value="[% Data.SolutionTime | html %]" class="W50px Validate_Number" maxlength="10"/>
|
|
<div id="SolutionTimeError" class="TooltipErrorMessage"><p>[% Translate("Please write only numbers!") | html %]</p></div>
|
|
(<label for="SolutionNotify">[% Translate("Notify by") | html %]</label> [% Data.SolutionNotifyOptionStrg %])
|
|
<p class="FieldExplanation">
|
|
[% Translate("0 = no escalation") | html %] - 24 [% Translate("hours") | html %] = 1440 [% Translate("minutes") | html %] - [% Translate("Only business hours are counted.") | html %]
|
|
</p>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
|
|
<label class="Mandatory" for="ValidID"><span class="Marker">*</span> [% Translate("Validity") | html %]:</label>
|
|
<div class="Field">
|
|
[% Data.ValidOptionStrg %]
|
|
</div>
|
|
<div class="Clear"></div>
|
|
|
|
<label for="Comment">[% Translate("Comment") | html %]:</label>
|
|
<div class="Field">
|
|
<input type="text" name="Comment" id="Comment" value="[% Data.Comment | html %]" class="W50pc" maxlength="250"/>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
[% RenderBlockStart("SLAItem") %]
|
|
[% RenderBlockStart("InputKey") %]
|
|
<label for="[% Data.Name | html %]">[% Translate(Data.Label) | html %] [% Translate(Data.Key) | html %]:</label>
|
|
<div class="Field">
|
|
<input type="text" name="[% Data.Name | html %]" id="[% Data.Name | html %]" value="[% Data.SelectedID | html %]" class="W50pc"/>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
[% RenderBlockEnd("InputKey") %]
|
|
[% RenderBlockStart("Input") %]
|
|
<label for="[% Data.Name | html %]">[% Translate(Data.Label) | html %]:</label>
|
|
<div class="Field">
|
|
<input type="text" name="[% Data.Name | html %]" id="[% Data.Name | html %]" value="[% Data.SelectedID | html %]" class="W50pc"/>
|
|
<p class="FieldExplanation">
|
|
[% Translate(Data.Desc) | html %]
|
|
</p>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
[% RenderBlockEnd("Input") %]
|
|
[% RenderBlockStart("TextArea") %]
|
|
<label for="[% Data.Name | html %]">[% Translate(Data.Label) | html %]:</label>
|
|
<div class="Field">
|
|
<textarea name="[% Data.Name | html %]" id="[% Data.Name | html %]" rows="[% Data.Rows | html %]" cols="[% Data.Cols | html %]">[% Data.SelectedID | html %]</textarea>
|
|
<p class="FieldExplanation">
|
|
[% Translate(Data.Desc) | html %]
|
|
</p>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
|
|
[% RenderBlockEnd("TextArea") %]
|
|
[% RenderBlockStart("Option") %]
|
|
<label for="[% Data.Name | html %]">[% Translate(Data.Label) | html %] [% Translate(Data.Key) | html %]:</label>
|
|
<div class="Field">
|
|
[% Data.Option %]
|
|
<p class="FieldExplanation">
|
|
[% Translate(Data.Desc) | html %]
|
|
</p>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
[% RenderBlockEnd("Option") %]
|
|
[% RenderBlockStart("Upload") %]
|
|
<label for="[% Data.Name | html %]">[% Translate(Data.Label) | html %] [% Translate(Data.Key) | html %]:</label>
|
|
<div class="Field">
|
|
<input name="[% Data.Name | html %]" id="[% Data.Name | html %]" type="file" class="fixed"/>
|
|
<a href="">[% Data.Filename | html %]</a>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
[% RenderBlockEnd("Upload") %]
|
|
[% RenderBlockStart("Password") %]
|
|
<label for="[% Data.Name | html %]">[% Translate(Data.Label) | html %] [% Translate(Data.Key) | html %]:</label>
|
|
<div class="Field">
|
|
<input type="password" name="[% Data.Name | html %]" id="[% Data.Name | html %]" value="" class="W50pc"/>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
[% RenderBlockEnd("Password") %]
|
|
[% RenderBlockEnd("SLAItem") %]
|
|
<div class="Field SpacingTop">
|
|
[% IF Data.SLAID %]
|
|
<button class="CallForAction Primary" id="SubmitAndContinue" type="button" value="[% Translate("Save") | html %]"><span>[% Translate("Save") | html %]</span></button>
|
|
[% Translate("or") | html %]
|
|
<button class="CallForAction Primary" id="Submit" type="submit" value="[% Translate("Save") | html %]"><span>[% Translate("Save and finish") | html %]</span></button>
|
|
[% ELSE %]
|
|
<button class="CallForAction Primary" id="Submit" type="submit" value="[% Translate("Save") | html %]"><span>[% Translate("Save") | html %]</span></button>
|
|
[% END %]
|
|
[% Translate("or") | html %]
|
|
<a href="[% Env("Baselink") %]Action=[% Env("Action") %]">[% Translate("Cancel") | html %]</a>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
</fieldset>
|
|
</form>
|
|
</div>
|
|
[% RenderBlockEnd("SLAEdit") %]
|
|
</div>
|
|
</div>
|
|
<div class="Clear"></div>
|
|
</div>
|
|
[% RenderBlockEnd("Overview") %]
|