]> BookStack Code Mirror - bookstack/commitdiff
Extracted text for remaining views
authorDan Brown <redacted>
Sun, 4 Dec 2016 14:08:04 +0000 (14:08 +0000)
committerDan Brown <redacted>
Sun, 4 Dec 2016 14:08:04 +0000 (14:08 +0000)
40 files changed:
resources/lang/en/auth.php
resources/lang/en/common.php
resources/lang/en/components.php [new file with mode: 0644]
resources/lang/en/entities.php
resources/lang/en/settings.php
resources/views/base.blade.php
resources/views/home.blade.php
resources/views/partials/_header-dropdown.blade.php [new file with mode: 0644]
resources/views/partials/activity-item.blade.php
resources/views/partials/activity-list.blade.php
resources/views/partials/entity-list.blade.php
resources/views/partials/entity-selector-popup.blade.php
resources/views/partials/entity-selector.blade.php
resources/views/partials/image-manager.blade.php
resources/views/public.blade.php
resources/views/search/all.blade.php
resources/views/search/book.blade.php
resources/views/search/entity-ajax-list.blade.php
resources/views/search/entity-search-list.blade.php
resources/views/settings/index.blade.php
resources/views/settings/navbar.blade.php
resources/views/settings/roles/create.blade.php
resources/views/settings/roles/delete.blade.php
resources/views/settings/roles/edit.blade.php
resources/views/settings/roles/form.blade.php
resources/views/settings/roles/index.blade.php
resources/views/users/create.blade.php
resources/views/users/delete.blade.php
resources/views/users/edit.blade.php
resources/views/users/forms/ldap.blade.php
resources/views/users/forms/standard.blade.php
resources/views/users/forms/system.blade.php
resources/views/users/index.blade.php
resources/views/users/profile.blade.php
resources/views/vendor/notifications/email-plain.blade.php
resources/views/vendor/notifications/email.blade.php
tests/Auth/AuthTest.php
tests/Entity/EntitySearchTest.php
tests/Entity/SortTest.php
tests/Permissions/RolesTest.php

index 5e364799d1550f97399b6731773395a0ba6195b5..3762905b96f4ce358412c285225bc7486e65b146 100644 (file)
@@ -18,6 +18,7 @@ return [
      */
     'sign_up' => 'Sign up',
     'log_in' => 'Log in',
+    'logout' => 'Logout',
 
     'name' => 'Name',
     'username' => 'Username',
index 9ee35964152ef3a7369c6dd04a7d403be7ec218f..e6648fbcdeb9fc2d87ecbde3b3282f8559728753 100644 (file)
@@ -9,6 +9,7 @@ return [
     'back' => 'Back',
     'save' => 'Save',
     'continue' => 'Continue',
+    'select' => 'Select',
 
     /**
      * Form Labels
@@ -24,11 +25,30 @@ return [
     'view' => 'View',
     'create' => 'Create',
     'update' => 'Update',
+    'edit' => 'Edit',
     'delete' => 'Delete',
+    'search' => 'Search',
+    'search_clear' => 'Clear Search',
 
 
     /**
      * Misc
      */
     'deleted_user' => 'Deleted User',
+    'no_activity' => 'No activity to show',
+    'no_items' => 'No items available',
+    'back_to_top' => 'Back to top',
+    'toggle_details' => 'Toggle Details',
+
+    /**
+     * Header
+     */
+    'view_profile' => 'View Profile',
+    'edit_profile' => 'Edit Profile',
+
+    /**
+     * Email Content
+     */
+    'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
+    'email_rights' => 'All rights reserved',
 ];
\ No newline at end of file
diff --git a/resources/lang/en/components.php b/resources/lang/en/components.php
new file mode 100644 (file)
index 0000000..2b47961
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+return [
+
+    /**
+     * Image Manager
+     */
+    'imagem_select' => 'Image Select',
+    'imagem_all' => 'All',
+    'imagem_all_title' => 'View all images',
+    'imagem_book_title' => 'View images uploaded to this book',
+    'imagem_page_title' => 'View images uploaded to this page',
+    'imagem_search_hint' => 'Search by image name',
+    'imagem_uploaded' => 'Uploaded :uploadedDate',
+    'imagem_load_more' => 'Load More',
+    'imagem_image_name' => 'Image Name',
+    'imagem_delete_confirm' => 'This image is used in the pages below, Click delete again to confirm you want to delete this image.',
+    'imagem_select_image' => 'Select Image'
+];
\ No newline at end of file
index 751aa5a12aacc5b2028fcd66e039d10e3ad3f268..b2fb23d0edfc4e3700c50b9f8bd72ebddbaea6d9 100644 (file)
@@ -5,6 +5,10 @@ return [
      * Shared
      */
     'recently_created' => 'Recently Created',
+    'recently_created_pages' => 'Recently Created Pages',
+    'recently_updated_pages' => 'Recently Updated Pages',
+    'recently_created_chapters' => 'Recently Created Chapters',
+    'recently_created_books' => 'Recently Created Books',
     'recently_update' => 'Recently Updated',
     'recently_viewed' => 'Recently Viewed',
     'recent_activity' => 'Recent Activity',
@@ -19,6 +23,13 @@ return [
     'meta_updated' => 'Updated :timeLength',
     'meta_updated_name' => 'Updated :timeLength by :user',
     'x_pages' => ':count Pages',
+    'entity_select' => 'Entity Select',
+    'images' => 'Images',
+    'my_recent_drafts' => 'My Recent Drafts',
+    'my_recently_viewed' => 'My Recently Viewed',
+    'no_pages_viewed' => 'You have not viewed any pages',
+    'no_pages_recently_created' => 'No pages have been recently created',
+    'no_pages_recently_updated' => 'No pages have been recently updated',
 
     /**
      * Permissions and restrictions
@@ -33,13 +44,19 @@ return [
      */
     'search_results' => 'Search Results',
     'search_clear' => 'Clear Search',
+    'search_view_pages' => 'View all matches pages',
+    'search_view_chapters' => 'View all matches chapters',
+    'search_view_books' => 'View all matches books',
+    'search_no_pages' => 'No pages matched this search',
 
     /**
      * Books
      */
+    'book' => 'Book',
     'books' => 'Books',
     'books_empty' => 'No books have been created',
     'books_popular' => 'Popular Books',
+    'books_recent' => 'Recent Books',
     'books_popular_empty' => 'The most popular books will appear here.',
     'books_create' => 'Create New Book',
     'books_delete' => 'Delete Book',
@@ -64,6 +81,7 @@ return [
     /**
      * Chapters
      */
+    'chapter' => 'Chapter',
     'chapters_popular' => 'Popular Chapters',
     'chapters_new' => 'New Chapter',
     'chapters_create' => 'Create New Chapter',
@@ -81,6 +99,8 @@ return [
     /**
      * Pages
      */
+    'page' => 'Page',
+    'pages' => 'Pages',
     'pages_popular' => 'Popular Pages',
     'pages_new' => 'New Page',
     'pages_attachments' => 'Attachments',
@@ -149,4 +169,12 @@ return [
     'attachments_edit_file_name' => 'File Name',
     'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
 
+    /**
+     * Profile View
+     */
+    'profile_user_for_x' => 'User for :time',
+    'profile_created_content' => 'Created Content',
+    'profile_not_created_pages' => ':userName has not created any pages',
+    'profile_not_created_chapters' => ':userName has not created any chapters',
+    'profile_not_created_books' => ':userName has not created any books',
 ];
\ No newline at end of file
index 1b0bcad33414ab67660660e3d6fe4a21d810b9d9..dcbfe6dde51f28d33d579ba0e57df8999cd08f86 100644 (file)
@@ -10,7 +10,11 @@ return [
     
     'settings' => 'Settings',
     'settings_save' => 'Save Settings',
-    
+
+    /**
+     * App settings
+     */
+
     'app_settings' => 'App Settings',
     'app_name' => 'Application name',
     'app_name_desc' => 'This name is shown in the header and any emails.',
@@ -27,6 +31,10 @@ return [
     'app_primary_color' => 'Application primary color',
     'app_primary_color_desc' => 'This should be a hex value. <br>Leave empty to reset to the default color.',
 
+    /**
+     * Registration settings
+     */
+
     'reg_settings' => 'Registration Settings',
     'reg_allow' => 'Allow registration?',
     'reg_default_role' => 'Default user role after registration',
@@ -36,4 +44,86 @@ return [
     'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. <br> Note that users will be able to change their email addresses after successful registration.',
     'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
 
-];
\ No newline at end of file
+    /**
+     * Role settings
+     */
+
+    'roles' => 'Roles',
+    'role_user_roles' => 'User Roles',
+    'role_create' => 'Create New Role',
+    'role_delete' => 'Delete Role',
+    'role_delete_confirm' => 'This will delete the role with the name \':roleName\'.',
+    'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.',
+    'role_delete_sure' => 'Are you sure you want to delete this role?',
+    'role_edit' => 'Edit Role',
+    'role_details' => 'Role Details',
+    'role_name' => 'Role Name',
+    'role_desc' => 'Short Description of Role',
+    'role_system' => 'System Permissions',
+    'role_manage_users' => 'Manage users',
+    'role_manage_roles' => 'Manage roles & role permissions',
+    'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+    'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+    'role_manage_settings' => 'Manage app settings',
+    'role_asset' => 'Asset Permissions',
+    'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+    'role_all' => 'All',
+    'role_own' => 'Own',
+    'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+    'role_save' => 'Save Role',
+    'role_users' => 'Users in this role',
+    'role_users_none' => 'No users are currently assigned to this role',
+
+    /**
+     * Users
+     */
+
+    'users' => 'Users',
+    'users_add_new' => 'Add New User',
+    'users_search' => 'Search Users',
+    'users_role' => 'User Roles',
+    'users_external_auth_id' => 'External Authentication ID',
+    'users_password_warning' => 'Only fill the below if you would like to change your password:',
+    'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.',
+    'users_delete' => 'Delete User',
+    'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.',
+    'users_delete_confirm' => 'Are you sure you want to delete this user?',
+    'users_edit' => 'Edit User',
+    'users_edit_profile' => 'Edit Profile',
+    'users_avatar' => 'User Avatar',
+    'users_avatar_desc' => 'This image should be approx 256px square.',
+    'users_social_accounts' => 'Social Accounts',
+    'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not previously authorized access. Revoke access from your profile settings on the connected social account.',
+    'users_social_connect' => 'Connect Account',
+    'users_social_disconnect' => 'Disconnect Account',
+];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
index 08acf725d95ea013b54fcd0742060d87e9d571ed..b1c74fbd01d66b2c7cc40fba094702126cddf33f 100644 (file)
                 <div class="col-lg-4 col-sm-5">
                     <div class="float right">
                         <div class="links text-center">
-                            <a href="{{ baseUrl('/books') }}"><i class="zmdi zmdi-book"></i>Books</a>
+                            <a href="{{ baseUrl('/books') }}"><i class="zmdi zmdi-book"></i>{{ trans('entities.books') }}</a>
                             @if(isset($currentUser) && userCan('settings-manage'))
-                                <a href="{{ baseUrl('/settings') }}"><i class="zmdi zmdi-settings"></i>Settings</a>
+                                <a href="{{ baseUrl('/settings') }}"><i class="zmdi zmdi-settings"></i>{{ trans('settings.settings') }}</a>
                             @endif
                             @if(!isset($signedIn) || !$signedIn)
-                                <a href="{{ baseUrl('/login') }}"><i class="zmdi zmdi-sign-in"></i>Sign In</a>
+                                <a href="{{ baseUrl('/login') }}"><i class="zmdi zmdi-sign-in"></i>{{ trans('auth.log_in') }}</a>
                             @endif
                         </div>
                         @if(isset($signedIn) && $signedIn)
-                            <div class="dropdown-container" dropdown>
-                                <span class="user-name" dropdown-toggle>
-                                    <img class="avatar" src="{{$currentUser->getAvatar(30)}}" alt="{{ $currentUser->name }}">
-                                    <span class="name" ng-non-bindable>{{ $currentUser->getShortName(9) }}</span> <i class="zmdi zmdi-caret-down"></i>
-                                </span>
-                                <ul>
-                                    <li>
-                                        <a href="{{ baseUrl("/user/{$currentUser->id}") }}" class="text-primary"><i class="zmdi zmdi-account zmdi-hc-fw zmdi-hc-lg"></i>View Profile</a>
-                                    </li>
-                                    <li>
-                                        <a href="{{ baseUrl("/settings/users/{$currentUser->id}") }}" class="text-primary"><i class="zmdi zmdi-edit zmdi-hc-fw zmdi-hc-lg"></i>Edit Profile</a>
-                                    </li>
-                                    <li>
-                                        <a href="{{ baseUrl('/logout') }}" class="text-neg"><i class="zmdi zmdi-run zmdi-hc-fw zmdi-hc-lg"></i>Logout</a>
-                                    </li>
-                                </ul>
-                            </div>
+                            @include('partials._header-dropdown', ['currentUser' => $currentUser])
                         @endif
 
                     </div>
@@ -93,7 +77,7 @@
 
     <div id="back-to-top">
         <div class="inner">
-            <i class="zmdi zmdi-chevron-up"></i> <span>Back to top</span>
+            <i class="zmdi zmdi-chevron-up"></i> <span>{{ trans('common.back_to_top') }}</span>
         </div>
     </div>
 @yield('bottom')
index 2fb4ac85597cca57cc0f26d6e86bde9a55efb881..0d97a6a4b4434ccb5a11fb203a8309d466c09941 100644 (file)
@@ -5,14 +5,9 @@
     <div class="faded-small toolbar">
         <div class="container">
             <div class="row">
-                <div class="col-sm-4 faded">
+                <div class="col-sm-6 faded">
                     <div class="action-buttons text-left">
-                        <a data-action="expand-entity-list-details" class="text-primary text-button"><i class="zmdi zmdi-wrap-text"></i>Toggle Details</a>
-                    </div>
-                </div>
-                <div class="col-sm-8 faded">
-                    <div class="action-buttons">
-
+                        <a data-action="expand-entity-list-details" class="text-primary text-button"><i class="zmdi zmdi-wrap-text"></i>{{ trans('common.toggle_details') }}</a>
                     </div>
                 </div>
             </div>
             <div class="col-sm-4">
                 <div id="recent-drafts">
                     @if(count($draftPages) > 0)
-                        <h4>My Recent Drafts</h4>
+                        <h4>{{ trans('entities.my_recent_drafts') }}</h4>
                         @include('partials/entity-list', ['entities' => $draftPages, 'style' => 'compact'])
                     @endif
                 </div>
                 @if($signedIn)
-                    <h4>My Recently Viewed</h4>
+                    <h4>{{ trans('entities.my_recently_viewed') }}</h4>
                 @else
-                    <h4>Recent Books</h4>
+                    <h4>{{ trans('entities.books_recent') }}</h4>
                 @endif
                 @include('partials/entity-list', [
                 'entities' => $recents,
                 'style' => 'compact',
-                'emptyText' => $signedIn ? 'You have not viewed any pages' : 'No books have been created'
+                'emptyText' => $signedIn ? trans('entities.no_pages_viewed') : trans('entities.books_empty')
                 ])
             </div>
 
             <div class="col-sm-4">
-                <h4><a class="no-color" href="{{ baseUrl("/pages/recently-created") }}">Recently Created Pages</a></h4>
+                <h4><a class="no-color" href="{{ baseUrl("/pages/recently-created") }}">{{ trans('entities.recently_created_pages') }}</a></h4>
                 <div id="recently-created-pages">
                     @include('partials/entity-list', [
                     'entities' => $recentlyCreatedPages,
                     'style' => 'compact',
-                    'emptyText' => 'No pages have been recently created'
+                    'emptyText' => trans('entities.no_pages_recently_created')
                     ])
                 </div>
 
-                <h4><a class="no-color" href="{{ baseUrl("/pages/recently-updated") }}">Recently Updated Pages</a></h4>
+                <h4><a class="no-color" href="{{ baseUrl("/pages/recently-updated") }}">{{ trans('entities.recently_updated_pages') }}</a></h4>
                 <div id="recently-updated-pages">
                     @include('partials/entity-list', [
                     'entities' => $recentlyUpdatedPages,
                     'style' => 'compact',
-                    'emptyText' => 'No pages have been recently updated'
+                    'emptyText' => trans('entites.no_pages_recently_updated')
                     ])
                 </div>
             </div>
 
             <div class="col-sm-4" id="recent-activity">
-                <h4>Recent Activity</h4>
+                <h4>{{ trans('entities.recent_activity') }}</h4>
                 @include('partials/activity-list', ['activity' => $activity])
             </div>
 
diff --git a/resources/views/partials/_header-dropdown.blade.php b/resources/views/partials/_header-dropdown.blade.php
new file mode 100644 (file)
index 0000000..1c839c9
--- /dev/null
@@ -0,0 +1,17 @@
+<div class="dropdown-container" dropdown>
+    <span class="user-name" dropdown-toggle>
+        <img class="avatar" src="{{$currentUser->getAvatar(30)}}" alt="{{ $currentUser->name }}">
+        <span class="name" ng-non-bindable>{{ $currentUser->getShortName(9) }}</span> <i class="zmdi zmdi-caret-down"></i>
+    </span>
+    <ul>
+        <li>
+            <a href="{{ baseUrl("/user/{$currentUser->id}") }}" class="text-primary"><i class="zmdi zmdi-account zmdi-hc-fw zmdi-hc-lg"></i>{{ trans('common.view_profile') }}</a>
+        </li>
+        <li>
+            <a href="{{ baseUrl("/settings/users/{$currentUser->id}") }}" class="text-primary"><i class="zmdi zmdi-edit zmdi-hc-fw zmdi-hc-lg"></i>{{ trans('common.edit_profile') }}</a>
+        </li>
+        <li>
+            <a href="{{ baseUrl('/logout') }}" class="text-neg"><i class="zmdi zmdi-run zmdi-hc-fw zmdi-hc-lg"></i>{{ trans('auth.logout') }}</a>
+        </li>
+    </ul>
+</div>
\ No newline at end of file
index c45ca6c7a8252dc253174770a7137099715b4355..3f162e0bd87f283029bc603f1bb1788b8e2ba1bb 100644 (file)
@@ -11,7 +11,7 @@
     @if($activity->user)
         <a href="{{ $activity->user->getProfileUrl() }}">{{ $activity->user->name }}</a>
     @else
-        A deleted user
+        {{ trans('common.deleted_user') }}
     @endif
 
     {{ $activity->getText() }}
index de72f5051e4644e4af7a0f75eff8782b7ebf4547..0dc38091e6161e940ed6ec5bf3273489661bf0f8 100644 (file)
@@ -8,5 +8,5 @@
         @endforeach
     </div>
 @else
-    <p class="text-muted">No activity to show</p>
+    <p class="text-muted">{{ trans('common.no_activity') }}</p>
 @endif
\ No newline at end of file
index 412d3be8f00ca981d1c36862a210c25693253070..95ebfcd4f2f3970730699009a7f1687cf3489260 100644 (file)
@@ -17,7 +17,7 @@
         @endforeach
     @else
         <p class="text-muted empty-text">
-            {{ $emptyText or 'No items available' }}
+            {{ $emptyText or trans('common.no_items') }}
         </p>
     @endif
 </div>
\ No newline at end of file
index b9166896aad468c8e80880e1d5f51ea69a0693d1..a758cc0216ca94ac79e4a2ef0b62f7ec493d9eb3 100644 (file)
@@ -2,12 +2,12 @@
     <div class="overlay" entity-link-selector>
         <div class="popup-body small flex-child">
             <div class="popup-header primary-background">
-                <div class="popup-title">Entity Select</div>
+                <div class="popup-title">{{ trans('entities.entity_select') }}</div>
                 <button type="button" class="corner-button neg button popup-close">x</button>
             </div>
             @include('partials/entity-selector', ['name' => 'entity-selector'])
             <div class="popup-footer">
-                <button type="button" disabled="true" class="button entity-link-selector-confirm pos corner-button">Select</button>
+                <button type="button" disabled="true" class="button entity-link-selector-confirm pos corner-button">{{ trans('common.select') }}</button>
             </div>
         </div>
     </div>
index 59e1741559391da0d8f41aa445ec3a22a34fd8ce..8f3d82f6749d4f022d837fe78031ba5e9ed662c2 100644 (file)
@@ -1,7 +1,7 @@
 <div class="form-group">
     <div entity-selector class="entity-selector {{$selectorSize or ''}}" entity-types="{{ $entityTypes or 'book,chapter,page' }}">
         <input type="hidden" entity-selector-input name="{{$name}}" value="">
-        <input type="text" placeholder="Search" ng-model="search" ng-model-options="{debounce: 200}" ng-change="searchEntities()">
+        <input type="text" placeholder="{{ trans('common.search') }}" ng-model="search" ng-model-options="{debounce: 200}" ng-change="searchEntities()">
         <div class="text-center loading" ng-show="loading">@include('partials/loading-icon')</div>
         <div ng-show="!loading" ng-bind-html="entityResults"></div>
     </div>
index 83625ad88d0ec665d68092e5062cb55d15e42b72..bed269fbec069070e5aced07a392eeedf49e5d79 100644 (file)
@@ -3,7 +3,7 @@
         <div class="popup-body" ng-click="$event.stopPropagation()">
 
             <div class="popup-header primary-background">
-                <div class="popup-title">Image Select</div>
+                <div class="popup-title">{{ trans('components.imagem_select') }}</div>
                 <button class="popup-close neg corner-button button">x</button>
             </div>
 
                 <div class="image-manager-content">
                     <div ng-if="imageType === 'gallery'" class="container">
                         <div class="image-manager-header row faded-small nav-tabs">
-                            <div class="col-xs-4 tab-item" title="View all images" ng-class="{selected: (view=='all')}" ng-click="setView('all')"><i class="zmdi zmdi-collection-image"></i> All</div>
-                            <div class="col-xs-4 tab-item" title="View images uploaded to this book" ng-class="{selected: (view=='book')}" ng-click="setView('book')"><i class="zmdi zmdi-book text-book"></i> Book</div>
-                            <div class="col-xs-4 tab-item" title="View images uploaded to this page" ng-class="{selected: (view=='page')}" ng-click="setView('page')"><i class="zmdi zmdi-file-text text-page"></i> Page</div>
+                            <div class="col-xs-4 tab-item" title="{{ trans('components.imagem_all_title') }}" ng-class="{selected: (view=='all')}" ng-click="setView('all')"><i class="zmdi zmdi-collection-image"></i> {{ trans('components.imagem_all') }}</div>
+                            <div class="col-xs-4 tab-item" title="{{ trans('components.imagem_book_title') }}" ng-class="{selected: (view=='book')}" ng-click="setView('book')"><i class="zmdi zmdi-book text-book"></i> {{ trans('entities.book') }}</div>
+                            <div class="col-xs-4 tab-item" title="{{ trans('components.imagem_page_title') }}" ng-class="{selected: (view=='page')}" ng-click="setView('page')"><i class="zmdi zmdi-file-text text-page"></i> {{ trans('entities.page') }}</div>
                         </div>
                     </div>
                     <div ng-show="view === 'all'" >
                         <form ng-submit="searchImages()" class="contained-search-box">
-                            <input type="text" placeholder="Search by image name" ng-model="searchTerm">
-                            <button ng-class="{active: searching}" title="Clear Search" type="button" ng-click="cancelSearch()" class="text-button cancel"><i class="zmdi zmdi-close-circle-o"></i></button>
-                            <button title="Search" class="text-button" type="submit"><i class="zmdi zmdi-search"></i></button>
+                            <input type="text" placeholder="{{ trans('components.imagem_search_hint') }}" ng-model="searchTerm">
+                            <button ng-class="{active: searching}" title="{{ trans('common.search_clear') }}" type="button" ng-click="cancelSearch()" class="text-button cancel"><i class="zmdi zmdi-close-circle-o"></i></button>
+                            <button title="{{ trans('common.search') }}" class="text-button" type="submit"><i class="zmdi zmdi-search"></i></button>
                         </form>
                     </div>
                     <div class="image-manager-list">
                                 <img ng-src="@{{image.thumbs.gallery}}" ng-attr-alt="@{{image.title}}" ng-attr-title="@{{image.name}}">
                                 <div class="image-meta">
                                     <span class="name" ng-bind="image.name"></span>
-                                    <span class="date">Uploaded @{{ getDate(image.created_at)  }}</span>
+                                    <span class="date">{{ trans('components.imagem_uploaded', ['uploadedDate' => "{{ getDate(image.created_at) }" . "}"]) }}</span>
                                 </div>
                             </div>
                         </div>
-                        <div class="load-more" ng-show="hasMore" ng-click="fetchData()">Load More</div>
+                        <div class="load-more" ng-show="hasMore" ng-click="fetchData()">{{ trans('components.imagem_load_more') }}</div>
                     </div>
                 </div>
 
                                     </a>
                                 </div>
                                 <div class="form-group">
-                                    <label for="name">Image Name</label>
+                                    <label for="name">{{ trans('components.imagem_image_name') }}</label>
                                     <input type="text" id="name" name="name" ng-model="selectedImage.name">
                                 </div>
                             </form>
 
                             <div ng-show="dependantPages">
                                 <p class="text-neg text-small">
-                                    This image is used in the pages below, Click delete again to confirm you want to delete
-                                    this image.
+                                    {{ trans('components.imagem_delete_confirm') }}
                                 </p>
                                 <ul class="text-neg">
                                     <li ng-repeat="page in dependantPages">
@@ -73,7 +72,7 @@
                                     <button class="button icon neg"><i class="zmdi zmdi-delete"></i></button>
                                 </form>
                                 <button class="button pos anim fadeIn float right" ng-show="selectedImage" ng-click="selectButtonClick()">
-                                    <i class="zmdi zmdi-square-right"></i>Select Image
+                                    <i class="zmdi zmdi-square-right"></i>{{ trans('components.imagem_select_image') }}
                                 </button>
                             </div>
 
index 16aebe2bb74fcede0efea22af753c41ec920b46b..05cf043fd69a4a9855d21e32b53b3fb645849b73 100644 (file)
@@ -25,7 +25,7 @@
 </head>
 <body class="@yield('body-class')" ng-app="bookStack">
 
-@include('partials/notifications')
+@include('partials.notifications')
 
 <header id="header">
     <div class="container">
                         @yield('header-buttons')
                     </div>
                     @if(isset($signedIn) && $signedIn)
-                        <div class="dropdown-container" dropdown>
-                            <span class="user-name" dropdown-toggle>
-                                <img class="avatar" src="{{$currentUser->getAvatar(30)}}" alt="{{ $currentUser->name }}">
-                                <span class="name" ng-non-bindable>{{ $currentUser->getShortName(9) }}</span> <i class="zmdi zmdi-caret-down"></i>
-                            </span>
-                            <ul>
-                                <li>
-                                    <a href="{{ baseUrl("/user/{$currentUser->id}") }}" class="text-primary"><i class="zmdi zmdi-account zmdi-hc-fw zmdi-hc-lg"></i>View Profile</a>
-                                </li>
-                                <li>
-                                    <a href="{{ baseUrl("/settings/users/{$currentUser->id}") }}" class="text-primary"><i class="zmdi zmdi-edit zmdi-hc-fw zmdi-hc-lg"></i>Edit Profile</a>
-                                </li>
-                                <li>
-                                    <a href="{{ baseUrl('/logout') }}" class="text-neg"><i class="zmdi zmdi-run zmdi-hc-fw zmdi-hc-lg"></i>Logout</a>
-                                </li>
-                            </ul>
-                        </div>
+                        @include('partials._header-dropdown', ['currentUser' => $currentUser])
                     @endif
                 </div>
             </div>
index fcfb2c902472ae627c69250f33fb44ba86b03bd8..d4053752f4dee40f167a6c57a9f6c0b5b7a198f6 100644 (file)
@@ -2,49 +2,55 @@
 
 @section('content')
 
-    <div class="container anim fadeIn" ng-non-bindable>
+    <div class="faded-small toolbar">
+        <div class="container">
+            <div class="row">
+                <div class="col-sm-12 faded">
+                    <div class="breadcrumbs">
+                        <a href="{{ baseUrl("/search/all?term={$searchTerm}") }}" class="text-button"><i class="zmdi zmdi-search"></i>{{ $searchTerm }}</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
 
-        <h1>Search Results&nbsp;&nbsp;&nbsp; <span class="text-muted">{{ $searchTerm }}</span></h1>
 
-        <p>
+    <div class="container" ng-non-bindable>
 
+        <h1>{{ trans('entities.search_results') }}</h1>
+
+        <p>
             @if(count($pages) > 0)
-                <a href="{{ baseUrl("/search/pages?term={$searchTerm}") }}" class="text-page"><i class="zmdi zmdi-file-text"></i>View all matched pages</a>
+                <a href="{{ baseUrl("/search/pages?term={$searchTerm}") }}" class="text-page"><i class="zmdi zmdi-file-text"></i>{{ trans('entities.search_view_pages') }}</a>
             @endif
 
-
             @if(count($chapters) > 0)
                 &nbsp; &nbsp;&nbsp;
-                <a href="{{ baseUrl("/search/chapters?term={$searchTerm}") }}" class="text-chapter"><i class="zmdi zmdi-collection-bookmark"></i>View all matched chapters</a>
+                <a href="{{ baseUrl("/search/chapters?term={$searchTerm}") }}" class="text-chapter"><i class="zmdi zmdi-collection-bookmark"></i>{{ trans('entities.search_view_chapters') }}</a>
             @endif
 
             @if(count($books) > 0)
                 &nbsp; &nbsp;&nbsp;
-                <a href="{{ baseUrl("/search/books?term={$searchTerm}") }}" class="text-book"><i class="zmdi zmdi-book"></i>View all matched books</a>
+                <a href="{{ baseUrl("/search/books?term={$searchTerm}") }}" class="text-book"><i class="zmdi zmdi-book"></i>{{ trans('entities.search_view_books') }}</a>
             @endif
         </p>
-        <div class="row">
 
+        <div class="row">
             <div class="col-md-6">
-                <h3><a href="{{ baseUrl("/search/pages?term={$searchTerm}") }}" class="no-color">Matching Pages</a></h3>
+                <h3><a href="{{ baseUrl("/search/pages?term={$searchTerm}") }}" class="no-color">{{ trans('entities.pages') }}</a></h3>
                 @include('partials/entity-list', ['entities' => $pages, 'style' => 'detailed'])
             </div>
-
             <div class="col-md-5 col-md-offset-1">
-
                 @if(count($books) > 0)
-                    <h3><a href="{{ baseUrl("/search/books?term={$searchTerm}") }}" class="no-color">Matching Books</a></h3>
+                    <h3><a href="{{ baseUrl("/search/books?term={$searchTerm}") }}" class="no-color">{{ trans('entities.books') }}</a></h3>
                     @include('partials/entity-list', ['entities' => $books])
                 @endif
 
                 @if(count($chapters) > 0)
-                    <h3><a href="{{ baseUrl("/search/chapters?term={$searchTerm}") }}" class="no-color">Matching Chapters</a></h3>
+                    <h3><a href="{{ baseUrl("/search/chapters?term={$searchTerm}") }}" class="no-color">{{ trans('entities.chapters') }}</a></h3>
                     @include('partials/entity-list', ['entities' => $chapters])
                 @endif
-
             </div>
-
-
         </div>
 
 
index 5af2c4d063c74104f86ac6cbd6afec486b6a52ab..0b9119cd51584bad7dd1061621051b9ea430655c 100644 (file)
@@ -7,7 +7,7 @@
             </div>
         @endforeach
     @else
-        <p class="text-muted">No pages matched this search</p>
+        <p class="text-muted">{{ trans('entities.search_no_pages') }}</p>
     @endif
 </div>
 
index 97d5e4da71de4bf9e869f23535de2e8ada4e586a..93f2633aac12a73772fc3441f91eb56ebaf7c52f 100644 (file)
@@ -16,7 +16,7 @@
         @endforeach
     @else
         <p class="text-muted">
-            No items available
+            {{ trans('common.no_items') }}
         </p>
     @endif
 </div>
\ No newline at end of file
index dd9c6a5090d740923817f241d831f27b7f456f8a..4e743f6bdc4ba7b9815d9308781d59a48d7738f0 100644 (file)
@@ -2,17 +2,27 @@
 
 @section('content')
 
+    <div class="faded-small toolbar">
+        <div class="container">
+            <div class="row">
+                <div class="col-sm-12 faded">
+                    <div class="breadcrumbs">
+                        <a href="{{ baseUrl("/search/all?term={$searchTerm}") }}" class="text-button"><i class="zmdi zmdi-search"></i>{{ $searchTerm }}</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
     <div class="container">
         <div class="row">
 
             <div class="col-sm-7">
-                <h1>{{ $title }} <small>{{ $searchTerm }}</small></h1>
+                <h1>{{ $title }}</h1>
                 @include('partials.entity-list', ['entities' => $entities, 'style' => 'detailed'])
                 {!! $entities->links() !!}
             </div>
 
-            <div class="col-sm-4 col-sm-offset-1"></div>
-
         </div>
     </div>
 @stop
\ No newline at end of file
index ac25eb3b55e8a40bc33f885fb86cf5fcef16947c..8ad2195072fe8b3473be901123dc5e7f5979b4c1 100644 (file)
@@ -11,7 +11,7 @@
     <form action="{{ baseUrl("/settings") }}" method="POST" ng-cloak>
         {!! csrf_field() !!}
 
-        <h3>App Settings</h3>
+        <h3>{{ trans('settings.app_settings') }}</h3>
 
         <div class="row">
 
index f4526b4c8b450f8771fb10dbd2640a6613b09b82..15000b1cf81578dd8f16fa7bebb6f455fed925b6 100644 (file)
@@ -4,13 +4,13 @@
         <div class="row">
             <div class="col-md-12 setting-nav nav-tabs">
                 @if($currentUser->can('settings-manage'))
-                    <a href="{{ baseUrl('/settings') }}" @if($selected == 'settings') class="selected text-button" @endif><i class="zmdi zmdi-settings"></i>Settings</a>
+                    <a href="{{ baseUrl('/settings') }}" @if($selected == 'settings') class="selected text-button" @endif><i class="zmdi zmdi-settings"></i>{{ trans('settings.settings') }}</a>
                 @endif
                 @if($currentUser->can('users-manage'))
-                    <a href="{{ baseUrl('/settings/users') }}" @if($selected == 'users') class="selected text-button" @endif><i class="zmdi zmdi-accounts"></i>Users</a>
+                    <a href="{{ baseUrl('/settings/users') }}" @if($selected == 'users') class="selected text-button" @endif><i class="zmdi zmdi-accounts"></i>{{ trans('settings.users') }}</a>
                 @endif
                 @if($currentUser->can('user-roles-manage'))
-                    <a href="{{ baseUrl('/settings/roles') }}" @if($selected == 'roles') class="selected text-button" @endif><i class="zmdi zmdi-lock-open"></i>Roles</a>
+                    <a href="{{ baseUrl('/settings/roles') }}" @if($selected == 'roles') class="selected text-button" @endif><i class="zmdi zmdi-lock-open"></i>{{ trans('settings.roles') }}</a>
                 @endif
             </div>
         </div>
index 6a59c0c54c8281ebd6756e007a9dcd2e27a4e056..bae42540ce21423c6efb74b3f38076ab3914285d 100644 (file)
@@ -5,7 +5,7 @@
     @include('settings/navbar', ['selected' => 'roles'])
 
     <div class="container">
-        <h1>Create New Role</h1>
+        <h1>{{ trans('settings.role_create') }}</h1>
 
         <form action="{{ baseUrl("/settings/roles/new") }}" method="POST">
             @include('settings/roles/form')
index 1377d07aeb7857528d1ae72ca0d48e506cbb2c2f..0b8e1626fdb854ba14161ee77bf3cac893b9f1ed 100644 (file)
@@ -5,8 +5,8 @@
     @include('settings/navbar', ['selected' => 'roles'])
 
     <div class="container small" ng-non-bindable>
-        <h1>Delete Role</h1>
-        <p>This will delete the role with the name '{{ $role->display_name }}'.</p>
+        <h1>{{ trans('settings.role_delete') }}</h1>
+        <p>{{ trans('settings.role_delete_confirm', ['roleName' => $role->display_name]) }}</p>
 
         <form action="{{ baseUrl("/settings/roles/delete/{$role->id}") }}" method="POST">
             {!! csrf_field() !!}
 
             @if($role->users->count() > 0)
             <div class="form-group">
-                    <p>This role has {{$role->users->count()}} users assigned to it. If you would like to migrate the users from this role select a new role below.</p>
+                    <p>{{ trans('settings.role_delete_users_assigned', ['userCount' => $role->users->count()]) }}</p>
                     @include('form/role-select', ['options' => $roles, 'name' => 'migration_role_id'])
             </div>
             @endif
 
-            <p class="text-neg">Are you sure you want to delete this role?</p>
-            <a href="{{ baseUrl("/settings/roles/{$role->id}") }}" class="button">Cancel</a>
-            <button type="submit" class="button neg">Confirm</button>
+            <p class="text-neg">{{ trans('settings.role_delete_sure') }}</p>
+            <a href="{{ baseUrl("/settings/roles/{$role->id}") }}" class="button muted">{{ trans('common.cancel') }}</a>
+            <button type="submit" class="button neg">{{ trans('common.confirm') }}</button>
         </form>
     </div>
 
index 7e186e8980e6069910fa6c73d01648b0e6362432..b46b646635f18417f390dd0bf83b30cd2f9da163 100644 (file)
@@ -7,11 +7,11 @@
     <div class="container">
         <div class="row">
             <div class="col-sm-6">
-                <h1>Edit Role <small> {{ $role->display_name }}</small></h1>
+                <h1>{{ trans('settings.role_edit') }}</h1>
             </div>
             <div class="col-sm-6">
                 <p></p>
-                <a href="{{ baseUrl("/settings/roles/delete/{$role->id}") }}" class="button neg float right">Delete Role</a>
+                <a href="{{ baseUrl("/settings/roles/delete/{$role->id}") }}" class="button neg float right">{{ trans('settings.role_delete') }}</a>
             </div>
         </div>
 
index 78e9e15333091fc0e2bbf99fd5443766edc8376b..319f3a2df9dea8bed1310a5d0e7b3db9847c8d13 100644 (file)
     <div class="col-md-9">
         <div class="row">
             <div class="col-md-5">
-                <h3>Role Details</h3>
+                <h3>{{ trans('settings.role_details') }}</h3>
                 <div class="form-group">
-                    <label for="name">Role Name</label>
+                    <label for="name">{{ trans('settings.role_name') }}</label>
                     @include('form/text', ['name' => 'display_name'])
                 </div>
                 <div class="form-group">
-                    <label for="name">Short Role Description</label>
+                    <label for="name">{{ trans('settings.role_desc') }}</label>
                     @include('form/text', ['name' => 'description'])
                 </div>
-                <h3>System Permissions</h3>
-                <label>@include('settings/roles/checkbox', ['permission' => 'users-manage']) Manage users</label>
-                <label>@include('settings/roles/checkbox', ['permission' => 'user-roles-manage']) Manage roles & role permissions</label>
-                <label>@include('settings/roles/checkbox', ['permission' => 'restrictions-manage-all']) Manage all Book, Chapter & Page permissions</label>
-                <label>@include('settings/roles/checkbox', ['permission' => 'permissions']) Manage permissions on own Book, Chapter & Pages</label>
-                <label>@include('settings/roles/checkbox', ['permission' => 'settings-manage']) Manage app settings</label>
+                <h3>{{ trans('settings.role_system') }}</h3>
+                <label>@include('settings/roles/checkbox', ['permission' => 'users-manage']) {{ trans('settings.role_manage_users') }}</label>
+                <label>@include('settings/roles/checkbox', ['permission' => 'user-roles-manage']) {{ trans('settings.role_manage_roles') }}</label>
+                <label>@include('settings/roles/checkbox', ['permission' => 'restrictions-manage-all']) {{ trans('settings.role_manage_entity_permissions') }}</label>
+                <label>@include('settings/roles/checkbox', ['permission' => 'permissions']) {{ trans('settings.role_manage_own_entity_permissions') }}</label>
+                <label>@include('settings/roles/checkbox', ['permission' => 'settings-manage']) {{ trans('settings.role_manage_settings') }}</label>
             </div>
 
             <div class="col-md-6">
 
-                <h3>Asset Permissions</h3>
-                <p>
-                    These permissions control default access to the assets within the system.
-                    Permissions on Books, Chapters and Pages will override these permissions.
-                </p>
+                <h3>{{ trans('settings.role_asset') }}</h3>
+                <p>{{ trans('settings.role_asset_desc') }}</p>
+
                 <table class="table">
                     <tr>
                         <th width="20%"></th>
-                        <th width="20%">Create</th>
-                        <th width="20%">View</th>
-                        <th width="20%">Edit</th>
-                        <th width="20%">Delete</th>
+                        <th width="20%">{{ trans('common.create') }}</th>
+                        <th width="20%">{{ trans('common.view') }}</th>
+                        <th width="20%">{{ trans('common.edit') }}</th>
+                        <th width="20%">{{ trans('common.delete') }}</th>
                     </tr>
                     <tr>
-                        <td>Books</td>
+                        <td>{{ trans('entities.books') }}</td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'book-create-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'book-create-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'book-view-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'book-view-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'book-view-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'book-view-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'book-update-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'book-update-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'book-update-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'book-update-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'book-delete-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'book-delete-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'book-delete-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'book-delete-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                     </tr>
                     <tr>
-                        <td>Chapters</td>
+                        <td>{{ trans('entities.chapters') }}</td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-create-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-create-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-create-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-create-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-view-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-view-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-view-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-view-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-update-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-update-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-update-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-update-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-delete-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-delete-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-delete-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'chapter-delete-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                     </tr>
                     <tr>
-                        <td>Pages</td>
+                        <td>{{ trans('entities.pages') }}</td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'page-create-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'page-create-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'page-create-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'page-create-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'page-view-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'page-view-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'page-view-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'page-view-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'page-update-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'page-update-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'page-update-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'page-update-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'page-delete-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'page-delete-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'page-delete-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'page-delete-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                     </tr>
                     <tr>
-                        <td>Images</td>
+                        <td>{{ trans('entities.images') }}</td>
                         <td>@include('settings/roles/checkbox', ['permission' => 'image-create-all'])</td>
-                        <td style="line-height:1.2;"><small class="faded">Controlled by the asset they are uploaded to</small></td>
+                        <td style="line-height:1.2;"><small class="faded">{{ trans('settings.role_controlled_by_asset') }}</small></td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'image-update-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'image-update-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'image-update-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'image-update-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'image-delete-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'image-delete-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'image-delete-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'image-delete-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                     </tr>
                     <tr>
-                        <td>Attachments</td>
+                        <td>{{ trans('entities.attachments') }}</td>
                         <td>@include('settings/roles/checkbox', ['permission' => 'attachment-create-all'])</td>
-                        <td style="line-height:1.2;"><small class="faded">Controlled by the asset they are uploaded to</small></td>
+                        <td style="line-height:1.2;"><small class="faded">{{ trans('settings.role_controlled_by_asset') }}</small></td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'attachment-update-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'attachment-update-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'attachment-update-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'attachment-update-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                         <td>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'attachment-delete-own']) Own</label>
-                            <label>@include('settings/roles/checkbox', ['permission' => 'attachment-delete-all']) All</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'attachment-delete-own']) {{ trans('settings.role_own') }}</label>
+                            <label>@include('settings/roles/checkbox', ['permission' => 'attachment-delete-all']) {{ trans('settings.role_all') }}</label>
                         </td>
                     </tr>
                 </table>
             </div>
         </div>
-        <a href="{{ baseUrl("/settings/roles") }}" class="button muted">Cancel</a>
-        <button type="submit" class="button pos">Save Role</button>
+        <a href="{{ baseUrl("/settings/roles") }}" class="button muted">{{ trans('common.cancel') }}</a>
+        <button type="submit" class="button pos">{{ trans('settings.role_save') }}</button>
     </div>
     <div class="col-md-3">
-        <h3>Users in this role</h3>
+        <h3>{{ trans('settings.role_users') }}</h3>
 
         @if(isset($role) && count($role->users) > 0)
         <table class="list-table">
         </table>
         @else
             <p class="text-muted">
-                No users currently in this role.
+                {{ trans('settings.role_users_none') }}
             </p>
         @endif
 
index 2c905ae22c336aa0ebf102d63437ef9fea867633..7925ef04209615c877045c3d1cce313b051988f2 100644 (file)
@@ -8,19 +8,19 @@
 
         <div class="row action-header">
             <div class="col-sm-8">
-                <h1>User Roles</h1>
+                <h1>{{ trans('settings.role_user_roles') }}</h1>
             </div>
             <div class="col-sm-4">
                 <p></p>
-                <a href="{{ baseUrl("/settings/roles/new") }}" class="button float right pos"><i class="zmdi zmdi-lock-open"></i>Add new role</a>
+                <a href="{{ baseUrl("/settings/roles/new") }}" class="button float right pos"><i class="zmdi zmdi-lock-open"></i>{{ trans('settings.role_create') }}</a>
             </div>
         </div>
 
         <table class="table">
             <tr>
-                <th>Role Name</th>
+                <th>{{ trans('settings.role_name') }}</th>
                 <th></th>
-                <th class="text-right">Users</th>
+                <th class="text-right">{{ trans('settings.users') }}</th>
             </tr>
             @foreach($roles as $role)
                 <tr>
index b25f2ee8aa10d6df97786da231456e75a21d2f78..bff79820a664ede3b7f5fb3e51a0a19d1500f58f 100644 (file)
@@ -3,6 +3,18 @@
 
 @section('content')
 
+    <div class="faded-small toolbar">
+        <div class="container">
+            <div class="row">
+                <div class="col-sm-12 faded">
+                    <div class="breadcrumbs">
+                        <a href="{{ baseUrl('/settings/users') }}" class="text-button"><i class="zmdi zmdi-accounts"></i>Users</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
     <div class="container small" ng-non-bindable>
         <h1>Create User</h1>
 
index 74b993b3c681e80ecb17d8280c1add4bd4fadab1..135231a32bf2325650643f8cc8a86db5e9d44ec9 100644 (file)
@@ -2,16 +2,30 @@
 
 @section('content')
 
+    <div class="faded-small toolbar">
+        <div class="container">
+            <div class="row">
+                <div class="col-sm-12 faded">
+                    <div class="breadcrumbs">
+                        <a href="{{ baseUrl("/settings/users") }}" class="text-button"><i class="zmdi zmdi-accounts"></i>Users</a>
+                        <span class="sep">&raquo;</span>
+                        <a href="{{ baseUrl("/settings/users/{$user->id}") }}" class="text-button"><i class="zmdi zmdi-account"></i>{{ $user->name }}</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
     <div class="container small" ng-non-bindable>
-        <h1>Delete User</h1>
-        <p>This will fully delete this user with the name '<span class="text-neg">{{ $user->name }}</span>' from the system.</p>
-        <p class="text-neg">Are you sure you want to delete this user?</p>
+        <h1>{{ trans('settings.users_delete') }}</h1>
+        <p>{{ trans('settings.users_delete_warning', ['userName' => $user->name]) }}</p>
+        <p class="text-neg">{{ trans('settings.users_delete_confirm') }}</p>
 
         <form action="{{ baseUrl("/settings/users/{$user->id}") }}" method="POST">
             {!! csrf_field() !!}
             <input type="hidden" name="_method" value="DELETE">
-            <a href="{{ baseUrl("/settings/users/{$user->id}") }}" class="button muted">Cancel</a>
-            <button type="submit" class="button neg">Confirm</button>
+            <a href="{{ baseUrl("/settings/users/{$user->id}") }}" class="button muted">{{ trans('common.cancel') }}</a>
+            <button type="submit" class="button neg">{{ trans('common.confirm') }}</button>
         </form>
     </div>
 
index 6cbbdb7f7ec879a776e3ec0087f13618c8a836c0..b753dfc455b2d9409b0ea369a8d0698f58bd097f 100644 (file)
         <form action="{{ baseUrl("/settings/users/{$user->id}") }}" method="post">
             <div class="row">
                 <div class="col-sm-8">
-                    <h1>Edit {{ $user->id === $currentUser->id ? 'Profile' : 'User' }}</h1>
+                    <h1>{{ $user->id === $currentUser->id ? trans('settings.users_edit_profile') : trans('settings.users_edit') }}</h1>
                 </div>
                 <div class="col-sm-4">
                     <p></p>
                     @if($authMethod !== 'system')
-                        <a href="{{ baseUrl("/settings/users/{$user->id}/delete") }}" class="neg button float right">Delete User</a>
+                        <a href="{{ baseUrl("/settings/users/{$user->id}/delete") }}" class="neg button float right">{{ trans('settings.users_delete') }}</a>
                     @endif
                 </div>
             </div>
@@ -29,8 +29,8 @@
             </div>
             <div class="col-md-6">
                 <div class="form-group" id="logo-control">
-                    <label for="user-avatar">User Avatar</label>
-                    <p class="small">This image should be approx 256px square.</p>
+                    <label for="user-avatar">{{ trans('settings.users_avatar') }}</label>
+                    <p class="small">{{ trans('settings.users_avatar_desc') }}</p>
                     <image-picker resize-height="512" resize-width="512" current-image="{{ $user->getAvatar(80) }}" current-id="{{ $user->image_id }}" default-image="{{ baseUrl("/user_avatar.png") }}" name="image_id" show-remove="false" image-class="['avatar' ,'large']"></image-picker>
                 </div>
             </div>
         <hr class="margin-top large">
 
         @if($currentUser->id === $user->id && count($activeSocialDrivers) > 0)
-            <h3>Social Accounts</h3>
-            <p class="text-muted">
-                Here you can connect your other accounts for quicker and easier login. <br>
-                Disconnecting an account here does not previously authorized access. Revoke access from your profile settings on the connected social account.
-            </p>
+            <h3>{{ trans('settings.users_social_accounts') }}</h3>
+            <p class="text-muted">{{ trans('settings.users_social_accounts_info') }}</p>
             <div class="row">
                 @if(isset($activeSocialDrivers['google']))
                     <div class="col-md-3 text-center">
                         <div><i class="zmdi zmdi-google-plus-box zmdi-hc-4x" style="color: #DC4E41;"></i></div>
                         <div>
                             @if($user->hasSocialAccount('google'))
-                                <a href="{{ baseUrl("/login/service/google/detach") }}" class="button neg">Disconnect Account</a>
+                                <a href="{{ baseUrl("/login/service/google/detach") }}" class="button neg">{{ trans('settings.users_social_disconnect') }}</a>
                             @else
-                                <a href="{{ baseUrl("/login/service/google") }}" class="button pos">Attach Account</a>
+                                <a href="{{ baseUrl("/login/service/google") }}" class="button pos">{{ trans('settings.users_social_connect') }}</a>
                             @endif
                         </div>
                     </div>
@@ -63,9 +60,9 @@
                         <div><i class="zmdi zmdi-github zmdi-hc-4x" style="color: #444;"></i></div>
                         <div>
                             @if($user->hasSocialAccount('github'))
-                                <a href="{{ baseUrl("/login/service/github/detach") }}" class="button neg">Disconnect Account</a>
+                                <a href="{{ baseUrl("/login/service/github/detach") }}" class="button neg">{{ trans('settings.users_social_disconnect') }}</a>
                             @else
-                                <a href="{{ baseUrl("/login/service/github") }}" class="button pos">Attach Account</a>
+                                <a href="{{ baseUrl("/login/service/github") }}" class="button pos">{{ trans('settings.users_social_connect') }}</a>
                             @endif
                         </div>
                     </div>
index 6e4d2a5fd3c8de7402021955ba9cf1b40c1a6ed9..0a6cf79ae1d26163283a480f550daa255cb58142 100644 (file)
@@ -1,30 +1,30 @@
 <div class="form-group">
-    <label for="name">Name</label>
+    <label for="name">{{ trans('auth.name') }}</label>
     @include('form.text', ['name' => 'name'])
 </div>
 
 @if(userCan('users-manage'))
 <div class="form-group">
-    <label for="email">Email</label>
+    <label for="email">{{ trans('auth.email') }}</label>
     @include('form.text', ['name' => 'email'])
 </div>
 @endif
 
 @if(userCan('users-manage'))
     <div class="form-group">
-        <label for="role">User Role</label>
+        <label for="role">{{ trans('settings.users_role') }}</label>
         @include('form/role-checkboxes', ['name' => 'roles', 'roles' => $roles])
     </div>
 @endif
 
 @if(userCan('users-manage'))
     <div class="form-group">
-        <label for="external_auth_id">External Authentication ID</label>
+        <label for="external_auth_id">{{ trans('settings.users_external_auth_id') }}</label>
         @include('form.text', ['name' => 'external_auth_id'])
     </div>
 @endif
 
 <div class="form-group">
-    <a href="{{ baseUrl("/settings/users") }}" class="button muted">Cancel</a>
-    <button class="button pos" type="submit">Save</button>
+    <a href="{{ baseUrl("/settings/users") }}" class="button muted">{{ trans('common.cancel') }}</a>
+    <button class="button pos" type="submit">{{ trans('common.save') }}</button>
 </div>
\ No newline at end of file
index d902c5b2cf2955046e68b713e6c43b03122a02fe..39ae4c7703d923e7300688a41616e107067525d8 100644 (file)
@@ -1,16 +1,16 @@
 <div class="form-group">
-    <label for="name">Name</label>
+    <label for="name">{{ trans('auth.name') }}</label>
     @include('form.text', ['name' => 'name'])
 </div>
 
 <div class="form-group">
-    <label for="email">Email</label>
+    <label for="email">{{ trans('auth.email') }}</label>
     @include('form.text', ['name' => 'email'])
 </div>
 
 @if(userCan('users-manage'))
     <div class="form-group">
-        <label for="role">User Role</label>
+        <label for="role">{{ trans('settings.users_role') }}</label>
         @include('form/role-checkboxes', ['name' => 'roles', 'roles' => $roles])
     </div>
 @endif
 @if(isset($model))
     <div class="form-group">
         <span class="text-muted">
-            Only fill the below if you would like <br>to change your password:
+            {{ trans('settings.users_password_warning') }}
         </span>
     </div>
 @endif
 
 <div class="form-group">
-    <label for="password">Password</label>
+    <label for="password">{{ trans('auth.password') }}</label>
     @include('form.password', ['name' => 'password'])
 </div>
 
 <div class="form-group">
-    <label for="password-confirm">Confirm Password</label>
+    <label for="password-confirm">{{ trans('auth.password_confirm') }}</label>
     @include('form.password', ['name' => 'password-confirm'])
 </div>
 
 <div class="form-group">
-    <a href="{{ baseUrl("/settings/users") }}" class="button muted">Cancel</a>
-    <button class="button pos" type="submit">Save</button>
+    <a href="{{ baseUrl("/settings/users") }}" class="button muted">{{ trans('common.cancel') }}</a>
+    <button class="button pos" type="submit">{{ trans('common.save') }}</button>
 </div>
 
index 3ee5f6409dc756313be973343fbffff87b7580b3..868dad854061b6c73e7db7927f82121e5a69cc83 100644 (file)
@@ -1,25 +1,26 @@
 @if($user->system_name == 'public')
-    <p>This user represents any guest users that visit your instance. It cannot be used for logins but is assigned&nbsp;automatically.</p>
+    <p>{{ trans('settings.users_system_public') }}</p>
 @endif
 
 <div class="form-group">
-    <label for="name">Name</label>
+    <label for="name">{{ trans('auth.name') }}</label>
     @include('form.text', ['name' => 'name'])
 </div>
 
 <div class="form-group">
-    <label for="email">Email</label>
+    <label for="email">{{ trans('auth.email') }}</label>
     @include('form.text', ['name' => 'email'])
 </div>
 
 @if(userCan('users-manage'))
     <div class="form-group">
-        <label for="role">User Role</label>
+        <label for="role">{{ trans('settings.users_role') }}</label>
         @include('form/role-checkboxes', ['name' => 'roles', 'roles' => $roles])
     </div>
 @endif
 
 <div class="form-group">
-    <a href="{{ baseUrl("/settings/users") }}" class="button muted">Cancel</a>
-    <button class="button pos" type="submit">Save</button>
+    <a href="{{ baseUrl("/settings/users") }}" class="button muted">{{ trans('common.cancel') }}</a>
+    <button class="button pos" type="submit">{{ trans('common.save') }}</button>
 </div>
+
index 105fddb5ba55d232cd69fd684006dd6070dab0ae..3ea5a03f7fa377b9582ead6be0fd11b077669170 100644 (file)
@@ -9,12 +9,12 @@
     <div class="container small" ng-non-bindable>
         <div class="row action-header">
             <div class="col-sm-8">
-                <h1>Users</h1>
+                <h1>{{ trans('settings.users') }}</h1>
             </div>
             <div class="col-sm-4">
                 <p></p>
                 @if(userCan('users-manage'))
-                    <a href="{{ baseUrl("/settings/users/create") }}" class="pos button float right"><i class="zmdi zmdi-account-add"></i>Add new user</a>
+                    <a href="{{ baseUrl("/settings/users/create") }}" class="pos button float right"><i class="zmdi zmdi-account-add"></i>{{ trans('settings.users_add_new') }}</a>
                 @endif
             </div>
         </div>
                     @foreach(collect($listDetails)->except('search') as $name => $val)
                         <input type="hidden" name="{{ $name }}" value="{{ $val }}">
                     @endforeach
-                    <input type="text" name="search" placeholder="Search Users" @if($listDetails['search']) value="{{$listDetails['search']}}" @endif>
+                    <input type="text" name="search" placeholder="{{ trans('settings.users_search') }}" @if($listDetails['search']) value="{{$listDetails['search']}}" @endif>
                 </form>
             </div>
         </div>
-        <div class="text-center">
-
-        </div>
 
         <table class="table">
             <tr>
                 <th></th>
-                <th><a href="{{ sortUrl('/settings/users', $listDetails, ['sort' => 'name']) }}">Name</a></th>
-                <th><a href="{{ sortUrl('/settings/users', $listDetails, ['sort' => 'email']) }}">Email</a></th>
-                <th>User Roles</th>
+                <th><a href="{{ sortUrl('/settings/users', $listDetails, ['sort' => 'name']) }}">{{ trans('auth.name') }}</a></th>
+                <th><a href="{{ sortUrl('/settings/users', $listDetails, ['sort' => 'email']) }}">{{ trans('auth.email') }}</a></th>
+                <th>{{ trans('settings.role_user_roles') }}</th>
             </tr>
             @foreach($users as $user)
                 <tr>
index 1ae869979d1aa1c44f67fdffba57ad65f23fa167..10bd0ec633a0c44cee7a3ac2c92c08446e23367a 100644 (file)
                             <div>
                                 <h3 style="margin-top: 0;">{{ $user->name }}</h3>
                                 <p class="text-muted">
-                                    User for {{ $user->created_at->diffForHumans(null, true) }}
+                                    {{ trans('entities.profile_user_for_x', ['time' => $user->created_at->diffForHumans(null, true)]) }}
                                 </p>
                             </div>
                         </div>
                     </div>
                     <div class="col-md-5 text-bigger" id="content-counts">
-                        <div class="text-muted">Created Content</div>
+                        <div class="text-muted">{{ trans('entities.profile_created_content') }}</div>
                         <div class="text-book">
-                            <i class="zmdi zmdi-book zmdi-hc-fw"></i> {{ $assetCounts['books'] }} {{ str_plural('Book', $assetCounts['books']) }}
+                            <i class="zmdi zmdi-book zmdi-hc-fw"></i> {{ $assetCounts['books'] }} {{ str_plural(trans('entities.book'), $assetCounts['books']) }}
                         </div>
                         <div class="text-chapter">
-                            <i class="zmdi zmdi-collection-bookmark zmdi-hc-fw"></i> {{ $assetCounts['chapters'] }} {{ str_plural('Chapter', $assetCounts['chapters']) }}
+                            <i class="zmdi zmdi-collection-bookmark zmdi-hc-fw"></i> {{ $assetCounts['chapters'] }} {{ str_plural(trans('entities.chapter'), $assetCounts['chapters']) }}
                         </div>
                         <div class="text-page">
-                            <i class="zmdi zmdi-file-text zmdi-hc-fw"></i> {{ $assetCounts['pages'] }} {{ str_plural('Page', $assetCounts['pages']) }}
+                            <i class="zmdi zmdi-file-text zmdi-hc-fw"></i> {{ $assetCounts['pages'] }} {{ str_plural(trans('entities.page'), $assetCounts['pages']) }}
                         </div>
                     </div>
                 </div>
 
                 <hr class="even">
 
-                <h3>Recently Created Pages</h3>
+                <h3>{{ trans('entities.recently_created_pages') }}</h3>
                 @if (count($recentlyCreated['pages']) > 0)
                     @include('partials/entity-list', ['entities' => $recentlyCreated['pages']])
                 @else
-                    <p class="text-muted">{{ $user->name }} has not created any pages</p>
+                    <p class="text-muted">{{ trans('entities.profile_not_created_pages', ['userName' => $user->name]) }}</p>
                 @endif
 
                 <hr class="even">
 
-                <h3>Recently Created Chapters</h3>
+                <h3>{{ trans('entities.recently_created_chapters') }}</h3>
                 @if (count($recentlyCreated['chapters']) > 0)
                     @include('partials/entity-list', ['entities' => $recentlyCreated['chapters']])
                 @else
-                    <p class="text-muted">{{ $user->name }} has not created any chapters</p>
+                    <p class="text-muted">{{ trans('entities.profile_not_created_chapters', ['userName' => $user->name]) }}</p>
                 @endif
 
                 <hr class="even">
 
-                <h3>Recently Created Books</h3>
+                <h3>{{ trans('entities.recently_created_books') }}</h3>
                 @if (count($recentlyCreated['books']) > 0)
                     @include('partials/entity-list', ['entities' => $recentlyCreated['books']])
                 @else
-                    <p class="text-muted">{{ $user->name }} has not created any books</p>
+                    <p class="text-muted">{{ trans('entities.profile_not_created_books', ['userName' => $user->name]) }}</p>
                 @endif
             </div>
 
             <div class="col-sm-4 col-sm-offset-1" id="recent-activity">
-                <h3>Recent Activity</h3>
+                <h3>{{ trans('entities.recent_activity') }}</h3>
                 @include('partials/activity-list', ['activity' => $activity])
             </div>
 
index 79634b611fd049eb27cad2793a46bf0ade721197..7ca1dc8d0312206acc205135560c6dff02443abd 100644 (file)
@@ -18,5 +18,5 @@ if (! empty($outroLines)) {
     echo implode("\n", $outroLines), "\n\n";
 }
 
-echo 'Regards,', "\n";
+echo "\n";
 echo setting('app-name'), "\n";
index 297c6be0553a6143ec7a58262633f3b687e54ff9..3e02cbba9ceb15e7dacc4cac74b3db58ca02fc57 100644 (file)
@@ -159,8 +159,7 @@ $style = [
                                                             <tr>
                                                                 <td style="{{ $fontFamily }}">
                                                                     <p style="{{ $style['paragraph-sub'] }}">
-                                                                        If you’re having trouble clicking the "{{ $actionText }}" button,
-                                                                        copy and paste the URL below into your web browser:
+                                                                        {{ trans('common.email_action_help', ['actionText' => $actionText]) }}
                                                                     </p>
 
                                                                     <p style="{{ $style['paragraph-sub'] }}">
@@ -188,7 +187,7 @@ $style = [
                                                     <p style="{{ $style['paragraph-sub'] }}">
                                                         &copy; {{ date('Y') }}
                                                         <a style="{{ $style['anchor'] }}" href="{{ baseUrl('/') }}" target="_blank">{{ setting('app-name') }}</a>.
-                                                        All rights reserved.
+                                                        {{ trans('common.email_rights') }}
                                                     </p>
                                                 </td>
                                             </tr>
index f287f84900c243e4c7cff080fc08ae40b801349d..664ec297a0bff766368b4d5c92d1ec6bb11fee42 100644 (file)
@@ -24,7 +24,7 @@ class AuthTest extends TestCase
         $settings->put('app-public', 'true');
         $this->visit('/')
             ->seePageIs('/')
-            ->see('Sign In');
+            ->see('Log In');
     }
 
     public function test_registration_showing()
@@ -132,7 +132,7 @@ class AuthTest extends TestCase
 
         $this->asAdmin()
             ->visit('/settings/users')
-            ->click('Add new user')
+            ->click('Add New User')
             ->type($user->name, '#name')
             ->type($user->email, '#email')
             ->check('roles[admin]')
index 60b5ceebd4a8fe783d3eda3f7e9d7cd009b83fa5..3f60f9c36126b559b027a0d84f39cda03a5080b6 100644 (file)
@@ -15,8 +15,8 @@ class EntitySearchTest extends TestCase
             ->type($page->name, 'term')
             ->press('header-search-box-button')
             ->see('Search Results')
-            ->see($page->name)
-            ->click($page->name)
+            ->seeInElement('.entity-list', $page->name)
+            ->clickInElement('.entity-list', $page->name)
             ->seePageIs($page->getUrl());
     }
 
index 2c18c29d3ae49a3f146a69a82753795886a4d8ba..d78b9447973751103fdf659b9149ea8693a1655e 100644 (file)
@@ -48,7 +48,7 @@ class SortTest extends TestCase
         $newBook = \BookStack\Book::where('id', '!=', $currentBook->id)->first();
 
         $this->asAdmin()->visit($chapter->getUrl() . '/move')
-            ->see('Move Chapter')->see($chapter->name)
+            ->see('Move Chapter')
             ->type('book:' . $newBook->id, 'entity_selection')->press('Move Chapter');
 
         $chapter = \BookStack\Chapter::find($chapter->id);
index 1d44e9691cf9c15eca846c4847c58a76a28f894d..500dd3b6772f5d4d2b62ff93bacea80eb34722fa 100644 (file)
@@ -81,7 +81,7 @@ class RolesTest extends TestCase
         $this->asAdmin()->visit('/settings')
             ->click('Roles')
             ->seePageIs('/settings/roles')
-            ->click('Add new role')
+            ->click('Create New Role')
             ->type('Test Role', 'display_name')
             ->type('A little test description', 'description')
             ->press('Save Role')