1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2024-10-30 07:32:39 +01:00

Extracted text for remaining views

This commit is contained in:
Dan Brown 2016-12-04 14:08:04 +00:00
parent 96075dee7b
commit 0775cd09a1
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
40 changed files with 413 additions and 243 deletions

View File

@ -18,6 +18,7 @@ return [
*/
'sign_up' => 'Sign up',
'log_in' => 'Log in',
'logout' => 'Logout',
'name' => 'Name',
'username' => 'Username',

View 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 youre having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
'email_rights' => 'All rights reserved',
];

View File

@ -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'
];

View 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',
];

View 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',
];
/**
* 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',
];

View File

@ -53,32 +53,16 @@
<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')

View 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>
@ -25,44 +20,44 @@
<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>

View File

@ -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>

View 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() }}

View 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

View 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>

View 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>

View 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>

View 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>
@ -12,16 +12,16 @@
<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">
@ -31,11 +31,11 @@
<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>
@ -51,15 +51,14 @@
</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>

View 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">
@ -47,23 +47,7 @@
@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>

View 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>
<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>

View 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>

View File

@ -16,7 +16,7 @@
@endforeach
@else
<p class="text-muted">
No items available
{{ trans('common.no_items') }}
</p>
@endif
</div>

View 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

View 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">

View 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>

View 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')

View 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() !!}
@ -14,14 +14,14 @@
@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>

View 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>

View File

@ -5,128 +5,126 @@
<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">
@ -147,7 +145,7 @@
</table>
@else
<p class="text-muted">
No users currently in this role.
{{ trans('settings.role_users_none') }}
</p>
@endif

View 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>

View 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>

View 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>

View File

@ -11,12 +11,12 @@
<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>
@ -40,20 +40,17 @@
<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>

View 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>

View 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
@ -18,23 +18,23 @@
@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>

View 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>

View 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>
@ -30,20 +30,17 @@
@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>

View File

@ -17,21 +17,21 @@
<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>
@ -39,34 +39,34 @@
<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>

View File

@ -18,5 +18,5 @@ if (! empty($outroLines)) {
echo implode("\n", $outroLines), "\n\n";
}
echo 'Regards,', "\n";
echo "\n";
echo setting('app-name'), "\n";

View File

@ -159,8 +159,7 @@ $style = [
<tr>
<td style="{{ $fontFamily }}">
<p style="{{ $style['paragraph-sub'] }}">
If youre 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>

View 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]')

View 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());
}

View 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);

View 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')