210 lines
9.5 KiB
Twig
210 lines
9.5 KiB
Twig
{% extends 'admin.twig' %}
|
|
|
|
{% block content %}
|
|
|
|
<h2 piwik-enriched-headline
|
|
help-url="http://piwik.org/docs/manage-users/">{{ 'UsersManager_ManageAccess'|translate }}</h2>
|
|
<div id="sites" class="usersManager">
|
|
<section class="sites_selector_container">
|
|
<p>{{ 'UsersManager_MainDescription'|translate }}</p>
|
|
|
|
<div class="sites_selector_title">{{ 'SitesManager_Sites'|translate }}:</div>
|
|
|
|
{% set applyAllSitesText %}
|
|
<strong>{{ 'UsersManager_ApplyToAllWebsites'|translate }}</strong>
|
|
{% endset %}
|
|
|
|
<div piwik-siteselector
|
|
class="sites_autocomplete"
|
|
siteid="{{ idSiteSelected }}"
|
|
sitename="{{ defaultReportSiteName }}"
|
|
all-sites-text="{{ applyAllSitesText|raw }}"
|
|
all-sites-location="top"
|
|
id="usersManagerSiteSelect"
|
|
switch-site-on-select="false"></div>
|
|
</section>
|
|
</div>
|
|
|
|
{% import 'ajaxMacros.twig' as ajax %}
|
|
{{ ajax.errorDiv }}
|
|
{{ ajax.loadingDiv }}
|
|
|
|
<div class="entityContainer" style="width:600px;">
|
|
{% if anonymousHasViewAccess %}
|
|
<div style="display:inline-block;margin-top:10px;" id="usersManagerAnonymousUserHasViewAccess">
|
|
{{ ['UsersManager_AnonymousUserHasViewAccess'|translate("'anonymous'","'view'"), 'UsersManager_AnonymousUserHasViewAccess2'|translate]|join(' ')|notification({'placeAt': '#usersManagerAnonymousUserHasViewAccess', 'noclear': true}) }}
|
|
</div>
|
|
{% endif %}
|
|
<table class="entityTable dataTable" id="access" style="display:inline-table;width:500px;">
|
|
<thead>
|
|
<tr>
|
|
<th class='first'>{{ 'UsersManager_User'|translate }}</th>
|
|
<th>{{ 'UsersManager_Alias'|translate }}</th>
|
|
<th>{{ 'UsersManager_PrivNone'|translate }}</th>
|
|
<th>{{ 'UsersManager_PrivView'|translate }}</th>
|
|
<th>{{ 'UsersManager_PrivAdmin'|translate }}</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
{% set accesValid %}<img src='plugins/UsersManager/images/ok.png' class='accessGranted' />{% endset %}
|
|
{% set accesInvalid %}<img src='plugins/UsersManager/images/no-access.png' class='updateAccess' />{% endset %}
|
|
{% set superUserAccess %}<span title="{{ 'UsersManager_ExceptionSuperUserAccess'|translate }}">N/A</span>{% endset %}
|
|
{% for login,access in usersAccessByWebsite %}
|
|
<tr>
|
|
<td id='login'>{{ login }}</td>
|
|
<td>{{ usersAliasByLogin[login]|raw }}</td>
|
|
<td id='noaccess'>
|
|
{% if login in superUserLogins %}
|
|
{{ superUserAccess }}
|
|
{% elseif access=='noaccess' and idSiteSelected != 'all' %}
|
|
{{ accesValid }}
|
|
{% else %}
|
|
{{ accesInvalid }}
|
|
{% endif %} </td>
|
|
<td id='view'>
|
|
{% if login in superUserLogins %}
|
|
{{ superUserAccess }}
|
|
{% elseif access == 'view' and idSiteSelected != 'all' %}
|
|
{{ accesValid }}
|
|
{% else %}
|
|
{{ accesInvalid }}
|
|
{% endif %} </td>
|
|
<td id='admin'>
|
|
{% if login in superUserLogins %}
|
|
{{ superUserAccess }}
|
|
{% elseif login == 'anonymous' %}
|
|
N/A
|
|
{% else %}
|
|
{% if access == 'admin' and idSiteSelected != 'all' %}{{ accesValid }}{% else %}{{ accesInvalid }}{% endif %}
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
<div id="accessUpdated" style="vertical-align:top;"></div>
|
|
</div>
|
|
|
|
<div class="ui-confirm" id="confirm">
|
|
<h2>{{ 'UsersManager_ChangeAllConfirm'|translate("<span id='login'></span>")|raw }}</h2>
|
|
<input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
|
|
<input role="no" type="button" value="{{ 'General_No'|translate }}"/>
|
|
</div>
|
|
|
|
{% if userIsSuperUser %}
|
|
<div class="ui-confirm" id="confirmUserRemove">
|
|
<h2></h2>
|
|
<input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
|
|
<input role="no" type="button" value="{{ 'General_No'|translate }}"/>
|
|
</div>
|
|
<div class="ui-confirm" id="confirmPasswordChange">
|
|
<h2>{{ 'UsersManager_ChangePasswordConfirm'|translate }}</h2>
|
|
<input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
|
|
<input role="no" type="button" value="{{ 'General_No'|translate }}"/>
|
|
</div>
|
|
<br/>
|
|
<h2>{{ 'UsersManager_UsersManagement'|translate }}</h2>
|
|
<p>{{ 'UsersManager_UsersManagementMainDescription'|translate }}
|
|
{{ 'UsersManager_ThereAreCurrentlyNRegisteredUsers'|translate("<b>"~usersCount~"</b>")|raw }}</p>
|
|
{% import 'ajaxMacros.twig' as ajax %}
|
|
{{ ajax.errorDiv('ajaxErrorUsersManagement') }}
|
|
{{ ajax.loadingDiv('ajaxLoadingUsersManagement') }}
|
|
<div class="entityContainer" style="margin-bottom:50px;">
|
|
<table class="entityTable dataTable" id="users">
|
|
<thead>
|
|
<tr>
|
|
<th>{{ 'General_Username'|translate }}</th>
|
|
<th>{{ 'General_Password'|translate }}</th>
|
|
<th>{{ 'UsersManager_Email'|translate }}</th>
|
|
<th>{{ 'UsersManager_Alias'|translate }}</th>
|
|
<th>token_auth</th>
|
|
{% if showLastSeen is defined and showLastSeen %}
|
|
<th>{{ 'UsersManager_LastSeen'|translate }}</th>
|
|
{% endif %}
|
|
<th>{{ 'General_Edit'|translate }}</th>
|
|
<th>{{ 'General_Delete'|translate }}</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
{% for i,user in users %}
|
|
{% if user.login != 'anonymous' %}
|
|
<tr class="editable" id="row{{ i }}">
|
|
<td id="userLogin" class="editable">{{ user.login }}</td>
|
|
<td id="password" class="editable">-</td>
|
|
<td id="email" class="editable">{{ user.email }}</td>
|
|
<td id="alias" class="editable">{{ user.alias|raw }}</td>
|
|
<td id="token_auth">{{ user.token_auth }}</td>
|
|
{% if user.last_seen is defined %}
|
|
<td id="last_seen">{% if user.last_seen is empty %}-{% else %}{{ 'General_TimeAgo'|translate(user.last_seen)|raw }}{% endif %}</td>
|
|
{% endif %}
|
|
<td>
|
|
<span class="edituser link_but" id="row{{ i }}">
|
|
<img title="{{ 'General_Edit'|translate }}" src='plugins/Zeitgeist/images/ico_edit.png'/>
|
|
<span>{{ 'General_Edit'|translate }}</span>
|
|
</span>
|
|
</td>
|
|
<td>
|
|
<span class="deleteuser link_but" id="row{{ i }}">
|
|
<img title="{{ 'General_Delete'|translate }}" src='plugins/Zeitgeist/images/ico_delete.png'/>
|
|
<span>{{ 'General_Delete'|translate }}</span>
|
|
</span>
|
|
</td>
|
|
</tr>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
<div class="addrow"><img src='plugins/UsersManager/images/add.png'/> {{ 'UsersManager_AddUser'|translate }}</div>
|
|
</div>
|
|
|
|
<h2 id="super_user_access">{{ 'UsersManager_SuperUserAccessManagement'|translate }}</h2>
|
|
<p>{{ 'UsersManager_SuperUserAccessManagementMainDescription'|translate }} <br/>
|
|
{{ 'UsersManager_SuperUserAccessManagementGrantMore'|translate }}</p>
|
|
|
|
{{ ajax.errorDiv('ajaxErrorSuperUsersManagement') }}
|
|
{{ ajax.loadingDiv('ajaxLoadingSuperUsersManagement') }}
|
|
|
|
<table class="entityTable dataTable" id="superUserAccess" style="display:inline-table;width:400px;">
|
|
<thead>
|
|
<tr>
|
|
<th class='first'>{{ 'UsersManager_User'|translate }}</th>
|
|
<th>{{ 'UsersManager_Alias'|translate }}</th>
|
|
<th>{{ 'Installation_SuperUser'|translate }}</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
{% if users|length > 1 %}
|
|
{% for login,alias in usersAliasByLogin if login != 'anonymous' %}
|
|
<tr>
|
|
<td id='login'>{{ login }}</td>
|
|
<td>{{ alias|raw }}</td>
|
|
<td id='superuser' data-login="{{ login|e('html_attr') }}">
|
|
<img src='plugins/UsersManager/images/ok.png' class='accessGranted' data-hasaccess="1" {% if not (login in superUserLogins) %}style="display:none"{% endif %} />
|
|
<img src='plugins/UsersManager/images/no-access.png' class='updateAccess' data-hasaccess="0" {% if login in superUserLogins %}style="display:none"{% endif %} />
|
|
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
{% else %}
|
|
<tr>
|
|
<td colspan="3">
|
|
{{ 'UsersManager_NoUsersExist'|translate }}
|
|
</td>
|
|
</tr>
|
|
{% endif %}
|
|
</tbody>
|
|
</table>
|
|
|
|
<div id="superUserAccessUpdated" style="vertical-align:top;"></div>
|
|
|
|
<div class="ui-confirm" id="superUserAccessConfirm">
|
|
<h2> </h2>
|
|
<input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
|
|
<input role="no" type="button" value="{{ 'General_No'|translate }}"/>
|
|
</div>
|
|
|
|
{% endif %}
|
|
{% endblock %}
|