aboutsummaryrefslogtreecommitdiffhomepage
path: root/main/app/sprinkles/admin/templates/pages
diff options
context:
space:
mode:
Diffstat (limited to 'main/app/sprinkles/admin/templates/pages')
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/abstract/dashboard.html.twig87
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/activities.html.twig46
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/dashboard.html.twig282
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/group.html.twig106
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/groups.html.twig52
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/permission.html.twig91
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/permissions.html.twig45
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/role.html.twig129
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/roles.html.twig50
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/user.html.twig195
-rwxr-xr-xmain/app/sprinkles/admin/templates/pages/users.html.twig53
11 files changed, 1136 insertions, 0 deletions
diff --git a/main/app/sprinkles/admin/templates/pages/abstract/dashboard.html.twig b/main/app/sprinkles/admin/templates/pages/abstract/dashboard.html.twig
new file mode 100755
index 0000000..2a53de4
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/abstract/dashboard.html.twig
@@ -0,0 +1,87 @@
+{% extends "pages/abstract/base.html.twig" %}
+
+{% block stylesheets_page_group %}
+ <!-- Page-group-specific CSS asset bundle -->
+ {{ assets.css('css/admin') | raw }}
+{% endblock %}
+
+{% block body_attributes %}
+ {% if current_user.isMaster() %}
+ class="hold-transition skin-red sidebar-mini"
+ {% else %}
+ class="hold-transition skin-{{site.AdminLTE.skin}} sidebar-mini"
+ {% endif %}
+{% endblock %}
+
+{% block content %}
+ {# This needs to be here (early in the body) to make sure the animation doesn't fire #}
+ <script>
+ (function () {
+ if (Boolean(sessionStorage.getItem('sidebar-toggle-collapsed'))) {
+ var body = document.getElementsByTagName('body')[0];
+ body.className = body.className + ' sidebar-collapse';
+ }
+ })();
+ </script>
+
+ <div class="wrapper">
+
+ <header class="main-header">
+ <!-- Logo -->
+ {% block navbar_logo %}
+ <a href="{{site.uri.public}}" class="logo">
+ <i class="fa fa-home"></i>
+ {{site.title}}
+ </a>
+ {% endblock %}
+ <!-- Header Navbar: style can be found in header.less -->
+ <nav class="navbar navbar-static-top">
+ <!-- Sidebar toggle button-->
+ <a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">
+ <span class="sr-only">Toggle navigation</span>
+ </a>
+ <!-- Main nav buttons -->
+ {% include "navigation/navbar.html.twig" %}
+ </nav>
+ </header>
+ <!-- Left side column. contains the logo and sidebar -->
+ <aside class="main-sidebar">
+ <!-- sidebar: style can be found in sidebar.less -->
+ <section class="sidebar">
+ {% include 'navigation/sidebar.html.twig' %}
+ </section>
+ <!-- /.sidebar -->
+ </aside>
+
+ <!-- Content Wrapper. Contains page content -->
+ <div class="content-wrapper">
+ <!-- Content Header (Page header) -->
+ {% block content_header %}
+ <section class="content-header">
+ <h1>{% block header_title %}{{ block('page_title') }}{% endblock %}</h1>
+ {% if block('page_description') is not empty %}<h1><small>{% block header_description %}{{ block('page_description') }}{% endblock %}</small></h1>{% endif %}
+ {% block breadcrumb %}
+ {% include 'navigation/breadcrumb.html.twig' with {page_title: block('page_title')} %}
+ {% endblock %}
+ <div id="alerts-page"></div>
+ </section>
+ {% endblock %}
+ <section class="content">
+ {% block body_matter %}{% endblock %}
+ </section>
+ </div>
+ <!-- /.content-wrapper -->
+
+ <!-- Footer -->
+ {% block footer %}
+ {% include "pages/partials/footer.html.twig" %}
+ {% endblock %}
+
+ </div>
+ <!-- ./wrapper -->
+
+{% endblock %}
+
+{% block scripts_page_group %}
+ {{ assets.js('js/admin') | raw }}
+{% endblock %} \ No newline at end of file
diff --git a/main/app/sprinkles/admin/templates/pages/activities.html.twig b/main/app/sprinkles/admin/templates/pages/activities.html.twig
new file mode 100755
index 0000000..bcbd9c6
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/activities.html.twig
@@ -0,0 +1,46 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{% block stylesheets_page %}
+ <!-- Page-specific CSS asset bundle -->
+ {{ assets.css('css/form-widgets') | raw }}
+{% endblock %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{ translate("ACTIVITY", 2) }}{% endblock %}
+
+{% block page_description %}{{ translate("ACTIVITY.PAGE") }}.{% endblock %}
+
+{% block body_matter %}
+ <div class="row">
+ <div class="col-md-12">
+ <div id="widget-activities" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-tasks fa-fw"></i> {{translate('ACTIVITY', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/activities.html.twig" with {
+ "table" : {
+ "id" : "table-activities",
+ "columns" : ["user"]
+ }
+ }
+ %}
+ </div>
+ </div>
+ </div>
+ </div>
+{% endblock %}
+{% block scripts_page %}
+ <!-- Include validation rules -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+ </script>
+
+ <!-- Include form widgets JS -->
+ {{ assets.js('js/form-widgets') | raw }}
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/activities') | raw }}
+
+{% endblock %}
diff --git a/main/app/sprinkles/admin/templates/pages/dashboard.html.twig b/main/app/sprinkles/admin/templates/pages/dashboard.html.twig
new file mode 100755
index 0000000..f9c85a3
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/dashboard.html.twig
@@ -0,0 +1,282 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{ translate("DASHBOARD") }}{% endblock %}
+{% block page_description %}{% endblock %}
+
+{% block body_matter %}
+ <!-- Info boxes -->
+ {% if checkAccess('uri_users') %}
+ <div class="row">
+ <div class="col-md-4 col-sm-6 col-xs-12">
+ <a href="{{site.uri.public}}/users">
+ <div class="info-box">
+ <span class="info-box-icon bg-aqua"><i class="fa fa-user fa-fw"></i></span>
+ <div class="info-box-content">
+ <span class="info-box-text">{{ translate("USER", 2) }}</span>
+ <span class="info-box-number">{{counter.users}}</span>
+ </div>
+ <!-- /.info-box-content -->
+ </div>
+ <!-- /.info-box -->
+ </a>
+ </div>
+ <!-- /.col -->
+
+ <div class="col-md-4 col-sm-6 col-xs-12">
+ <a href="{{site.uri.public}}/roles">
+ <div class="info-box">
+ <span class="info-box-icon bg-red"><i class="fa fa-drivers-license"></i></span>
+ <div class="info-box-content">
+ <span class="info-box-text">{{ translate("ROLE", 2) }}</span>
+ <span class="info-box-number">{{counter.roles}}</span>
+ </div>
+ <!-- /.info-box-content -->
+ </div>
+ <!-- /.info-box -->
+ </a>
+ </div>
+ <!-- /.col -->
+
+ <div class="col-md-4 col-sm-6 col-xs-12">
+ <a href="{{site.uri.public}}/groups">
+ <div class="info-box">
+ <span class="info-box-icon bg-green"><i class="fa fa-users"></i></span>
+ <div class="info-box-content">
+ <span class="info-box-text">{{ translate("GROUP", 2) }}</span>
+ <span class="info-box-number">{{counter.groups}}</span>
+ </div>
+ <!-- /.info-box-content -->
+ </div>
+ <!-- /.info-box -->
+ </a>
+ </div>
+ <!-- /.col -->
+ </div>
+ <!-- /.row -->
+
+ {% elseif checkAccess('uri_group', {
+ 'group': current_user.group
+ }) %}
+ <div class="row">
+ <div class="col-sm-6 col-xs-12">
+ <div class="info-box">
+ <span class="info-box-icon bg-aqua"><i class="{{current_user.group.icon}}"></i></span>
+ <div class="info-box-content">
+ <h1>{{current_user.group.name}}</h1>
+ </div>
+ <!-- /.info-box-content -->
+ </div>
+ <!-- /.info-box -->
+ </div>
+ <!-- /.col -->
+ <div class="col-sm-6 col-xs-12">
+ <div class="info-box">
+ <span class="info-box-icon bg-aqua"><i class="fa fa-user fa-fw"></i></span>
+ <div class="info-box-content">
+ <span class="info-box-text">{{ translate("USER", 2) }}</span>
+ <span class="info-box-number">{{current_user.group.users.count}}</span>
+ </div>
+ <!-- /.info-box-content -->
+ </div>
+ <!-- /.info-box -->
+ </div>
+ <!-- /.col -->
+ </div>
+ <!-- /.row -->
+ {% endif %}
+
+ <!-- Main panels -->
+ <div class="row">
+ {% if checkAccess('uri_users') or checkAccess('view_system_info') %}
+ <div class="col-md-6 col-sm-12 col-xs-12">
+ {% if checkAccess('uri_users') %}
+ <div class="row">
+ <div class="col-sm-12">
+ <!-- USERS LIST -->
+ <div class="box box-info">
+ <div class="box-header with-border">
+ <h3 class="box-title">{{translate("USER.LATEST")}}</h3>
+ </div>
+ <!-- /.box-header -->
+ <div class="box-body no-padding">
+ <ul class="users-list clearfix">
+ {% for user in users %}
+ <li>
+ <img src="{{ user.avatar }}" alt="User Image">
+ <a class="users-list-name" href="{{site.uri.public}}/users/u/{{user.user_name}}">{{user.first_name}} {{user.last_name}}</a>
+ <span class="users-list-date">{{ user.registered }}</span>
+ </li>
+ {% endfor %}
+ </ul>
+ <!-- /.users-list -->
+ </div>
+ <!-- /.box-body -->
+ <div class="box-footer text-center">
+ <a href="{{site.uri.public}}/users" class="uppercase">{{translate("USER.VIEW_ALL")}}</a>
+ </div>
+ <!-- /.box-footer -->
+ </div>
+ <!--/.box -->
+ </div>
+ <!-- /.col -->
+ </div>
+ <!-- /.row -->
+ {% endif %}
+
+ {% if checkAccess('view_system_info') %}
+ <div class="row">
+ <div class="col-sm-12">
+ <div class="box box-primary">
+ <div class="box-header with-border">
+ <h3 class="box-title">{{translate("SYSTEM_INFO")}}</h3>
+ </div>
+ <!-- /.box-header -->
+ <div class="box-body">
+ <dl class="dl-horizontal">
+ <dt>{{translate("SYSTEM_INFO.UF_VERSION")}}</dt>
+ <dd>{{info.version.UF}}</dd>
+
+ <dt>{{translate("SYSTEM_INFO.PHP_VERSION")}}</dt>
+ <dd>{{info.version.php}}</dd>
+
+ <dt>{{translate("SYSTEM_INFO.SERVER")}}</dt>
+ <dd>{{info.environment.SERVER_SOFTWARE}}</dd>
+
+ <dt>{{translate("SYSTEM_INFO.DB_VERSION")}}</dt>
+ <dd>{{info.version.database.type}} {{info.version.database.version}}</dd>
+
+ <dt>{{translate("SYSTEM_INFO.DB_NAME")}}</dt>
+ <dd>{{info.database.name}}</dd>
+
+ <dt>{{translate("SYSTEM_INFO.DIRECTORY")}}</dt>
+ <dd>{{info.path.project}}</dd>
+
+ <dt>{{translate("SYSTEM_INFO.URL")}}</dt>
+ <dd>{{site.uri.public}}</dd>
+
+ <dt>{{translate("SYSTEM_INFO.SPRINKLES")}}</dt>
+ <dd>
+ <ul class="list-unstyled">
+ {% for sprinkle in sprinkles %}
+ <li>
+ {{sprinkle}}
+ </li>
+ {% endfor %}
+ </ul>
+ </dd>
+ </dl>
+ </div>
+ <!-- /.box-body -->
+ <div class="box-footer text-center">
+ <a href="javascript:void(0)" class="js-clear-cache uppercase">{{ translate("CACHE.CLEAR") }}</a>
+ </div>
+ <!-- /.box-footer -->
+ </div>
+ <!--/.box -->
+ </div>
+ <!-- /.col -->
+ </div>
+ <!-- /.row -->
+ {% endif %}
+ </div>
+ <!-- /.col -->
+ {% endif %}
+
+ {% if checkAccess('uri_activities') %}
+ <div class="col-md-6 col-sm-12 col-xs-12">
+ <div id="widget-activities" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-tasks fa-fw"></i> {{translate('ACTIVITY', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/activities.html.twig" with {
+ "table" : {
+ "id" : "table-activities",
+ "columns" : ["user"]
+ }
+ }
+ %}
+ </div>
+ </div>
+ </div>
+ {% elseif checkAccess('view_group_field', {
+ 'group': current_user.group,
+ 'property': 'users'
+ }) %}
+ <div class="col-md-6 col-sm-12 col-xs-12">
+ <div id="widget-group-users" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-fw fa-user"></i> {{translate('USER', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/users.html.twig" with {
+ "table" : {
+ "id" : "table-group-users"
+ }
+ }
+ %}
+ </div>
+ <div class="box-footer">
+ <button type="button" class="btn btn-success js-user-create">
+ <i class="fa fa-plus-square"></i> {{translate("USER.CREATE")}}
+ </button>
+ </div>
+ </div>
+ </div>
+ {% else %}
+ <div class="col-sm-4 col-sm-offset-4 col-xs-12">
+ <div class="box box-widget widget-user">
+ <!-- Add the bg color to the header using any of the bg-* classes -->
+ <div class="widget-user-header bg-black-active">
+ <h3 class="widget-user-username">
+ {{translate("WELCOME", {
+ 'first_name': current_user.first_name
+ })}}
+ </h3>
+ </div>
+ <div class="widget-user-image">
+ <img class="img-circle" src="{{assets.url('assets://userfrosting/images/cupcake.png')}}" alt="User Avatar">
+ </div>
+ <div class="box-footer">
+ <h4>
+ {{translate("WELCOME_TO", {
+ 'title': site.title
+ })}}
+ </h4>
+ <p>
+ {{translate("NO_FEATURES_YET")}}
+ </p>
+ </div>
+ </div>
+ <!-- /.widget-user -->
+
+
+ </div>
+ <!-- /.row -->
+ {% endif %}
+ </div>
+ <!-- /.row -->
+{% endblock %}
+
+{% block scripts_page %}
+ <!-- Include page variables -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+
+ // Add user name
+ page = $.extend(
+ true, // deep extend
+ {
+ "group_slug": "{{current_user.group.slug}}"
+ },
+ page
+ );
+ </script>
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/dashboard') | raw }}
+
+{% endblock %} \ No newline at end of file
diff --git a/main/app/sprinkles/admin/templates/pages/group.html.twig b/main/app/sprinkles/admin/templates/pages/group.html.twig
new file mode 100755
index 0000000..bf4d275
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/group.html.twig
@@ -0,0 +1,106 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{% block stylesheets_page %}
+ <!-- Page-specific CSS asset bundle -->
+ {{ assets.css('css/form-widgets') | raw }}
+{% endblock %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{ translate("GROUP", 2) }} | {{group.name}}{% endblock %}
+
+{% block page_description %}{{ translate("GROUP.INFO_PAGE", {name: group.name}) }}{% endblock %}
+
+{% block body_matter %}
+ <div class="row">
+ <div class="col-lg-4">
+ <div id="view-group" class="box box-primary">
+ <div class="box-header with-border">
+ <h3 class="box-title">{{translate('GROUP.SUMMARY')}}</h3>
+ {% if 'tools' not in tools.hidden %}
+ <div class="box-tools pull-right">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ <i class="fa fa-gear"></i> <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu box-tool-menu">
+ {% block tools %}
+ <li>
+ <a href="#" class="js-group-edit" data-slug="{{group.slug}}">
+ <i class="fa fa-edit fa-fw"></i> {{translate('EDIT')}}
+ </a>
+ </li>
+ {% if 'delete' not in tools.hidden %}
+ <li>
+ <a href="#" class="js-group-delete" data-slug="{{group.slug}}">
+ <i class="fa fa-trash-o fa-fw"></i> {{translate('DELETE')}}
+ </a>
+ </li>
+ {% endif %}
+ {% endblock %}
+ </ul>
+ </div>
+ </div>
+ {% endif %}
+ </div>
+ <div class="box-body box-profile">
+ <div class="text-center">
+ <i class="{{group.icon}} fa-5x"></i>
+ </div>
+
+ <h3 class="profile-username text-center">{{group.name}}</h3>
+
+ {% if 'description' not in fields.hidden %}
+ <p class="text-muted">
+ {{group.description}}
+ </p>
+ {% endif %}
+ {% if 'users' not in fields.hidden %}
+ <hr>
+ <strong><i class="fa fa-users margin-r-5"></i> {{ translate('USER', 2)}}</strong>
+ <p class="badge bg-blue box-profile-property">
+ {{group.users.count}}
+ </p>
+ {% endif %}
+ {% block group_profile %}{% endblock %}
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-8">
+ <div id="widget-group-users" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-fw fa-user"></i> {{translate('USER', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/users.html.twig" with {
+ "table" : {
+ "id" : "table-group-users"
+ }
+ }
+ %}
+ </div>
+ </div>
+ </div>
+ </div>
+{% endblock %}
+{% block scripts_page %}
+ <!-- Include page variables -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+
+ // Add user name
+ page = $.extend(
+ true, // deep extend
+ {
+ "group_slug": "{{group.slug}}"
+ },
+ page
+ );
+ </script>
+
+ <!-- Include form widgets JS -->
+ {{ assets.js('js/form-widgets') | raw }}
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/group') | raw }}
+{% endblock %}
diff --git a/main/app/sprinkles/admin/templates/pages/groups.html.twig b/main/app/sprinkles/admin/templates/pages/groups.html.twig
new file mode 100755
index 0000000..35e9a88
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/groups.html.twig
@@ -0,0 +1,52 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{% block stylesheets_page %}
+ <!-- Page-specific CSS asset bundle -->
+ {{ assets.css('css/form-widgets') | raw }}
+{% endblock %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{ translate("GROUP", 2) }}{% endblock %}
+
+{% block page_description %}{{ translate("GROUP.PAGE_DESCRIPTION") }}{% endblock %}
+
+{% block body_matter %}
+ <div class="row">
+ <div class="col-md-12">
+ <div id="widget-groups" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-fw fa-users"></i> {{translate('GROUP', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/groups.html.twig" with {
+ "table" : {
+ "id" : "table-groups"
+ }
+ }
+ %}
+ </div>
+ {% if checkAccess('create_group') %}
+ <div class="box-footer">
+ <button type="button" class="btn btn-success js-group-create">
+ <i class="fa fa-plus-square"></i> {{translate("GROUP.CREATE")}}
+ </button>
+ </div>
+ {% endif %}
+ </div>
+ </div>
+ </div>
+{% endblock %}
+{% block scripts_page %}
+ <!-- Include validation rules -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+ </script>
+
+ <!-- Include form widgets JS -->
+ {{ assets.js('js/form-widgets') | raw }}
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/groups') | raw }}
+
+{% endblock %}
diff --git a/main/app/sprinkles/admin/templates/pages/permission.html.twig b/main/app/sprinkles/admin/templates/pages/permission.html.twig
new file mode 100755
index 0000000..6adc014
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/permission.html.twig
@@ -0,0 +1,91 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{% block stylesheets_page %}
+ <!-- Page-group-specific CSS asset bundle -->
+ {{ assets.css('css/form-widgets') | raw }}
+{% endblock %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{translate("PERMISSION", 2)}} | {{permission.name}}{% endblock %}
+
+{% block page_description %}{{translate("PERMISSION.INFO_PAGE", {name: permission.name})}}{% endblock %}
+
+{% block body_matter %}
+ <div class="row">
+ <div class="col-lg-4">
+ <div id="view-permission" class="box box-primary">
+ <div class="box-header with-border">
+ <h3 class="box-title">{{translate("PERMISSION.SUMMARY")}}</h3>
+ </div>
+ <div class="box-body box-profile">
+ <div class="text-center">
+ <i class="fa fa-key fa-5x"></i>
+ </div>
+
+ <h3 class="profile-username text-center">{{permission.name}}</h3>
+
+ <p class="text-muted">
+ {{permission.description}}
+ </p>
+ <hr>
+ <strong>{{translate("PERMISSION.ID")}}: </strong>
+ <span class="js-copy-container">
+ <span class="js-copy-target" style="margin: 0 5px;">{{permission.id}}</span>
+ <i class="fa fa-copy text-blue uf-copy-trigger js-copy-trigger"></i>
+ </span>
+ <hr>
+ <strong>{{translate("SLUG_CONDITION")}}</strong>
+ <br>
+ <br>
+ <p>
+ <code>{{permission.slug}}</code>
+ </p>
+ <p>
+ ↳ <code>{{permission.conditions}}</code>
+ </p>
+ </div>
+ <div class="box-footer">
+ {{translate("PERMISSION.NOTE_READ_ONLY")}}
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-8">
+ <div id="widget-permission-users" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-fw fa-key"></i> {{translate("USER.WITH_PERMISSION")}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/users.html.twig" with {
+ "table" : {
+ "id" : "table-permission-users",
+ "columns" : ["via_roles"]
+ }
+ }
+ %}
+ </div>
+ </div>
+ </div>
+ </div>
+{% endblock %}
+{% block scripts_page %}
+ <!-- Include page variables -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+
+ // Add user name
+ page = $.extend(
+ true, // deep extend
+ {
+ "permission_id": "{{permission.id}}"
+ },
+ page
+ );
+ </script>
+
+ <!-- Include form widgets JS -->
+ {{ assets.js('js/form-widgets') | raw }}
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/permission') | raw }}
+{% endblock %}
diff --git a/main/app/sprinkles/admin/templates/pages/permissions.html.twig b/main/app/sprinkles/admin/templates/pages/permissions.html.twig
new file mode 100755
index 0000000..2696209
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/permissions.html.twig
@@ -0,0 +1,45 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{% block stylesheets_page %}
+ <!-- Page-specific CSS asset bundle -->
+ {{ assets.css('css/form-widgets') | raw }}
+{% endblock %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{ translate("PERMISSION", 2)}}{% endblock %}
+
+{% block page_description %}{{ translate("PERMISSION.PAGE_DESCRIPTION")}}{% endblock %}
+
+{% block body_matter %}
+ <div class="row">
+ <div class="col-md-12">
+ <div id="widget-permissions" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title pull-left"><i class="fa fa-key fa-fw"></i> {{translate('PERMISSION', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/permissions.html.twig" with {
+ "table" : {
+ "id" : "table-permissions"
+ }
+ }
+ %}
+ </div>
+ </div>
+ </div>
+ </div>
+{% endblock %}
+{% block scripts_page %}
+ <!-- Include validation rules -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+ </script>
+
+ <!-- Include form widgets JS -->
+ {{ assets.js('js/form-widgets') | raw }}
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/permissions') | raw }}
+
+{% endblock %}
diff --git a/main/app/sprinkles/admin/templates/pages/role.html.twig b/main/app/sprinkles/admin/templates/pages/role.html.twig
new file mode 100755
index 0000000..daf1004
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/role.html.twig
@@ -0,0 +1,129 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{% block stylesheets_page %}
+ <!-- Page-group-specific CSS asset bundle -->
+ {{ assets.css('css/form-widgets') | raw }}
+{% endblock %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{translate("ROLE", 2)}} | {{role.name}}{% endblock %}
+
+{% block page_description %}{{translate("ROLE.INFO_PAGE", {name: role.name})}}{% endblock %}
+
+{% block body_matter %}
+ <div class="row">
+ <div class="col-lg-4">
+ <div id="view-role" class="box box-primary">
+ <div class="box-header with-border">
+ <h3 class="box-title">{{translate('ROLE.SUMMARY')}}</h3>
+ {% if 'tools' not in tools.hidden %}
+ <div class="box-tools pull-right">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ <i class="fa fa-gear"></i> <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu box-tool-menu">
+ {% block tools %}
+ <li>
+ <a href="#" class="js-role-edit" data-slug="{{role.slug}}">
+ <i class="fa fa-edit fa-fw"></i> {{translate('EDIT')}}
+ </a>
+ </li>
+ {% if 'permissions' not in tools.hidden %}
+ <li>
+ <a href="#" class="js-role-permissions" data-slug="{{role.slug}}">
+ <i class="fa fa-key"></i> {{translate("PERMISSION.MANAGE")}}
+ </a>
+ </li>
+ {% endif %}
+ {% if 'delete' not in tools.hidden %}
+ <li>
+ <a href="#" class="js-role-delete" data-slug="{{role.slug}}">
+ <i class="fa fa-trash-o fa-fw"></i> {{translate('DELETE')}}
+ </a>
+ </li>
+ {% endif %}
+ {% endblock %}
+ </ul>
+ </div>
+ </div>
+ {% endif %}
+ </div>
+ <div class="box-body box-profile">
+ <div class="text-center">
+ <i class="fa fa-drivers-license fa-5x"></i>
+ </div>
+
+ <h3 class="profile-username text-center">{{role.name}}</h3>
+
+ {% if 'description' not in fields.hidden %}
+ <p class="text-muted">
+ {{role.description}}
+ </p>
+ {% endif %}
+ {% if 'users' not in fields.hidden %}
+ <hr>
+ <strong><i class="fa fa-users margin-r-5"></i> {{ translate('USER', 2)}}</strong>
+ <p class="badge bg-blue box-profile-property">
+ {{role.users.count}}
+ </p>
+ {% endif %}
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-8">
+ <div id="widget-role-permissions" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-fw fa-key"></i> {{translate('PERMISSION', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/permissions.html.twig" with {
+ "table" : {
+ "id" : "table-role-permissions"
+ }
+ }
+ %}
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-12">
+ <div id="widget-role-users" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-fw fa-key"></i> {{translate('USER', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/users.html.twig" with {
+ "table" : {
+ "id" : "table-role-users",
+ "columns" : ["last_activity"]
+ }
+ }
+ %}
+ </div>
+ </div>
+ </div>
+ </div>
+{% endblock %}
+{% block scripts_page %}
+ <!-- Include page variables -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+
+ // Add user name
+ page = $.extend(
+ true, // deep extend
+ {
+ "role_slug": "{{role.slug}}"
+ },
+ page
+ );
+ </script>
+
+ <!-- Include form widgets JS -->
+ {{ assets.js('js/form-widgets') | raw }}
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/role') | raw }}
+{% endblock %}
diff --git a/main/app/sprinkles/admin/templates/pages/roles.html.twig b/main/app/sprinkles/admin/templates/pages/roles.html.twig
new file mode 100755
index 0000000..c5b3995
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/roles.html.twig
@@ -0,0 +1,50 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{% block stylesheets_page %}
+ <!-- Page-specific CSS asset bundle -->
+ {{ assets.css('css/form-widgets') | raw }}
+{% endblock %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{ translate("ROLE", 2)}}{% endblock %}
+
+{% block page_description %}{{ translate("ROLE.PAGE_DESCRIPTION")}}{% endblock %}
+
+{% block body_matter %}
+ <div class="row">
+ <div class="col-md-12">
+ <div id="widget-roles" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-fw fa-drivers-license"></i> {{translate('ROLE', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="panel-body">
+ {% include "tables/roles.html.twig" with {
+ "table" : {
+ "id" : "table-roles"
+ }
+ }
+ %}
+ </div>
+ <div class="box-footer">
+ <button type="button" class="btn btn-success js-role-create">
+ <i class="fa fa-plus-square"></i> {{translate("ROLE.CREATE")}}
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+{% endblock %}
+{% block scripts_page %}
+ <!-- Include validation rules -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+ </script>
+
+ <!-- Include form widgets JS -->
+ {{ assets.js('js/form-widgets') | raw }}
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/roles') | raw }}
+
+{% endblock %}
diff --git a/main/app/sprinkles/admin/templates/pages/user.html.twig b/main/app/sprinkles/admin/templates/pages/user.html.twig
new file mode 100755
index 0000000..d9c9ab2
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/user.html.twig
@@ -0,0 +1,195 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{% block stylesheets_page %}
+ <!-- Page-specific CSS asset bundle -->
+ {{ assets.css('css/form-widgets') | raw }}
+{% endblock %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{ translate("USER", 2)}} | {{user.full_name}}{% endblock %}
+
+{% block page_description %}{{ translate("USER.INFO_PAGE", {name: user.user_name}) }}{% endblock %}
+
+{% block body_matter %}
+ {% block group_box %}
+ {% endblock %}
+ <div class="row">
+ <div class="col-lg-4">
+ <div id="view-user">
+ {% block user_box %}
+ <div class="box box-primary">
+ <div class="box-header with-border">
+ <h3 class="box-title">{{translate('USER.SUMMARY')}}</h3>
+ {% if 'tools' not in tools.hidden %}
+ <div class="box-tools pull-right">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+ <i class="fa fa-gear"></i> <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu box-tool-menu">
+ {% block tools %}
+ <li>
+ <a href="#" class="js-user-edit" data-user_name="{{user.user_name}}">
+ <i class="fa fa-edit fa-fw"></i> {{translate('EDIT')}}
+ </a>
+ </li>
+ {% if 'password' not in tools.hidden %}
+ <li>
+ <a href="#" class="js-user-password" data-user_name="{{user.user_name}}">
+ <i class="fa fa-lock fa-fw"></i> {{translate('PASSWORD')}}
+ </a>
+ </li>
+ {% endif %}
+ {% if 'roles' not in tools.hidden %}
+ <li>
+ <a href="#" class="js-user-roles" data-user_name="{{user.user_name}}">
+ <i class="fa fa-drivers-license fa-fw"></i> {{translate('ROLE', 2)}}
+ </a>
+ </li>
+ {% endif %}
+ {% if 'activate' not in tools.hidden and user.flag_verified == "0" %}
+ <li>
+ <a href="#" class="js-user-activate" data-user_name="{{user.user_name}}">
+ <i class="fa fa-bolt fa-fw"></i> {{translate('ACTIVATE')}}
+ </a>
+ </li>
+ {% endif %}
+ {% if 'enable' not in tools.hidden %}
+ {% if user.flag_enabled == "1" %}
+ <li>
+ <a href="#" class="js-user-disable" data-user_name="{{user.user_name}}">
+ <i class="fa fa-minus-circle fa-fw"></i> {{translate('DISABLE')}}
+ </a>
+ </li>
+ {% else %}
+ <li>
+ <a href="#" class="js-user-enable" data-user_name="{{user.user_name}}">
+ <i class="fa fa-plus-circle fa-fw"></i> {{translate('ENABLE')}}
+ </a>
+ </li>
+ {% endif %}
+ {% endif %}
+ {% if 'delete' not in tools.hidden %}
+ <li>
+ <a href="#" class="js-user-delete" data-user_name="{{user.user_name}}">
+ <i class="fa fa-trash-o fa-fw"></i> {{translate('DELETE')}}
+ </a>
+ </li>
+ {% endif %}
+ {% endblock %}
+ </ul>
+ </div>
+ </div>
+ {% endif %}
+ </div>
+ <div class="box-body box-profile">
+ <img class="profile-user-img img-responsive img-circle" src="{{user.avatar}}" alt="{{user.user_name}}">
+
+ <h3 class="profile-username text-center">{{user.full_name}}</h3>
+ <div class="text-center">
+ {% if user.flag_enabled == 0 %}
+ <i class="fa fa-fw fa-minus-circle fa-lg text-red" title="{{translate('DISABLED')}}"></i>
+ {% endif %}
+ {% if user.flag_verified == 0 %}
+ <i class="fa fa-fw fa-bolt fa-lg text-yellow" title="{{translate('UNACTIVATED')}}"></i>
+ {% endif %}
+ </div>
+ <h4 class="text-muted text-center">{{user.user_name}}{% if 'group' not in fields.hidden %} • {{user.group.name}}{% endif %}</h4>
+
+ {% if 'email' not in fields.hidden %}
+ <hr>
+ <strong><i class="fa fa-envelope margin-r-5"></i> {{translate("EMAIL")}}</strong>
+ <p class="text-muted box-profile-property js-copy-container">
+ <i class="fa fa-copy uf-copy-trigger js-copy-trigger"></i>
+ <span class="js-copy-target">{{user.email}}</span>
+ </p>
+ {% endif %}
+
+ {% if 'locale' not in fields.hidden %}
+ <hr>
+ <strong><i class="fa fa-language margin-r-5"></i> {{translate("LOCALE")}}</strong>
+ <p class="text-muted box-profile-property">
+ {{locales[user.locale]}}
+ </p>
+ {% endif %}
+
+ {% block user_profile %}{% endblock %}
+
+ {% if 'roles' not in fields.hidden %}
+ <hr>
+ <strong><i class="fa fa-drivers-license margin-r-5"></i> {{translate("ROLE", 2)}}</strong>
+ <p class="box-profile-property">
+ {% for role in user.roles %}
+ <span class="label label-primary" title="{{role.description}}">{{role.name}}</span>
+ {% endfor %}
+ </p>
+ {% endif %}
+ </div>
+ </div>
+ {% endblock %}
+ </div>
+ </div>
+ {% if 'activities' not in widgets.hidden %}
+ <div class="col-lg-8">
+ {% block activity_box %}
+ <div id="widget-user-activities" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title"><i class="fa fa-fw fa-tasks"></i> {{translate('ACTIVITY', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/activities.html.twig" with {
+ "table" : {
+ "id" : "table-user-activities"
+ }
+ }
+ %}
+ </div>
+ </div>
+ {% endblock %}
+ </div>
+ {% endif %}
+ </div>
+ {% if 'permissions' not in widgets.hidden %}
+ <div class="row">
+ <div class="col-md-12">
+ <div id="widget-permissions" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title pull-left"><i class="fa fa-key fa-fw"></i> {{translate('PERMISSION', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/permissions.html.twig" with {
+ "table" : {
+ "id" : "table-permissions",
+ "columns" : ["via_roles"]
+ }
+ }
+ %}
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endif %}
+{% endblock %}
+{% block scripts_page %}
+ <!-- Include page variables -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+
+ // Add user name
+ page = $.extend(
+ true, // deep extend
+ {
+ "user_name": "{{user.user_name}}"
+ },
+ page
+ );
+ </script>
+
+ <!-- Include form widgets JS -->
+ {{ assets.js('js/form-widgets') | raw }}
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/user') | raw }}
+{% endblock %}
diff --git a/main/app/sprinkles/admin/templates/pages/users.html.twig b/main/app/sprinkles/admin/templates/pages/users.html.twig
new file mode 100755
index 0000000..3e4642d
--- /dev/null
+++ b/main/app/sprinkles/admin/templates/pages/users.html.twig
@@ -0,0 +1,53 @@
+{% extends "pages/abstract/dashboard.html.twig" %}
+
+{% block stylesheets_page %}
+ <!-- Page-specific CSS asset bundle -->
+ {{ assets.css('css/form-widgets') | raw }}
+{% endblock %}
+
+{# Overrides blocks in head of base template #}
+{% block page_title %}{{ translate("USER", 2)}}{% endblock %}
+
+{% block page_description %}{{ translate("USER.PAGE_DESCRIPTION")}}{% endblock %}
+
+{% block body_matter %}
+ <div class="row">
+ <div class="col-md-12">
+ <div id="widget-users" class="box box-primary">
+ <div class="box-header">
+ <h3 class="box-title pull-left"><i class="fa fa-fw fa-user"></i> {{translate('USER', 2)}}</h3>
+ {% include "tables/table-tool-menu.html.twig" %}
+ </div>
+ <div class="box-body">
+ {% include "tables/users.html.twig" with {
+ "table" : {
+ "id" : "table-users",
+ "columns" : ["last_activity"]
+ }
+ }
+ %}
+ </div>
+ {% if checkAccess('create_user') %}
+ <div class="box-footer">
+ <button type="button" class="btn btn-success js-user-create">
+ <i class="fa fa-plus-square"></i> {{ translate("USER.CREATE")}}
+ </button>
+ </div>
+ {% endif %}
+ </div>
+ </div>
+ </div>
+{% endblock %}
+{% block scripts_page %}
+ <!-- Include validation rules -->
+ <script>
+ {% include "pages/partials/page.js.twig" %}
+ </script>
+
+ <!-- Include form widgets JS -->
+ {{ assets.js('js/form-widgets') | raw }}
+
+ <!-- Include page-specific JS -->
+ {{ assets.js('js/pages/users') | raw }}
+
+{% endblock %}