Files
scripts/Perl OTRS/Kernel/Output/HTML/Templates/Standard/AdminUser.tt
2024-10-14 00:08:40 +02:00

334 lines
19 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("Agent Management") | html %]</h1>
[% BreadcrumbPath = [
{
Name => Translate('Agent Management'),
Link => Env("Action"),
},
]
%]
[% SWITCH Data.Action %]
[% CASE 'Add' %]
[% BreadcrumbPath.push({ Name => Translate("Add Agent"),}) %]
[% CASE 'Change' %]
[% USE EditTitle = String(Translate("Edit Agent")) %]
[% BreadcrumbPath.push({ Name => EditTitle.append( ': ', Data.UserLogin ) }) %]
[% 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("ActionEditPreferences") %]
<li>
<a href="[% Env("Baselink") %]Action=AgentPreferences;EditUserID=[% Data.UserID %]" class="CallForAction Fullsize Center"><span><i class="fa fa-user"></i>[% Translate("Edit personal preferences for this agent") | html %]</span></a>
</li>
[% RenderBlockEnd("ActionEditPreferences") %]
[% RenderBlockStart("ActionSearch") %]
<li>
<form class="SearchBox" action="[% Env("CGIHandle") %]" method="post">
<input type="hidden" name="Action" value="[% Env("Action") %]"/>
<input type="hidden" name="Subaction" value="Search"/>
<input type="text" name="Search" value="[% Data.Search | html %]" id="Search" title="[% Translate("Search") | html %]"/>
<button type="submit" value="[% Translate("Search") | html %]" title="[% Translate("Search") | html %]"><i class="fa fa-search"></i></button>
</form>
<p class="FieldExplanation">
[% Translate("Wildcards like '*' are allowed.") | html %]
</p>
</li>
[% RenderBlockEnd("ActionSearch") %]
[% RenderBlockStart("ActionAdd") %]
<li>
<a class="CallForAction Fullsize Center" href="[% Env("Baselink") %]Action=[% Env("Action") %];Subaction=Add">
<span><i class="fa fa-plus-square"></i> [% Translate("Add Agent") | html %]</span>
</a>
</li>
[% RenderBlockEnd("ActionAdd") %]
</ul>
</div>
</div>
[% RenderBlockEnd("ActionList") %]
<div class="WidgetSimple">
<div class="Header">
<h2>[% Translate("Hint") | html %]</h2>
</div>
<div class="Content">
<p class="FieldExplanation">
[% Translate("Agents will be needed to handle tickets.") | html %]
</p>
<p>
[% Translate("Attention") | html %]: [% Translate("Don't forget to add a new agent to groups and/or roles!") | html %]
</p>
</div>
</div>
</div>
<div class="ContentColumn">
<div class="WidgetSimple">
[% RenderBlockStart("OverviewHeader") %]
<div class="Header">
<h2>
[% IF Data.ListAll && Data.Limit && Data.ListAll > Data.Limit %]
[% Translate("List (only %s shown - more available)", Data.SearchListSize) | html %]
[% ELSE %]
[% Translate("List (%s total)", Data.ListAll) | html %]
[% END %]
</h2>
</div>
[% RenderBlockEnd("OverviewHeader") %]
[% RenderBlockStart("NoSearchTerms") %]
<div class="Content">
<p>[% Translate("Please enter a search term to look for agents.") | html %]</p>
</div>
[% RenderBlockEnd("NoSearchTerms") %]
[% RenderBlockStart("OverviewResult") %]
<div class="Content">
<table class="DataTable" id="User">
<thead>
<tr>
<th>[% Translate("Username") | html %]</th>
<th>[% Translate("Name") | html %]</th>
<th>[% Translate("Email") | html %]</th>
<th>[% Translate("Last login") | html %]</th>
[% RenderBlockStart("OverviewResultSwitchToUser") %]
<th>[% Translate("Login as") | html %]</th>
[% RenderBlockEnd("OverviewResultSwitchToUser") %]
<th>[% Translate("Validity") | html %]</th>
<th>[% Translate("Changed") | html %]</th>
<th>[% Translate("Created") | html %]</th>
</tr>
</thead>
<tbody>
[% RenderBlockStart("NoDataFoundMsg") %]
<tr>
<td colspan="[% Data.ColSpan | html %]">
[% Translate("No data found.") | html %]
</td>
</tr>
[% RenderBlockEnd("NoDataFoundMsg") %]
[% RenderBlockStart("OverviewResultRow") %]
<tr [% IF Data.ValidID && Data.ValidID != 1 %]class="Invalid"[% END %]>
<td>
<a class="AsBlock" href="[% Env("Baselink") %]Action=[% Env("Action") %];Subaction=Change;UserID=[% Data.UserID | uri %];Search=[% Data.Search | uri %]">[% Data.UserLogin | html %]</a>
</td>
<td>[% Data.UserFullname | html %]</td>
<td title="[% Data.UserEmail | html %]">[% Data.UserEmail | truncate(26) | html %]</td>
<td>[% Data.UserLastLoginTimestamp | Localize("TimeShort") %]</td>
[% RenderBlockStart("OverviewResultRowSwitchToUser") %]
<td>
<a class="AsBlock" href="[% Env("Baselink") %]Action=[% Env("Action") %];Subaction=Switch;UserID=[% Data.UserID | uri %];[% Env("ChallengeTokenParam") | html %]">[% Translate("Switch to agent") | html %]</a>
</td>
[% RenderBlockEnd("OverviewResultRowSwitchToUser") %]
<td>[% Translate(Data.Valid) | html %]</td>
<td>[% Data.ChangeTime | Localize("TimeShort") %]</td>
<td>[% Data.CreateTime | Localize("TimeShort") %]</td>
</tr>
[% RenderBlockEnd("OverviewResultRow") %]
</tbody>
</table>
</div>
[% RenderBlockEnd("OverviewResult") %]
[% RenderBlockStart("OverviewUpdate") %]
<div class="Header">
[% IF Data.Action == "Add" %]
<h2>[% Translate("Add Agent") | html %]</h2>
[% ELSE %]
<h2>[% Translate("Edit Agent") | html %]</h2>
[% END %]
</div>
<div class="Content">
<form action="[% Env("CGIHandle") %]" enctype="multipart/form-data" method="post" class="Validate PreventMultipleSubmits">
<input type="hidden" name="Action" value="[% Env("Action") %]"/>
<input type="hidden" name="Subaction" value="[% Data.Action | html %]Action"/>
<input type="hidden" name="UserID" value="[% Data.UserID | html %]"/>
<input type="hidden" name="Search" value="[% Data.Search | html %]"/>
[% IF Data.Action == 'Change' %]
<input type="hidden" name="ContinueAfterSave" id="ContinueAfterSave" value=""/>
[% END %]
<fieldset class="TableLike">
<label for="UserTitle">[% Translate("Title or salutation") | html %]:</label>
<div class="Field">
<input type="text" name="UserTitle" id="UserTitle" value="[% Data.UserTitle | html %]" class="W50pc" maxlength="50"/>
</div>
<div class="Clear"></div>
<label class="Mandatory" for="UserFirstname"><span class="Marker">*</span> [% Translate("Firstname") | html %]:</label>
<div class="Field">
<input type="text" name="UserFirstname" id="UserFirstname" value="[% Data.UserFirstname | html %]" class="W50pc Validate_Required [% Data.UserFirstnameInvalid | html %]" maxlength="100"/>
<div id="UserFirstnameError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
<div id="UserFirstnameServerError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
</div>
<div class="Clear"></div>
<label class="Mandatory" for="UserLastname"><span class="Marker">*</span> [% Translate("Lastname") | html %]:</label>
<div class="Field">
<input type="text" name="UserLastname" id="UserLastname" value="[% Data.UserLastname | html %]" class="W50pc Validate_Required [% Data.UserLastnameInvalid | html %]" maxlength="100"/>
<div id="UserLastnameError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
<div id="UserLastnameServerError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
</div>
<div class="Clear"></div>
<label class="Mandatory" for="UserLogin"><span class="Marker">*</span> [% Translate("Username") | html %]:</label>
<div class="Field">
<input type="text" name="UserLogin" id="UserLogin" value="[% Data.UserLogin | html %]" class="W50pc Validate_Required [% Data.UserLoginInvalid | html %]" maxlength="200" autocomplete="off" />
<div id="UserLoginError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
<div id="UserLoginServerError" class="TooltipErrorMessage">
[% RenderBlockStart("UserLoginServerError") %]
<p>[% Translate("This field is required.") | html %]</p>
[% RenderBlockEnd("UserLoginServerError") %]
[% RenderBlockStart("ExistUserLoginServerError") %]
<p>[% Translate("A user with this username already exists!") | html %]</p>
[% RenderBlockEnd("ExistUserLoginServerError") %]
</div>
</div>
<div class="Clear"></div>
<label for="UserPw">
[% Translate("Password") | html %]:
</label>
<div class="Field">
<input type="password" name="UserPw" id="UserPw" value="" class="W50pc [% Data.UserPwInvalid | html %] " maxlength="100" autocomplete="off" />
[% RenderBlockStart("ShowPasswordHint") %]
<p class="FieldExplanation">
[% Translate("Will be auto-generated if left empty.") | html %]
</p>
[% RenderBlockEnd("ShowPasswordHint") %]
</div>
<div class="Clear"></div>
<label class="Mandatory" for="UserEmail"><span class="Marker">*</span> [% Translate("Email") | html %]:</label>
<div class="Field">
<input type="[% Env("EmailFieldType") | html %]" name="UserEmail" id="UserEmail" value="[% Data.UserEmail | html %]" class="W50pc Validate_Email Validate_Required [% Data.UserEmailInvalid | html %]" maxlength="250"/>
<div id="UserEmailError" class="TooltipErrorMessage"><p>[% Translate("This field is required and needs to be a valid email address.") | html %]</p></div>
[% RenderBlockStart("UserEmailServerErrorMsg") %]
<div id="UserEmailServerError" class="TooltipErrorMessage"><p>[% Translate("This field is required.") | html %]</p></div>
[% RenderBlockEnd("UserEmailServerErrorMsg") %]
[% RenderBlockStart("UserEmailInvalidConfigServerErrorMsg") %]
<div id="UserEmailServerError" class="TooltipErrorMessage"><p>[% Translate("This email address is not allowed due to the system configuration.") | html %]</p></div>
[% RenderBlockEnd("UserEmailInvalidConfigServerErrorMsg") %]
[% RenderBlockStart("UserEmailInvalidDNSServerErrorMsg") %]
<div id="UserEmailServerError" class="TooltipErrorMessage"><p>[% Translate("DNS problem, please check your configuration and the error log.") | html %]</p></div>
[% RenderBlockEnd("UserEmailInvalidDNSServerErrorMsg") %]
[% RenderBlockStart("UserEmailInvalidMXServerErrorMsg") %]
<div id="UserEmailServerError" class="TooltipErrorMessage"><p>[% Translate("This email address failed MX check.") | html %]</p></div>
[% RenderBlockEnd("UserEmailInvalidMXServerErrorMsg") %]
[% RenderBlockStart("UserEmailInvalidSyntaxServerErrorMsg") %]
<div id="UserEmailServerError" class="TooltipErrorMessage"><p>[% Translate("The syntax of this email address is incorrect.") | html %]</p></div>
[% RenderBlockEnd("UserEmailInvalidSyntaxServerErrorMsg") %]
</div>
<div class="Clear"></div>
<label for="UserMobile">[% Translate("Mobile") | html %]:</label>
<div class="Field">
<input type="text" name="UserMobile" id="UserMobile" value="[% Data.UserMobile | html %]" class="W50pc" maxlength="50"/>
</div>
<div class="Clear"></div>
<label for="ValidID">[% Translate("Validity") | html %]:</label>
<div class="Field">
[% Data.ValidOption %]
</div>
<div class="Clear"></div>
<div class="Field SpacingTop">
[% IF Data.Action == 'Change' %]
<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("OverviewUpdate") %]
</div>
[% RenderBlockStart("EffectivePermissions") %]
<div class="WidgetSimple">
<div class="Header">
<h2>[% Translate("Effective Permissions for Agent") | html %]</h2>
</div>
<div class="Content">
<dl>
<dt>[% Translate("Group Permissions") | html %]</dt>
<dd>
<table class="DataTable VariableWidth SpacingTopSmall" id="GroupPermissionsTable">
<thead>
<tr>
<th>[% Translate("Group") | html %]</th>
[% RenderBlockStart("HeaderGroupPermissionType") %]
<th class="Center">[% Translate(Data.Type) | html %]</th>
[% RenderBlockEnd("HeaderGroupPermissionType") %]
</tr>
</thead>
<tbody>
[% RenderBlockStart("NoGroupPermissionsFoundMsg") %]
<tr>
<td>
[% Translate("This agent has no group permissions.") | html %]
</td>
</tr>
[% RenderBlockEnd("NoGroupPermissionsFoundMsg") %]
[% RenderBlockStart("GroupPermissionTableRow") %]
<tr>
<td><a href="[% Env("Baselink") %]Action=AdminGroup;Subaction=Change;ID=[% Data.ID | uri %]">[% Data.Name | html %]</a></td>
[% RenderBlockStart("GroupPermissionMark") %]
[% RenderBlockStart("GroupPermissionMarkOn") %]
<td class="Center [% Data.Highlight | html %]"><i class="fa fa-check" style="color: green;" /></td>
[% RenderBlockEnd("GroupPermissionMarkOn") %]
[% RenderBlockStart("GroupPermissionMarkOff") %]
<td class="Center [% Data.Highlight | html %]"><i class="fa fa-times" style="color: lightgray;" /></td>
[% RenderBlockEnd("GroupPermissionMarkOff") %]
[% RenderBlockEnd("GroupPermissionMark") %]
</tr>
[% RenderBlockEnd("GroupPermissionTableRow") %]
</tbody>
</table>
<p class="FieldExplanation">
[% Translate("Table above shows effective group permissions for the agent. The matrix takes into account all inherited permissions (e.g. via roles).") | html %]
</p>
</dd>
</dl>
</div>
</div>
[% RenderBlockEnd("EffectivePermissions") %]
</div>
<div class="Clear"></div>
</div>
[% RenderBlockEnd("Overview") %]