Extracted text from book & chapter views

This commit is contained in:
Dan Brown 2016-11-17 13:33:07 +00:00
parent 694a9459c1
commit 57dc53ceff
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
26 changed files with 191 additions and 98 deletions

View File

@ -22,6 +22,7 @@
<php> <php>
<env name="APP_ENV" value="testing"/> <env name="APP_ENV" value="testing"/>
<env name="APP_DEBUG" value="false"/> <env name="APP_DEBUG" value="false"/>
<env name="APP_LANG" value="en"/>
<env name="CACHE_DRIVER" value="array"/> <env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/> <env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/> <env name="QUEUE_DRIVER" value="sync"/>

View File

@ -0,0 +1,16 @@
<?php
return [
/**
* Buttons
*/
'cancel' => 'Cancel',
'confirm' => 'Confirm',
/**
* Form Labels
*/
'name' => 'Name',
'description' => 'Description',
];

View File

@ -0,0 +1,75 @@
<?php
return [
/**
* Shared
*/
'recently_created' => 'Recently Created',
'recently_update' => 'Recently Updated',
'recently_viewed' => 'Recently Viewed',
'recent_activity' => 'Recent Activity',
'create_now' => 'Create one now',
'edit' => 'Edit',
'sort' => 'Sort',
'move' => 'Move',
'permissions' => 'Permissions',
'delete' => 'Delete',
'meta_created' => 'Created :timeLength',
'meta_created_name' => 'Created :timeLength by :user',
'meta_updated' => 'Updated :timeLength',
'meta_updated_name' => 'Updated :timeLength by :user',
'x_pages' => ':count Pages',
/**
* Search
*/
'search_results' => 'Search Results',
'search_clear' => 'Clear Search',
/**
* Books
*/
'books' => 'Books',
'books_empty' => 'No books have been created',
'books_popular' => 'Popular Books',
'books_popular_empty' => 'The most popular books will appear here.',
'books_create' => 'Create New Book',
'books_delete' => 'Delete Book',
'books_delete_explain' => 'This will delete the book with the name \':bookName\', All pages and chapters will be removed.',
'books_delete_confirmation' => 'Are you sure you want to delete this book?',
'books_edit' => 'Edit Book',
'books_form_book_name' => 'Book Name',
'books_save' => 'Save Book',
'books_permissions' => 'Book Permissions',
'books_empty_contents' => 'No pages or chapters have been created for this book.',
'books_empty_create_page' => 'Create a new page',
'books_empty_or' => 'or',
'books_empty_sort_current_book' => 'Sort the current book',
'books_empty_add_chapter' => 'Add a chapter',
'books_permissions_active' => 'Book Permissions Active',
'books_search_this' => 'Search this book',
'books_navigation' => 'Book Navigation',
/**
* Chapters
*/
'chapters_new' => 'New Chapter',
'chapters_create' => 'Create New Chapter',
'chapters_delete' => 'Delete Chapter',
'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\', All pages will be removed
and added directly to the parent book.',
'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
'chapters_edit' => 'Edit Chapter',
'chapters_save' => 'Save Chapter',
'chapters_move' => 'Move Chapter',
'chapters_permissions' => 'Chapter Permissions',
'chapters_empty' => 'No pages are currently in this chapter.',
'chapters_permissions_active' => 'Chapter Permissions Active',
/**
* Pages
*/
'pages_new' => 'New Page',
'pages_attachments' => 'Attachments',
'pages_navigation' => 'Page Navigation',
];

View File

@ -1,4 +1,4 @@
1@extends('public') @extends('public')
@section('header-buttons') @section('header-buttons')
<a href="{{ baseUrl("/login") }}"><i class="zmdi zmdi-sign-in"></i>{{ trans('auth.log_in') }}</a> <a href="{{ baseUrl("/login") }}"><i class="zmdi zmdi-sign-in"></i>{{ trans('auth.log_in') }}</a>

View File

@ -3,7 +3,7 @@
@section('content') @section('content')
<div class="container small" ng-non-bindable> <div class="container small" ng-non-bindable>
<h1>Create New Book</h1> <h1>{{ trans('entities.books_create') }}</h1>
<form action="{{ baseUrl("/books") }}" method="POST"> <form action="{{ baseUrl("/books") }}" method="POST">
@include('books/form') @include('books/form')
</form> </form>

View File

@ -3,15 +3,15 @@
@section('content') @section('content')
<div class="container small" ng-non-bindable> <div class="container small" ng-non-bindable>
<h1>Delete Book</h1> <h1>{{ trans('entities.books_delete') }}</h1>
<p>This will delete the book with the name '{{$book->name}}', All pages and chapters will be removed.</p> <p>{{ trans('entities.books_delete_explain', ['bookName' => $book->name]) }}</p>
<p class="text-neg">Are you sure you want to delete this book?</p> <p class="text-neg">{{ trans('entities.books_delete_confirmation') }}</p>
<form action="{{$book->getUrl()}}" method="POST"> <form action="{{$book->getUrl()}}" method="POST">
{!! csrf_field() !!} {!! csrf_field() !!}
<input type="hidden" name="_method" value="DELETE"> <input type="hidden" name="_method" value="DELETE">
<a href="{{$book->getUrl()}}" class="button">Cancel</a> <a href="{{$book->getUrl()}}" class="button">{{ trans('common.cancel') }}</a>
<button type="submit" class="button neg">Confirm</button> <button type="submit" class="button neg">{{ trans('common.confirm') }}</button>
</form> </form>
</div> </div>

View File

@ -3,7 +3,7 @@
@section('content') @section('content')
<div class="container small" ng-non-bindable> <div class="container small" ng-non-bindable>
<h1>Edit Book</h1> <h1>{{ trans('entities.books_edit') }}</h1>
<form action="{{ $book->getUrl() }}" method="POST"> <form action="{{ $book->getUrl() }}" method="POST">
<input type="hidden" name="_method" value="PUT"> <input type="hidden" name="_method" value="PUT">
@include('books/form', ['model' => $book]) @include('books/form', ['model' => $book])

View File

@ -1,16 +1,16 @@
{{ csrf_field() }} {{ csrf_field() }}
<div class="form-group title-input"> <div class="form-group title-input">
<label for="name">Book Name</label> <label for="name">{{ trans('common.name') }}</label>
@include('form/text', ['name' => 'name']) @include('form/text', ['name' => 'name'])
</div> </div>
<div class="form-group description-input"> <div class="form-group description-input">
<label for="description">Description</label> <label for="description">{{ trans('common.description') }}</label>
@include('form/textarea', ['name' => 'description']) @include('form/textarea', ['name' => 'description'])
</div> </div>
<div class="form-group"> <div class="form-group">
<a href="{{ back()->getTargetUrl() }}" class="button muted">Cancel</a> <a href="{{ back()->getTargetUrl() }}" class="button muted">{{ trans('common.cancel') }}</a>
<button type="submit" class="button pos">Save Book</button> <button type="submit" class="button pos">{{ trans('entities.books_save') }}</button>
</div> </div>

View File

@ -9,7 +9,7 @@
<div class="col-xs-11 faded"> <div class="col-xs-11 faded">
<div class="action-buttons"> <div class="action-buttons">
@if($currentUser->can('book-create-all')) @if($currentUser->can('book-create-all'))
<a href="{{ baseUrl("/books/create") }}" class="text-pos text-button"><i class="zmdi zmdi-plus"></i>Add new book</a> <a href="{{ baseUrl("/books/create") }}" class="text-pos text-button"><i class="zmdi zmdi-plus"></i>{{ trans('entities.books_create') }}</a>
@endif @endif
</div> </div>
</div> </div>
@ -21,7 +21,7 @@
<div class="container" ng-non-bindable> <div class="container" ng-non-bindable>
<div class="row"> <div class="row">
<div class="col-sm-7"> <div class="col-sm-7">
<h1>Books</h1> <h1>{{ trans('entities.books') }}</h1>
@if(count($books) > 0) @if(count($books) > 0)
@foreach($books as $book) @foreach($books as $book)
@include('books/list-item', ['book' => $book]) @include('books/list-item', ['book' => $book])
@ -29,27 +29,27 @@
@endforeach @endforeach
{!! $books->render() !!} {!! $books->render() !!}
@else @else
<p class="text-muted">No books have been created.</p> <p class="text-muted">{{ trans('entities.books_empty') }}</p>
@if(userCan('books-create-all')) @if(userCan('books-create-all'))
<a href="{{ baseUrl("/books/create") }}" class="text-pos"><i class="zmdi zmdi-edit"></i>Create one now</a> <a href="{{ baseUrl("/books/create") }}" class="text-pos"><i class="zmdi zmdi-edit"></i>{{ trans('entities.create_one_now') }}</a>
@endif @endif
@endif @endif
</div> </div>
<div class="col-sm-4 col-sm-offset-1"> <div class="col-sm-4 col-sm-offset-1">
<div id="recents"> <div id="recents">
@if($recents) @if($recents)
<div class="margin-top large">&nbsp;</div> <div class="margin-top">&nbsp;</div>
<h3>Recently Viewed</h3> <h3>{{ trans('entities.recently_viewed') }}</h3>
@include('partials/entity-list', ['entities' => $recents]) @include('partials/entity-list', ['entities' => $recents])
@endif @endif
</div> </div>
<div class="margin-top large">&nbsp;</div> <div class="margin-top large">&nbsp;</div>
<div id="popular"> <div id="popular">
<h3>Popular Books</h3> <h3>{{ trans('entities.books_popular') }}</h3>
@if(count($popular) > 0) @if(count($popular) > 0)
@include('partials/entity-list', ['entities' => $popular]) @include('partials/entity-list', ['entities' => $popular])
@else @else
<p class="text-muted">The most popular books will appear here.</p> <p class="text-muted">{{ trans('entities.books_popular_empty') }}</p>
@endif @endif
</div> </div>
</div> </div>

View File

@ -16,7 +16,7 @@
<div class="container" ng-non-bindable> <div class="container" ng-non-bindable>
<h1>Book Permissions</h1> <h1>{{ trans('entities.books_permissions') }}</h1>
@include('form/restriction-form', ['model' => $book]) @include('form/restriction-form', ['model' => $book])
</div> </div>

View File

@ -8,26 +8,26 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="action-buttons faded"> <div class="action-buttons faded">
@if(userCan('page-create', $book)) @if(userCan('page-create', $book))
<a href="{{ $book->getUrl('/page/create') }}" class="text-pos text-button"><i class="zmdi zmdi-plus"></i> New Page</a> <a href="{{ $book->getUrl('/page/create') }}" class="text-pos text-button"><i class="zmdi zmdi-plus"></i>{{ trans('entities.pages_new') }}</a>
@endif @endif
@if(userCan('chapter-create', $book)) @if(userCan('chapter-create', $book))
<a href="{{ $book->getUrl('/chapter/create') }}" class="text-pos text-button"><i class="zmdi zmdi-plus"></i> New Chapter</a> <a href="{{ $book->getUrl('/chapter/create') }}" class="text-pos text-button"><i class="zmdi zmdi-plus"></i>{{ trans('entities.chapters_new') }}</a>
@endif @endif
@if(userCan('book-update', $book)) @if(userCan('book-update', $book))
<a href="{{$book->getEditUrl()}}" class="text-primary text-button"><i class="zmdi zmdi-edit"></i>Edit</a> <a href="{{$book->getEditUrl()}}" class="text-primary text-button"><i class="zmdi zmdi-edit"></i>{{ trans('entities.edit') }}</a>
@endif @endif
@if(userCan('book-update', $book) || userCan('restrictions-manage', $book) || userCan('book-delete', $book)) @if(userCan('book-update', $book) || userCan('restrictions-manage', $book) || userCan('book-delete', $book))
<div dropdown class="dropdown-container"> <div dropdown class="dropdown-container">
<a dropdown-toggle class="text-primary text-button"><i class="zmdi zmdi-more-vert"></i></a> <a dropdown-toggle class="text-primary text-button"><i class="zmdi zmdi-more-vert"></i></a>
<ul> <ul>
@if(userCan('book-update', $book)) @if(userCan('book-update', $book))
<li><a href="{{ $book->getUrl('/sort') }}" class="text-primary"><i class="zmdi zmdi-sort"></i>Sort</a></li> <li><a href="{{ $book->getUrl('/sort') }}" class="text-primary"><i class="zmdi zmdi-sort"></i>{{ trans('entities.sort') }}</a></li>
@endif @endif
@if(userCan('restrictions-manage', $book)) @if(userCan('restrictions-manage', $book))
<li><a href="{{ $book->getUrl('/permissions') }}" class="text-primary"><i class="zmdi zmdi-lock-outline"></i>Permissions</a></li> <li><a href="{{ $book->getUrl('/permissions') }}" class="text-primary"><i class="zmdi zmdi-lock-outline"></i>{{ trans('entities.permissions') }}</a></li>
@endif @endif
@if(userCan('book-delete', $book)) @if(userCan('book-delete', $book))
<li><a href="{{ $book->getUrl('/delete') }}" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete</a></li> <li><a href="{{ $book->getUrl('/delete') }}" class="text-neg"><i class="zmdi zmdi-delete"></i>{{ trans('entities.delete') }}</a></li>
@endif @endif
</ul> </ul>
</div> </div>
@ -59,23 +59,19 @@
<hr> <hr>
@endforeach @endforeach
@else @else
<p class="text-muted">No pages or chapters have been created for this book.</p> <p class="text-muted">{{ trans('entities.books_empty_contents') }}</p>
<p> <p>
<a href="{{ $book->getUrl('/page/create') }}" class="text-page"><i class="zmdi zmdi-file-text"></i>Create a new page</a> <a href="{{ $book->getUrl('/page/create') }}" class="text-page"><i class="zmdi zmdi-file-text"></i>{{ trans('entities.books_empty_create_page') }}</a>
&nbsp;&nbsp;<em class="text-muted">-or-</em>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<em class="text-muted">-{{ trans('entities.books_empty_or') }}-</em>&nbsp;&nbsp;&nbsp;
<a href="{{ $book->getUrl('/chapter/create') }}" class="text-chapter"><i class="zmdi zmdi-collection-bookmark"></i>Add a chapter</a> <a href="{{ $book->getUrl('/chapter/create') }}" class="text-chapter"><i class="zmdi zmdi-collection-bookmark"></i>{{ trans('entities.books_empty_add_chapter') }}</a>
</p> </p>
<hr> <hr>
@endif @endif
<p class="text-muted small"> @include('partials.entity-meta', ['entity' => $book])
Created {{$book->created_at->diffForHumans()}} @if($book->createdBy) by <a href="{{ $book->createdBy->getProfileUrl() }}">{{$book->createdBy->name}}</a> @endif
<br>
Last Updated {{$book->updated_at->diffForHumans()}} @if($book->updatedBy) by <a href="{{ $book->updatedBy->getProfileUrl() }}">{{$book->updatedBy->name}}</a> @endif
</p>
</div> </div>
</div> </div>
<div class="search-results" ng-cloak ng-show="searching"> <div class="search-results" ng-cloak ng-show="searching">
<h3 class="text-muted">Search Results <a ng-if="searching" ng-click="clearSearch()" class="text-small"><i class="zmdi zmdi-close"></i>Clear Search</a></h3> <h3 class="text-muted">{{ trans('entities.search_results') }} <a ng-if="searching" ng-click="clearSearch()" class="text-small"><i class="zmdi zmdi-close"></i>{{ trans('entities.search_clear') }}</a></h3>
<div ng-if="!searchResults"> <div ng-if="!searchResults">
@include('partials/loading-icon') @include('partials/loading-icon')
</div> </div>
@ -90,21 +86,21 @@
@if($book->restricted) @if($book->restricted)
<p class="text-muted"> <p class="text-muted">
@if(userCan('restrictions-manage', $book)) @if(userCan('restrictions-manage', $book))
<a href="{{ $book->getUrl('/permissions') }}"><i class="zmdi zmdi-lock-outline"></i>Book Permissions Active</a> <a href="{{ $book->getUrl('/permissions') }}"><i class="zmdi zmdi-lock-outline"></i>{{ trans('entities.books_permissions_active') }}</a>
@else @else
<i class="zmdi zmdi-lock-outline"></i>Book Permissions Active <i class="zmdi zmdi-lock-outline"></i>{{ trans('entities.books_permissions_active') }}
@endif @endif
</p> </p>
@endif @endif
<div class="search-box"> <div class="search-box">
<form ng-submit="searchBook($event)"> <form ng-submit="searchBook($event)">
<input ng-model="searchTerm" ng-change="checkSearchForm()" type="text" name="term" placeholder="Search This Book"> <input ng-model="searchTerm" ng-change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.books_search_this') }}">
<button type="submit"><i class="zmdi zmdi-search"></i></button> <button type="submit"><i class="zmdi zmdi-search"></i></button>
<button ng-if="searching" ng-click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button> <button ng-if="searching" ng-click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
</form> </form>
</div> </div>
<div class="activity anim fadeIn"> <div class="activity anim fadeIn">
<h3>Recent Activity</h3> <h3>{{ trans('entities.recent_activity') }}</h3>
@include('partials/activity-list', ['activity' => Activity::entityActivity($book, 20, 0)]) @include('partials/activity-list', ['activity' => Activity::entityActivity($book, 20, 0)])
</div> </div>
</div> </div>

View File

@ -3,7 +3,7 @@
@section('content') @section('content')
<div class="container small" ng-non-bindable> <div class="container small" ng-non-bindable>
<h1>Create New Chapter</h1> <h1>{{ trans('entities.chapters_create') }}</h1>
<form action="{{ $book->getUrl('/chapter/create') }}" method="POST"> <form action="{{ $book->getUrl('/chapter/create') }}" method="POST">
@include('chapters/form') @include('chapters/form')
</form> </form>

View File

@ -3,16 +3,15 @@
@section('content') @section('content')
<div class="container small" ng-non-bindable> <div class="container small" ng-non-bindable>
<h1>Delete Chapter</h1> <h1>{{ trans('entities.chapters_delete') }}</h1>
<p>This will delete the chapter with the name '{{$chapter->name}}', All pages will be removed <p>{{ trans('entities.chapters_delete_explain', ['chapterName' => $chapter->name]) }}</p>
and added directly to the book.</p> <p class="text-neg">{{ trans('entities.chapters_delete_confirm') }}</p>
<p class="text-neg">Are you sure you want to delete this chapter?</p>
<form action="{{ $chapter->getUrl() }}" method="POST"> <form action="{{ $chapter->getUrl() }}" method="POST">
{!! csrf_field() !!} {!! csrf_field() !!}
<input type="hidden" name="_method" value="DELETE"> <input type="hidden" name="_method" value="DELETE">
<a href="{{ $chapter->getUrl() }}" class="button primary">Cancel</a> <a href="{{ $chapter->getUrl() }}" class="button primary">{{ trans('common.cancel') }}</a>
<button type="submit" class="button neg">Confirm</button> <button type="submit" class="button neg">{{ trans('common.confirm') }}</button>
</form> </form>
</div> </div>

View File

@ -3,7 +3,7 @@
@section('content') @section('content')
<div class="container small" ng-non-bindable> <div class="container small" ng-non-bindable>
<h1>Edit Chapter</h1> <h1>{{ trans('entities.chapters_edit') }}</h1>
<form action="{{ $chapter->getUrl() }}" method="POST"> <form action="{{ $chapter->getUrl() }}" method="POST">
<input type="hidden" name="_method" value="PUT"> <input type="hidden" name="_method" value="PUT">
@include('chapters/form', ['model' => $chapter]) @include('chapters/form', ['model' => $chapter])

View File

@ -2,16 +2,16 @@
{!! csrf_field() !!} {!! csrf_field() !!}
<div class="form-group title-input"> <div class="form-group title-input">
<label for="name">Chapter Name</label> <label for="name">{{ trans('common.name') }}</label>
@include('form/text', ['name' => 'name']) @include('form/text', ['name' => 'name'])
</div> </div>
<div class="form-group description-input"> <div class="form-group description-input">
<label for="description">Description</label> <label for="description">{{ trans('common.description') }}</label>
@include('form/textarea', ['name' => 'description']) @include('form/textarea', ['name' => 'description'])
</div> </div>
<div class="form-group"> <div class="form-group">
<a href="{{ back()->getTargetUrl() }}" class="button muted">Cancel</a> <a href="{{ back()->getTargetUrl() }}" class="button muted">{{ trans('common.cancel') }}</a>
<button type="submit" class="button pos">Save Chapter</button> <button type="submit" class="button pos">{{ trans('entities.chapters_save') }}</button>
</div> </div>

View File

@ -17,7 +17,7 @@
@endif @endif
@if(!isset($hidePages) && count($chapter->pages) > 0) @if(!isset($hidePages) && count($chapter->pages) > 0)
<p class="text-muted chapter-toggle"><i class="zmdi zmdi-caret-right"></i> <i class="zmdi zmdi-file-text"></i> <span>{{ count($chapter->pages) }} Pages</span></p> <p class="text-muted chapter-toggle"><i class="zmdi zmdi-caret-right"></i> <i class="zmdi zmdi-file-text"></i> <span>{{ trans('entities.x_pages', ['count' => $chapter->pages->count()]) }}</span></p>
<div class="inset-list"> <div class="inset-list">
@foreach($chapter->pages as $page) @foreach($chapter->pages as $page)
<h5 class="@if($page->draft) draft @endif"><a href="{{ $page->getUrl() }}" class="text-page @if($page->draft) draft @endif"><i class="zmdi zmdi-file-text"></i>{{$page->name}}</a></h5> <h5 class="@if($page->draft) draft @endif"><a href="{{ $page->getUrl() }}" class="text-page @if($page->draft) draft @endif"><i class="zmdi zmdi-file-text"></i>{{$page->name}}</a></h5>

View File

@ -17,7 +17,7 @@
</div> </div>
<div class="container"> <div class="container">
<h1>Move Chapter <small class="subheader">{{$chapter->name}}</small></h1> <h1>{{ trans('entities.chapters_move') }} <small class="subheader">{{$chapter->name}}</small></h1>
<form action="{{ $chapter->getUrl('/move') }}" method="POST"> <form action="{{ $chapter->getUrl('/move') }}" method="POST">
{!! csrf_field() !!} {!! csrf_field() !!}
@ -25,8 +25,8 @@
@include('partials/entity-selector', ['name' => 'entity_selection', 'selectorSize' => 'large', 'entityTypes' => 'book']) @include('partials/entity-selector', ['name' => 'entity_selection', 'selectorSize' => 'large', 'entityTypes' => 'book'])
<a href="{{ $chapter->getUrl() }}" class="button muted">Cancel</a> <a href="{{ $chapter->getUrl() }}" class="button muted">{{ trans('common.cancel') }}</a>
<button type="submit" class="button pos">Move Chapter</button> <button type="submit" class="button pos">{{ trans('entities.chapters_move') }}</button>
</form> </form>
</div> </div>

View File

@ -17,7 +17,7 @@
</div> </div>
<div class="container" ng-non-bindable> <div class="container" ng-non-bindable>
<h1>Chapter Permissions</h1> <h1>{{ trans('entities.chapters_permissions') }}</h1>
@include('form/restriction-form', ['model' => $chapter]) @include('form/restriction-form', ['model' => $chapter])
</div> </div>

View File

@ -13,23 +13,23 @@
<div class="col-sm-4 faded"> <div class="col-sm-4 faded">
<div class="action-buttons"> <div class="action-buttons">
@if(userCan('page-create', $chapter)) @if(userCan('page-create', $chapter))
<a href="{{ $chapter->getUrl('/create-page') }}" class="text-pos text-button"><i class="zmdi zmdi-plus"></i>New Page</a> <a href="{{ $chapter->getUrl('/create-page') }}" class="text-pos text-button"><i class="zmdi zmdi-plus"></i>{{ trans('entities.pages_new') }}</a>
@endif @endif
@if(userCan('chapter-update', $chapter)) @if(userCan('chapter-update', $chapter))
<a href="{{ $chapter->getUrl('/edit') }}" class="text-primary text-button"><i class="zmdi zmdi-edit"></i>Edit</a> <a href="{{ $chapter->getUrl('/edit') }}" class="text-primary text-button"><i class="zmdi zmdi-edit"></i>{{ trans('entities.edit') }}</a>
@endif @endif
@if(userCan('chapter-update', $chapter) || userCan('restrictions-manage', $chapter) || userCan('chapter-delete', $chapter)) @if(userCan('chapter-update', $chapter) || userCan('restrictions-manage', $chapter) || userCan('chapter-delete', $chapter))
<div dropdown class="dropdown-container"> <div dropdown class="dropdown-container">
<a dropdown-toggle class="text-primary text-button"><i class="zmdi zmdi-more-vert"></i></a> <a dropdown-toggle class="text-primary text-button"><i class="zmdi zmdi-more-vert"></i></a>
<ul> <ul>
@if(userCan('chapter-update', $chapter)) @if(userCan('chapter-update', $chapter))
<li><a href="{{ $chapter->getUrl('/move') }}" class="text-primary"><i class="zmdi zmdi-folder"></i>Move</a></li> <li><a href="{{ $chapter->getUrl('/move') }}" class="text-primary"><i class="zmdi zmdi-folder"></i>{{ trans('entities.move') }}</a></li>
@endif @endif
@if(userCan('restrictions-manage', $chapter)) @if(userCan('restrictions-manage', $chapter))
<li><a href="{{ $chapter->getUrl('/permissions') }}" class="text-primary"><i class="zmdi zmdi-lock-outline"></i>Permissions</a></li> <li><a href="{{ $chapter->getUrl('/permissions') }}" class="text-primary"><i class="zmdi zmdi-lock-outline"></i>{{ trans('entities.permissions') }}</a></li>
@endif @endif
@if(userCan('chapter-delete', $chapter)) @if(userCan('chapter-delete', $chapter))
<li><a href="{{ $chapter->getUrl('/delete') }}" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete</a></li> <li><a href="{{ $chapter->getUrl('/delete') }}" class="text-neg"><i class="zmdi zmdi-delete"></i>{{ trans('entities.delete') }}</a></li>
@endif @endif
</ul> </ul>
</div> </div>
@ -57,26 +57,22 @@
</div> </div>
@else @else
<hr> <hr>
<p class="text-muted">No pages are currently in this chapter.</p> <p class="text-muted">{{ trans('entities.chapters_empty') }}</p>
<p> <p>
@if(userCan('page-create', $chapter)) @if(userCan('page-create', $chapter))
<a href="{{ $chapter->getUrl('/create-page') }}" class="text-page"><i class="zmdi zmdi-file-text"></i>Create a new page</a> <a href="{{ $chapter->getUrl('/create-page') }}" class="text-page"><i class="zmdi zmdi-file-text"></i>{{ trans('entities.books_empty_create_page') }}</a>
@endif @endif
@if(userCan('page-create', $chapter) && userCan('book-update', $book)) @if(userCan('page-create', $chapter) && userCan('book-update', $book))
&nbsp;&nbsp;<em class="text-muted">-or-</em>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<em class="text-muted">-{{ trans('entities.books_empty_or') }}-</em>&nbsp;&nbsp;&nbsp;
@endif @endif
@if(userCan('book-update', $book)) @if(userCan('book-update', $book))
<a href="{{ $book->getUrl('/sort') }}" class="text-book"><i class="zmdi zmdi-book"></i>Sort the current book</a> <a href="{{ $book->getUrl('/sort') }}" class="text-book"><i class="zmdi zmdi-book"></i>{{ trans('entities.books_empty_sort_current_book') }}</a>
@endif @endif
</p> </p>
<hr> <hr>
@endif @endif
<p class="text-muted small"> @include('partials.entity-meta', ['entity' => $chapter])
Created {{ $chapter->created_at->diffForHumans() }} @if($chapter->createdBy) by <a href="{{ $chapter->createdBy->getProfileUrl() }}">{{ $chapter->createdBy->name}}</a> @endif
<br>
Last Updated {{ $chapter->updated_at->diffForHumans() }} @if($chapter->updatedBy) by <a href="{{ $chapter->updatedBy->getProfileUrl() }}">{{ $chapter->updatedBy->name}}</a> @endif
</p>
</div> </div>
<div class="col-md-3 col-md-offset-1"> <div class="col-md-3 col-md-offset-1">
<div class="margin-top large"></div> <div class="margin-top large"></div>
@ -84,19 +80,20 @@
<div class="text-muted"> <div class="text-muted">
@if($book->restricted) @if($book->restricted)
<p class="text-muted">
@if(userCan('restrictions-manage', $book)) @if(userCan('restrictions-manage', $book))
<a href="{{ $book->getUrl('/permissions') }}"><i class="zmdi zmdi-lock-outline"></i>Book Permissions Active</a> <a href="{{ $book->getUrl('/permissions') }}"><i class="zmdi zmdi-lock-outline"></i>{{ trans('entities.books_permissions_active') }}</a>
@else @else
<i class="zmdi zmdi-lock-outline"></i>Book Permissions Active <i class="zmdi zmdi-lock-outline"></i>{{ trans('entities.books_permissions_active') }}
@endif @endif
<br> </p>
@endif @endif
@if($chapter->restricted) @if($chapter->restricted)
@if(userCan('restrictions-manage', $chapter)) @if(userCan('restrictions-manage', $chapter))
<a href="{{ $chapter->getUrl('/permissions') }}"><i class="zmdi zmdi-lock-outline"></i>Chapter Permissions Active</a> <a href="{{ $chapter->getUrl('/permissions') }}"><i class="zmdi zmdi-lock-outline"></i>{{ trans('entities.chapters_permissions_active') }}</a>
@else @else
<i class="zmdi zmdi-lock-outline"></i>Chapter Permissions Active <i class="zmdi zmdi-lock-outline"></i>{{ trans('entities.chapters_permissions_active') }}
@endif @endif
@endif @endif
</div> </div>

View File

@ -72,11 +72,7 @@
<hr> <hr>
<p class="text-muted small"> @include('partials.entity-meta', ['entity' => $page])
Created {{ $page->created_at->diffForHumans() }} @if($page->createdBy) by <a href="{{ $page->createdBy->getProfileUrl() }}">{{$page->createdBy->name}}</a> @endif
<br>
Last Updated {{ $page->updated_at->diffForHumans() }} @if($page->updatedBy) by <a href="{{ $page->updatedBy->getProfileUrl() }}">{{$page->updatedBy->name}}</a> @endif
</p>
</div> </div>
</div> </div>

View File

@ -2,7 +2,7 @@
<div class="book-tree" ng-non-bindable> <div class="book-tree" ng-non-bindable>
@if (isset($page) && $page->attachments->count() > 0) @if (isset($page) && $page->attachments->count() > 0)
<h6 class="text-muted">Attachments</h6> <h6 class="text-muted">{{ trans('entities.pages_attachments') }}</h6>
@foreach($page->attachments as $attachment) @foreach($page->attachments as $attachment)
<div class="attachment"> <div class="attachment">
<a href="{{ $attachment->getUrl() }}" @if($attachment->external) target="_blank" @endif><i class="zmdi zmdi-{{ $attachment->external ? 'open-in-new' : 'file' }}"></i>{{ $attachment->name }}</a> <a href="{{ $attachment->getUrl() }}" @if($attachment->external) target="_blank" @endif><i class="zmdi zmdi-{{ $attachment->external ? 'open-in-new' : 'file' }}"></i>{{ $attachment->name }}</a>
@ -11,7 +11,7 @@
@endif @endif
@if (isset($pageNav) && $pageNav) @if (isset($pageNav) && $pageNav)
<h6 class="text-muted">Page Navigation</h6> <h6 class="text-muted">{{ trans('entities.pages_navigation') }}</h6>
<div class="sidebar-page-nav menu"> <div class="sidebar-page-nav menu">
@foreach($pageNav as $navItem) @foreach($pageNav as $navItem)
<li class="page-nav-item {{ $navItem['nodeName'] }}"> <li class="page-nav-item {{ $navItem['nodeName'] }}">
@ -21,7 +21,7 @@
</div> </div>
@endif @endif
<h6 class="text-muted">Book Navigation</h6> <h6 class="text-muted">{{ trans('entities.books_navigation') }}</h6>
<ul class="sidebar-page-list menu"> <ul class="sidebar-page-list menu">
<li class="book-header"><a href="{{ $book->getUrl() }}" class="book {{ $current->matches($book)? 'selected' : '' }}"><i class="zmdi zmdi-book"></i>{{$book->name}}</a></li> <li class="book-header"><a href="{{ $book->getUrl() }}" class="book {{ $current->matches($book)? 'selected' : '' }}"><i class="zmdi zmdi-book"></i>{{$book->name}}</a></li>
@ -34,7 +34,7 @@
@if($bookChild->isA('chapter') && count($bookChild->pages) > 0) @if($bookChild->isA('chapter') && count($bookChild->pages) > 0)
<p class="text-muted chapter-toggle @if($bookChild->matchesOrContains($current)) open @endif"> <p class="text-muted chapter-toggle @if($bookChild->matchesOrContains($current)) open @endif">
<i class="zmdi zmdi-caret-right"></i> <i class="zmdi zmdi-file-text"></i> <span>{{ count($bookChild->pages) }} Pages</span> <i class="zmdi zmdi-caret-right"></i> <i class="zmdi zmdi-file-text"></i> <span>{{ trans('entities.x_pages', ['count' => $bookChild->pages->count()]) }}</span>
</p> </p>
<ul class="menu sub-menu inset-list @if($bookChild->matchesOrContains($current)) open @endif"> <ul class="menu sub-menu inset-list @if($bookChild->matchesOrContains($current)) open @endif">
@foreach($bookChild->pages as $childPage) @foreach($bookChild->pages as $childPage)

View File

@ -0,0 +1,13 @@
<p class="text-muted small">
@if ($entity->createdBy)
{!! trans('entities.meta_created_name', ['timeLength' => $entity->created_at->diffForHumans(), 'user' => "<a href='{$entity->createdBy->getProfileUrl()}'>".htmlentities($entity->createdBy->name). "</a>"]) !!}
@else
{{ trans('entities.meta_created', ['timeLength' => $entity->created_at->diffForHumans()]) }}
@endif
<br>
@if ($entity->updatedBy)
{!! trans('entities.meta_updated_name', ['timeLength' => $entity->updated_at->diffForHumans(), 'user' => "<a href='{$entity->updatedBy->getProfileUrl()}'>".htmlentities($entity->updatedBy->name). "</a>"]) !!}
@else
{{ trans('entities.meta_updated', ['timeLength' => $entity->updated_at->diffForHumans()]) }}
@endif
</p>

View File

@ -245,7 +245,7 @@ class AuthTest extends TestCase
{ {
$this->setSettings(['registration-enabled' => 'true']); $this->setSettings(['registration-enabled' => 'true']);
$this->visit('/password/email') $this->visit('/password/email')
->seeLink('Sign in') ->seeLink('Log in')
->seeLink('Sign up'); ->seeLink('Sign up');
} }
@ -260,6 +260,6 @@ class AuthTest extends TestCase
return $this->visit('/login') return $this->visit('/login')
->type($email, '#email') ->type($email, '#email')
->type($password, '#password') ->type($password, '#password')
->press('Sign In'); ->press('Log In');
} }
} }

View File

@ -36,11 +36,11 @@ class LdapTest extends \TestCase
->see('Username') ->see('Username')
->type($this->mockUser->name, '#username') ->type($this->mockUser->name, '#username')
->type($this->mockUser->password, '#password') ->type($this->mockUser->password, '#password')
->press('Sign In') ->press('Log In')
->seePageIs('/login')->see('Please enter an email to use for this account.'); ->seePageIs('/login')->see('Please enter an email to use for this account.');
$this->type($this->mockUser->email, '#email') $this->type($this->mockUser->email, '#email')
->press('Sign In') ->press('Log In')
->seePageIs('/') ->seePageIs('/')
->see($this->mockUser->name) ->see($this->mockUser->name)
->seeInDatabase('users', ['email' => $this->mockUser->email, 'email_confirmed' => false, 'external_auth_id' => $this->mockUser->name]); ->seeInDatabase('users', ['email' => $this->mockUser->email, 'email_confirmed' => false, 'external_auth_id' => $this->mockUser->name]);
@ -64,7 +64,7 @@ class LdapTest extends \TestCase
->see('Username') ->see('Username')
->type($this->mockUser->name, '#username') ->type($this->mockUser->name, '#username')
->type($this->mockUser->password, '#password') ->type($this->mockUser->password, '#password')
->press('Sign In') ->press('Log In')
->seePageIs('/') ->seePageIs('/')
->see($this->mockUser->name) ->see($this->mockUser->name)
->seeInDatabase('users', ['email' => $this->mockUser->email, 'email_confirmed' => false, 'external_auth_id' => $ldapDn]); ->seeInDatabase('users', ['email' => $this->mockUser->email, 'email_confirmed' => false, 'external_auth_id' => $ldapDn]);
@ -87,7 +87,7 @@ class LdapTest extends \TestCase
->see('Username') ->see('Username')
->type($this->mockUser->name, '#username') ->type($this->mockUser->name, '#username')
->type($this->mockUser->password, '#password') ->type($this->mockUser->password, '#password')
->press('Sign In') ->press('Log In')
->seePageIs('/login')->see('These credentials do not match our records.') ->seePageIs('/login')->see('These credentials do not match our records.')
->dontSeeInDatabase('users', ['external_auth_id' => $this->mockUser->name]); ->dontSeeInDatabase('users', ['external_auth_id' => $this->mockUser->name]);
} }

View File

@ -136,7 +136,7 @@ class EntityTest extends TestCase
$this->asAdmin() $this->asAdmin()
->visit('/books') ->visit('/books')
// Choose to create a book // Choose to create a book
->click('Add new book') ->click('Create New Book')
->seePageIs('/books/create') ->seePageIs('/books/create')
// Fill out form & save // Fill out form & save
->type($book->name, '#name') ->type($book->name, '#name')

View File

@ -211,7 +211,7 @@ class RolesTest extends TestCase
$this->checkAccessPermission('book-create-all', [ $this->checkAccessPermission('book-create-all', [
'/books/create' '/books/create'
], [ ], [
'/books' => 'Add new book' '/books' => 'Create New Book'
]); ]);
$this->visit('/books/create') $this->visit('/books/create')