diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index 230068884..52de19b5b 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -450,6 +450,24 @@ class PageController extends Controller ]); } + /** + * Show the view to choose a new parent to move a page into. + * @param $bookSlug + * @param $pageSlug + * @return mixed + * @throws NotFoundException + */ + public function showMove($bookSlug, $pageSlug) + { + $book = $this->bookRepo->getBySlug($bookSlug); + $page = $this->pageRepo->getBySlug($pageSlug, $book->id); + $this->checkOwnablePermission('page-update', $page); + return view('pages/move', [ + 'book' => $book, + 'page' => $page + ]); + } + /** * Set the permissions for this page. * @param $bookSlug diff --git a/app/Http/routes.php b/app/Http/routes.php index 9f226efd7..90bcd593f 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -34,6 +34,7 @@ Route::group(['middleware' => 'auth'], function () { Route::get('/{bookSlug}/page/{pageSlug}/export/html', 'PageController@exportHtml'); Route::get('/{bookSlug}/page/{pageSlug}/export/plaintext', 'PageController@exportPlainText'); Route::get('/{bookSlug}/page/{pageSlug}/edit', 'PageController@edit'); + Route::get('/{bookSlug}/page/{pageSlug}/move', 'PageController@showMove'); Route::get('/{bookSlug}/page/{pageSlug}/delete', 'PageController@showDelete'); Route::get('/{bookSlug}/draft/{pageId}/delete', 'PageController@showDeleteDraft'); Route::get('/{bookSlug}/page/{pageSlug}/permissions', 'PageController@showRestrict'); diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js index 43d55f092..54df2d2bf 100644 --- a/resources/assets/js/directives.js +++ b/resources/assets/js/directives.js @@ -149,7 +149,10 @@ module.exports = function (ngApp, events) { }; }]); - + /** + * Dropdown + * Provides some simple logic to create small dropdown menus + */ ngApp.directive('dropdown', [function () { return { restrict: 'A', @@ -166,6 +169,10 @@ module.exports = function (ngApp, events) { }; }]); + /** + * TinyMCE + * An angular wrapper around the tinyMCE editor. + */ ngApp.directive('tinymce', ['$timeout', function ($timeout) { return { restrict: 'A', @@ -231,6 +238,10 @@ module.exports = function (ngApp, events) { } }]); + /** + * Markdown input + * Handles the logic for just the editor input field. + */ ngApp.directive('markdownInput', ['$timeout', function ($timeout) { return { restrict: 'A', @@ -263,6 +274,10 @@ module.exports = function (ngApp, events) { } }]); + /** + * Markdown Editor + * Handles all functionality of the markdown editor. + */ ngApp.directive('markdownEditor', ['$timeout', function ($timeout) { return { restrict: 'A', @@ -342,6 +357,11 @@ module.exports = function (ngApp, events) { } }]); + /** + * Page Editor Toolbox + * Controls all functionality for the sliding toolbox + * on the page edit view. + */ ngApp.directive('toolbox', [function () { return { restrict: 'A', @@ -378,6 +398,11 @@ module.exports = function (ngApp, events) { } }]); + /** + * Tag Autosuggestions + * Listens to child inputs and provides autosuggestions depending on field type + * and input. Suggestions provided by server. + */ ngApp.directive('tagAutosuggestions', ['$http', function ($http) { return { restrict: 'A', @@ -557,6 +582,17 @@ module.exports = function (ngApp, events) { } } }]); + + + ngApp.directive('entitySelector', ['$http', function ($http) { + return { + restrict: 'A', + link: function (scope, element, attrs) { + scope.loading = true; + + } + }; + }]); }; diff --git a/resources/assets/sass/_text.scss b/resources/assets/sass/_text.scss index 0095b91cb..493933135 100644 --- a/resources/assets/sass/_text.scss +++ b/resources/assets/sass/_text.scss @@ -3,7 +3,7 @@ */ h1 { - font-size: 3.625em; + font-size: 3.425em; line-height: 1.22222222em; margin-top: 0.48888889em; margin-bottom: 0.48888889em; @@ -33,10 +33,10 @@ h1, h2, h3, h4 { display: block; color: #555; .subheader { - display: block; + //display: block; font-size: 0.5em; line-height: 1em; - color: lighten($text-dark, 16%); + color: lighten($text-dark, 32%); } } diff --git a/resources/views/books/list-item.blade.php b/resources/views/books/list-item.blade.php index 5807bf461..d3e0ef56b 100644 --- a/resources/views/books/list-item.blade.php +++ b/resources/views/books/list-item.blade.php @@ -1,4 +1,4 @@ -
+

{{$book->name}}

@if(isset($book->searchSnippet))

{!! $book->searchSnippet !!}

diff --git a/resources/views/chapters/list-item.blade.php b/resources/views/chapters/list-item.blade.php index d5ac46338..71225e987 100644 --- a/resources/views/chapters/list-item.blade.php +++ b/resources/views/chapters/list-item.blade.php @@ -1,4 +1,4 @@ -
+

{{ $chapter->name }} diff --git a/resources/views/pages/list-item.blade.php b/resources/views/pages/list-item.blade.php index 87a7eabe5..100c1de48 100644 --- a/resources/views/pages/list-item.blade.php +++ b/resources/views/pages/list-item.blade.php @@ -1,4 +1,4 @@ -
+

{{ $page->name }}

@@ -11,11 +11,11 @@ @if(isset($style) && $style === 'detailed')
-
+
Created {{$page->created_at->diffForHumans()}} @if($page->createdBy)by {{$page->createdBy->name}}@endif
Last updated {{ $page->updated_at->diffForHumans() }} @if($page->updatedBy)by {{$page->updatedBy->name}} @endif
-
+
{{ $page->book->getShortName(30) }}
@if($page->chapter) diff --git a/resources/views/pages/move.blade.php b/resources/views/pages/move.blade.php new file mode 100644 index 000000000..2ccbdb438 --- /dev/null +++ b/resources/views/pages/move.blade.php @@ -0,0 +1,35 @@ +@extends('base') + +@section('content') + +
+
+
+ +
+
+
+ +
+

Move Page {{$page->name}}

+ +
+ +
@include('partials/loading-icon')
+
+
+ +@stop diff --git a/resources/views/pages/show.blade.php b/resources/views/pages/show.blade.php index 4dbab0e29..8b9b63492 100644 --- a/resources/views/pages/show.blade.php +++ b/resources/views/pages/show.blade.php @@ -30,6 +30,7 @@ @if(userCan('page-update', $page)) Revisions Edit + Move @endif @if(userCan('restrictions-manage', $page)) Permissions