diff options
Diffstat (limited to 'plugins/UsersManager/templates/index.twig')
-rw-r--r-- | plugins/UsersManager/templates/index.twig | 263 |
1 files changed, 155 insertions, 108 deletions
diff --git a/plugins/UsersManager/templates/index.twig b/plugins/UsersManager/templates/index.twig index d6f6edfdbd..b4f75df6cc 100644 --- a/plugins/UsersManager/templates/index.twig +++ b/plugins/UsersManager/templates/index.twig @@ -4,43 +4,51 @@ {% block content %} -<h2 piwik-enriched-headline - help-url="http://piwik.org/docs/manage-users/">{{ title }}</h2> -<div id="sites" class="usersManager"> - <section class="sites_selector_container"> - <p>{{ 'UsersManager_MainDescription'|translate }}</p> - - {% set applyAllSitesText %} - <strong>{{ 'UsersManager_ApplyToAllWebsites'|translate }}</strong> - {% endset %} - - <div piwik-siteselector - show-selected-site="true" - only-sites-with-admin-access="true" - 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> +<div piwik-content-block + content-title="{{ title|e('html_attr') }}" + feature="true" + style="width:800px;" + help-url="https://piwik.org/docs/manage-users/" + > +<div ng-controller="ManageUserAccessController as manageUserAccess"> + <div id="sites" class="usersManager"> + <section class="sites_selector_container"> + <p>{{ 'UsersManager_MainDescription'|translate }}</p> + + {% set applyAllSitesText %} + <strong>{{ 'UsersManager_ApplyToAllWebsites'|translate }}</strong> + {% endset %} + + <div piwik-siteselector + show-selected-site="true" + only-sites-with-admin-access="true" + class="sites_autocomplete" + ng-model="manageUserAccess.site" + ng-change="manageUserAccess.siteChanged()" + siteid="{{ idSiteSelected }}" + sitename="{{ defaultReportSiteName }}" + all-sites-text="{{ applyAllSitesText|raw }}" + all-sites-location="top" + id="usersManagerSiteSelect" + switch-site-on-select="false"></div> + </section> + </div> -{% block websiteAccessTable %} + {% block websiteAccessTable %} -{% import 'ajaxMacros.twig' as ajax %} -{{ ajax.errorDiv }} -{{ ajax.loadingDiv }} + {% import 'ajaxMacros.twig' as ajax %} + + <div piwik-activity-indicator class="loadingManageUserAccess" loading="manageUserAccess.isLoading"></div> + <div id="accessUpdated" style="vertical-align:top;"></div> -<div class="entityContainer" style="width:600px;margin-top:16px;"> {% if anonymousHasViewAccess %} <br/> <div class="alert alert-warning"> {{ ['UsersManager_AnonymousUserHasViewAccess'|translate("'anonymous'","'view'"), 'UsersManager_AnonymousUserHasViewAccess2'|translate]|join(' ') }} </div> {% endif %} - <table class="entityTable dataTable" id="access" style="display:inline-table;width:550px;"> + + <table piwik-content-table id="manageUserAccess"> <thead> <tr> <th class='first'>{{ 'UsersManager_User'|translate }}</th> @@ -53,11 +61,11 @@ <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 %} {% if userIsSuperUser or (hasOnlyAdminAccess and (access!='noaccess' or idSiteSelected == 'all')) %} - <tr> + <tr data-login="{{ login|e('html_attr') }}"> <td id='login'>{{ login }}</td> <td>{{ usersAliasByLogin[login]|raw }}</td> <td id='noaccess'> @@ -66,7 +74,9 @@ {% elseif access=='noaccess' and idSiteSelected != 'all' %} {{ accesValid }} {% else %} - {{ accesInvalid }} + <img src='plugins/UsersManager/images/no-access.png' class='updateAccess' + ng-click='manageUserAccess.setAccess({{ login|json_encode}}, "noaccess")' + /> {% endif %} </td> <td id='view'> {% if login in superUserLogins %} @@ -74,7 +84,9 @@ {% elseif access == 'view' and idSiteSelected != 'all' %} {{ accesValid }} {% else %} - {{ accesInvalid }} + <img src='plugins/UsersManager/images/no-access.png' class='updateAccess' + ng-click='manageUserAccess.setAccess({{ login|json_encode}}, "view")' + /> {% endif %} </td> <td id='admin'> {% if login in superUserLogins %} @@ -82,7 +94,13 @@ {% elseif login == 'anonymous' %} N/A {% else %} - {% if access == 'admin' and idSiteSelected != 'all' %}{{ accesValid }}{% else %}{{ accesInvalid }}{% endif %} + {% if access == 'admin' and idSiteSelected != 'all' %} + {{ accesValid }} + {% else %} + <img src='plugins/UsersManager/images/no-access.png' class='updateAccess' + ng-click='manageUserAccess.setAccess({{ login|json_encode}}, "admin")' + /> + {% endif %} {% endif %} </td> </tr> @@ -90,37 +108,47 @@ {% endfor %} </tbody> </table> - <div id="accessUpdated" style="vertical-align:top;"></div> -</div> -{% if hasOnlyAdminAccess %} - <p> - <button id="showGiveViewAccessForm" class="add-user btn btn-lg btn-flat"> - <span class="icon-add"></span> - {{ 'UsersManager_GiveViewAccessTitle'|translate('"' ~ defaultReportSiteName ~ '"')|raw }} - </button> - </p> - <form id="giveViewAccessForm"> - <div class="form-group"> - <input type="text" name="user_invite" - id="user_invite" - placeholder="{{ 'UsersManager_EnterUsernameOrEmail'|translate|e('html_attr') }}" - title="{{ 'UsersManager_GiveViewAccessInstructions'|translate("'" ~ defaultReportSiteName ~ "'")|e('html_attr') }}"> + {% if hasOnlyAdminAccess %} + <div class="tableActionBar"> + <div ng-controller="GiveUserViewAccessController as giveViewAccess" piwik-form> + <button id="showGiveViewAccessForm" + ng-show="!giveViewAccess.showForm" ng-click="giveViewAccess.showViewAccessForm()"> + <span class="icon-add"></span> + {{ 'UsersManager_GiveViewAccessTitle'|translate('"' ~ defaultReportSiteName ~ '"')|raw }} + </button> + + <form id="giveViewAccessForm" ng-show="giveViewAccess.showForm"> + <div piwik-field uicontrol="text" name="user_invite" + ng-model="giveViewAccess.usernameOrEmail" + full-width="true" + title="{{ 'UsersManager_EnterUsernameOrEmail'|translate|e('html_attr') }}" + > + </div> + + <div piwik-save-button id="giveUserAccessToViewReports" + onconfirm="giveViewAccess.giveAccess()" + saving="giveViewAccess.isLoading" + value="{{ 'UsersManager_GiveViewAccess'|translate("'" ~ defaultReportSiteName ~ "'")|e('html_attr') }}"></div> + + </form> + </div> </div> + <div id="ajaxErrorGiveViewAccess"> - <input class="btn" type="button" id="giveUserAccessToViewReports" value="{{ 'UsersManager_GiveViewAccess'|translate|e('html_attr') }}"> - </form> - {{ ajax.errorDiv('ajaxErrorGiveViewAccess') }} - {{ ajax.loadingDiv('ajaxLoadingGiveViewAccess') }} -{% endif %} + </div> + {% endif %} +</div> +</div> <div class="ui-confirm" id="confirm"> - <h2>{{ 'UsersManager_ChangeAllConfirm'|translate("<span id='login'></span>")|raw }}</h2> + <h2>{{ 'UsersManager_ChangeAllConfirm'|translate("<span class='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 piwik-content-block content-title="{{ 'UsersManager_UsersManagement'|translate|e('html_attr') }}"> <div class="ui-confirm" id="confirmUserRemove"> <h2></h2> <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/> @@ -132,14 +160,14 @@ <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="user entityContainer" style="margin-bottom:50px;"> - <table class="entityTable dataTable" id="users"> + + <div class="user" ng-controller="ManageUsersController as manageUsers"> + <div piwik-activity-indicator class="loadingManageUsers" loading="manageUsers.isLoading"></div> + + <table piwik-content-table id="users"> <thead> <tr> <th>{{ 'General_Username'|translate }}</th> @@ -159,21 +187,24 @@ {% 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" class="token_auth" data-token="{{ user.token_auth }}">{{ user.token_auth|slice(0, 8) }}…</td> + <td id="userLogin" class="editable" ng-click='manageUsers.editUser("row{{ i|e('js') }}")'>{{ user.login }}</td> + <td id="password" class="editable" ng-click='manageUsers.editUser("row{{ i|e('js') }}")'>-</td> + <td id="email" class="editable" ng-click='manageUsers.editUser("row{{ i|e('js') }}")'>{{ user.email }}</td> + <td id="alias" class="editable" ng-click='manageUsers.editUser("row{{ i|e('js') }}")'>{{ user.alias|raw }}</td> + <td id="token_auth_user" class="token_auth" data-token="{{ user.token_auth }}">{{ user.token_auth|slice(0, 8) }}…</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 class="text-center"> - <button class="edituser btn btn-flat" id="row{{ i }}" title="{{ 'General_Edit'|translate }}"> + <td class="center"> + <button ng-click='manageUsers.editUser("row{{ i|e('js') }}")' + class="edituser table-action" title="{{ 'General_Edit'|translate }}"> <span class="icon-edit"></span> </button> </td> - <td class="text-center"> - <button class="deleteuser btn btn-flat" id="row{{ i }}" title="{{ 'General_Delete'|translate }}"> + <td class="center"> + <button class="deleteuser table-action" + ng-click='manageUsers.deleteUser({{ user.login|json_encode }})' + title="{{ 'General_Delete'|translate }}"> <span class="icon-delete"></span> </button> </td> @@ -182,60 +213,76 @@ {% endfor %} </tbody> </table> - <p> - <button class="add-user btn btn-lg btn-flat"> + + <div class="tableActionBar"> + <button class="add-user" ng-click="manageUsers.createUser()" ng-show="manageUsers.showCreateUser"> <span class="icon-add"></span> {{ 'UsersManager_AddUser'|translate }} </button> - </p> + </div> </div> +</div> - <h2 id="super_user_access">{{ 'UsersManager_SuperUserAccessManagement'|translate }}</h2> - <p>{{ 'UsersManager_SuperUserAccessManagementMainDescription'|translate }} <br/> - {{ 'UsersManager_SuperUserAccessManagementGrantMore'|translate }}</p> +<div piwik-content-block + id="super_user_access" + style="width:800px;" + content-title="{{ 'UsersManager_SuperUserAccessManagement'|translate|e('html_attr') }}"> - {{ ajax.errorDiv('ajaxErrorSuperUsersManagement') }} - {{ ajax.loadingDiv('ajaxLoadingSuperUsersManagement') }} + <div ng-controller="ManageSuperUserController as manageSuperUser"> - <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> + <p>{{ 'UsersManager_SuperUserAccessManagementMainDescription'|translate }} <br/> + {{ 'UsersManager_SuperUserAccessManagementGrantMore'|translate }}</p> - <tbody> - {% if users|length > 1 %} - {% for login,alias in usersAliasByLogin if login != 'anonymous' %} + <div piwik-activity-indicator class="loadingManageSuperUser" loading="manageSuperUser.isLoading"></div> + + <div id="superUserAccessUpdated" style="vertical-align:top;"></div> + + <table piwik-content-table id="superUserAccess" > + <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'> + {% if login in superUserLogins %} + <img src='plugins/UsersManager/images/ok.png' class='accessGranted' + ng-click='manageSuperUser.removeSuperUserAccess({{ login|json_encode}})' /> + {% endif %} + {% if not (login in superUserLogins) %} + <img src='plugins/UsersManager/images/no-access.png' class='updateAccess' + ng-click='manageSuperUser.giveSuperUserAccess({{ login|json_encode }})' /> + {% endif %} + + </td> + </tr> + {% endfor %} + {% else %} <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 colspan="3"> + {{ 'UsersManager_NoUsersExist'|translate }} </td> </tr> - {% endfor %} - {% else %} - <tr> - <td colspan="3"> - {{ 'UsersManager_NoUsersExist'|translate }} - </td> - </tr> - {% endif %} - </tbody> - </table> + {% 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> - <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> +</div> {% endif %} {% endblock %} |