]> BookStack Code Mirror - bookstack/commitdiff
Merge branch 'master' into 2019-design
authorDan Brown <redacted>
Sun, 10 Mar 2019 21:40:02 +0000 (21:40 +0000)
committerDan Brown <redacted>
Sun, 10 Mar 2019 21:40:02 +0000 (21:40 +0000)
1  2 
app/Http/Controllers/PageController.php
app/Settings/SettingService.php
app/helpers.php
resources/assets/js/components/wysiwyg-editor.js
resources/assets/sass/_pages.scss
resources/views/common/header.blade.php
resources/views/pages/show.blade.php
resources/views/users/edit.blade.php

index 7ebf262097a46d06b68ed9c28335e3bf177d11ab,d95e02470bee10c63d436421ac7a53cdcff6577c..16a7d5a5e45df6df1094bfa14df63fb17cb278f3
@@@ -616,9 -643,9 +616,9 @@@ class PageController extends Controlle
      public function showCopy($bookSlug, $pageSlug)
      {
          $page = $this->pageRepo->getPageBySlug($pageSlug, $bookSlug);
-         $this->checkOwnablePermission('page-update', $page);
+         $this->checkOwnablePermission('page-view', $page);
          session()->flashInput(['name' => $page->name]);
 -        return view('pages/copy', [
 +        return view('pages.copy', [
              'book' => $page->book,
              'page' => $page
          ]);
Simple merge
diff --cc app/helpers.php
Simple merge
Simple merge
index f1661a14600bc97ef02e5ae3b5a1e7cfb32b2c2f,0000000000000000000000000000000000000000..89aa1078d865d149f21de14c9621d69db5f06843
mode 100644,000000..100644
--- /dev/null
@@@ -1,73 -1,0 +1,73 @@@
-                         @if(userCan('bookshelf-view-all') || userCan('bookshelf-view-own'))
 +<header id="header" header-mobile-toggle>
 +    <div class="grid break-l mx-l">
 +
 +        <div>
 +            <a href="{{ baseUrl('/') }}" class="logo">
 +                @if(setting('app-logo', '') !== 'none')
 +                    <img class="logo-image" src="{{ setting('app-logo', '') === '' ? baseUrl('/logo.png') : baseUrl(setting('app-logo', '')) }}" alt="Logo">
 +                @endif
 +                @if (setting('app-name-header'))
 +                    <span class="logo-text">{{ setting('app-name') }}</span>
 +                @endif
 +            </a>
 +            <div class="mobile-menu-toggle hide-over-l">@icon('more')</div>
 +        </div>
 +
 +        <div class="header-search hide-under-l">
 +            @if (hasAppAccess())
 +            <form action="{{ baseUrl('/search') }}" method="GET" class="search-box">
 +                <button id="header-search-box-button" type="submit">@icon('search') </button>
 +                <input id="header-search-box-input" type="text" name="term" tabindex="2" placeholder="{{ trans('common.search') }}" value="{{ isset($searchTerm) ? $searchTerm : '' }}">
 +            </form>
 +            @endif
 +        </div>
 +
 +        <div class="text-right">
 +            <div class="header-links">
 +                <div class="links text-center">
 +                    @if (hasAppAccess())
 +                        <a class="hide-over-l" href="{{ baseUrl('/search') }}">@icon('search'){{ trans('common.search') }}</a>
++                        @if(userCanOnAny('view', \BookStack\Entities\Bookshelf::class) || userCan('bookshelf-view-all') || userCan('bookshelf-view-own'))
 +                            <a href="{{ baseUrl('/shelves') }}">@icon('bookshelf'){{ trans('entities.shelves') }}</a>
 +                        @endif
 +                        <a href="{{ baseUrl('/books') }}">@icon('books'){{ trans('entities.books') }}</a>
 +                        @if(signedInUser() && userCan('settings-manage'))
 +                            <a href="{{ baseUrl('/settings') }}">@icon('settings'){{ trans('settings.settings') }}</a>
 +                        @endif
 +                        @if(signedInUser() && userCan('users-manage') && !userCan('settings-manage'))
 +                            <a href="{{ baseUrl('/settings/users') }}">@icon('users'){{ trans('settings.users') }}</a>
 +                        @endif
 +                    @endif
 +
 +                    @if(!signedInUser())
 +                        @if(setting('registration-enabled', false))
 +                            <a href="{{ baseUrl("/register") }}">@icon('new-user') {{ trans('auth.sign_up') }}</a>
 +                        @endif
 +                        <a href="{{ baseUrl('/login') }}">@icon('login') {{ trans('auth.log_in') }}</a>
 +                    @endif
 +                </div>
 +                @if(signedInUser())
 +                    <?php $currentUser = user(); ?>
 +                    <div class="dropdown-container" dropdown>
 +                        <span class="user-name hide-under-l" dropdown-toggle>
 +                            <img class="avatar" src="{{$currentUser->getAvatar(30)}}" alt="{{ $currentUser->name }}">
 +                            <span class="name">{{ $currentUser->getShortName(9) }}</span> @icon('caret-down')
 +                        </span>
 +                        <ul>
 +                            <li>
 +                                <a href="{{ baseUrl("/user/{$currentUser->id}") }}" class="text-primary">@icon('user'){{ trans('common.view_profile') }}</a>
 +                            </li>
 +                            <li>
 +                                <a href="{{ baseUrl("/settings/users/{$currentUser->id}") }}" class="text-primary">@icon('edit'){{ trans('common.edit_profile') }}</a>
 +                            </li>
 +                            <li>
 +                                <a href="{{ baseUrl('/logout') }}" class="text-neg">@icon('logout'){{ trans('auth.logout') }}</a>
 +                            </li>
 +                        </ul>
 +                    </div>
 +                @endif
 +            </div>
 +        </div>
 +
 +    </div>
 +</header>
index 8444155a69a7984dde04de4ba9a548be23e352e9,db2f1462e3d05bedbea27fef66c9677c5efc599c..6858661c412b2d6af3f9d6bc1c9584ad8332b3da
          </div>
      </div>
  
 -    @include('partials/book-tree', ['book' => $book, 'sidebarTree' => $sidebarTree])
 -
 +    @include('partials.book-tree', ['book' => $book, 'sidebarTree' => $sidebarTree])
  @stop
  
 -@section('body-wrap-classes', 'flex-fill columns')
 +@section('right')
 +    <div class="actions mb-xl">
 +        <h5>Actions</h5>
  
 -@section('body')
 -
 -    <div class="page-content flex" page-display="{{ $page->id }}">
 +        <div class="icon-list text-primary">
 +            {{--Export--}}
 +            <div dropdown class="dropdown-container block">
 +                <div dropdown-toggle class="icon-list-item">
 +                    <span>@icon('export')</span>
 +                    <span>{{ trans('entities.export') }}</span>
 +                </div>
 +                <ul class="wide">
 +                    <li><a href="{{ $page->getUrl('/export/html') }}" target="_blank">{{ trans('entities.export_html') }} <span class="text-muted float right">.html</span></a></li>
 +                    <li><a href="{{ $page->getUrl('/export/pdf') }}" target="_blank">{{ trans('entities.export_pdf') }} <span class="text-muted float right">.pdf</span></a></li>
 +                    <li><a href="{{ $page->getUrl('/export/plaintext') }}" target="_blank">{{ trans('entities.export_text') }} <span class="text-muted float right">.txt</span></a></li>
 +                </ul>
 +            </div>
  
 -        <div class="pointer-container" id="pointer">
 -            <div class="pointer anim {{ userCan('page-update', $page) ? 'is-page-editable' : ''}}" >
 -                <span class="icon text-primary">@icon('link') @icon('include', ['style' => 'display:none;'])</span>
 -                <span class="input-group">
 -                    <input readonly="readonly" type="text" id="pointer-url" placeholder="url">
 -                    <button class="button icon" data-clipboard-target="#pointer-url" type="button" title="{{ trans('entities.pages_copy_link') }}">@icon('copy')</button>
 -                </span>
 -                @if(userCan('page-update', $page))
 -                    <a href="{{ $page->getUrl('/edit') }}" id="pointer-edit" data-edit-href="{{ $page->getUrl('/edit') }}"
 -                        class="button icon heading-edit-icon" title="{{ trans('entities.pages_edit_content_link')}}">@icon('edit')</a>
 +            {{--User Actions--}}
 +            @if(userCan('page-update', $page))
 +                <a href="{{ $page->getUrl('/edit') }}" class="icon-list-item">
 +                    <span>@icon('edit')</span>
 +                    <span>{{ trans('common.edit') }}</span>
 +                </a>
++            @endif
++            @if(userCanOnAny('page-create'))
 +                <a href="{{ $page->getUrl('/copy') }}" class="icon-list-item">
 +                    <span>@icon('copy')</span>
 +                    <span>{{ trans('common.copy') }}</span>
 +                </a>
++            @endif
++            @if(userCan('page-update', $page))
 +                @if(userCan('page-delete', $page))
 +                      <a href="{{ $page->getUrl('/move') }}" class="icon-list-item">
 +                          <span>@icon('folder')</span>
 +                          <span>{{ trans('common.move') }}</span>
 +                      </a>
                  @endif
 -            </div>
 +                <a href="{{ $page->getUrl('/revisions') }}" class="icon-list-item">
 +                    <span>@icon('history')</span>
 +                    <span>{{ trans('entities.revisions') }}</span>
 +                </a>
 +            @endif
 +            @if(userCan('restrictions-manage', $page))
 +                <a href="{{ $page->getUrl('/permissions') }}" class="icon-list-item">
 +                    <span>@icon('lock')</span>
 +                    <span>{{ trans('entities.permissions') }}</span>
 +                </a>
 +            @endif
 +            @if(userCan('page-delete', $page))
 +                <a href="{{ $page->getUrl('/delete') }}" class="icon-list-item">
 +                    <span>@icon('delete')</span>
 +                    <span>{{ trans('common.delete') }}</span>
 +                </a>
 +            @endif
          </div>
  
 -        @include('pages/page-display')
      </div>
 -
 -    @if ($commentsEnabled)
 -      <div class="container small nopad comments-container">
 -          @include('comments/comments', ['page' => $page])
 -      </div>
 -    @endif
  @stop
index 42fc2beb1bba9135a82425d0657bb0a6c3a262fe,1b0514f9cdc4de07a3cfcee151e3abb62c2ff44e..e6e66665f08bb97e2d1e0edc95d1197ba011324a
@@@ -1,66 -1,60 +1,66 @@@
  @extends('simple-layout')
  
 -@section('toolbar')
 -    @include('settings/navbar', ['selected' => 'users'])
 -@stop
 -
  @section('body')
 -
      <div class="container small">
 -        <p>&nbsp;</p>
 -        <div class="card">
 -            <h3>@icon('edit') {{ $user->id === $currentUser->id ? trans('settings.users_edit_profile') : trans('settings.users_edit') }}</h3>
 -            <div class="body">
 -                <form action="{{ baseUrl("/settings/users/{$user->id}") }}" method="post">
 -                    <div class="row">
 -                        <div class="col-sm-6">
 -                            {!! csrf_field() !!}
 -                            <input type="hidden" name="_method" value="put">
 -                            @include('users.forms.' . $authMethod, ['model' => $user])
  
 -                        </div>
 -                        <div class="col-sm-6">
 -                            <div class="form-group" id="logo-control">
 -                                <label for="user-avatar">{{ trans('settings.users_avatar') }}</label>
 -                                <p class="small">{{ trans('settings.users_avatar_desc') }}</p>
 +        <div class="py-m">
 +            @include('settings.navbar', ['selected' => 'users'])
 +        </div>
  
 -                                @include('components.image-picker', [
 -                                      'resizeHeight' => '512',
 -                                      'resizeWidth' => '512',
 -                                      'showRemove' => false,
 -                                      'defaultImage' => baseUrl('/user_avatar.png'),
 -                                      'currentImage' => $user->getAvatar(80),
 -                                      'currentId' => $user->image_id,
 -                                      'name' => 'image_id',
 -                                      'imageClass' => 'avatar large'
 -                                  ])
 -                            </div>
 -                            <div class="form-group">
 -                                <label for="user-language">{{ trans('settings.users_preferred_language') }}</label>
 -                                <select name="setting[language]" id="user-language">
 +        <div class="card content-wrap">
 +            <h1 class="list-heading">{{ $user->id === $currentUser->id ? trans('settings.users_edit_profile') : trans('settings.users_edit') }}</h1>
 +            <form action="{{ baseUrl("/settings/users/{$user->id}") }}" method="post">
 +                {!! csrf_field() !!}
 +                <input type="hidden" name="_method" value="PUT">
  
 -                                    @foreach(trans('settings.language_select') as $lang => $label)
 -                                        <option @if(setting()->getUser($user, 'language', config('app.default_locale')) === $lang) selected @endif value="{{ $lang }}">{{ $label }}</option>
 -                                    @endforeach
 -                                </select>
 -                            </div>
 +                <div class="setting-list">
 +                    @include('users.form', ['model' => $user, 'authMethod' => $authMethod])
 +
 +                    <div class="grid half large-gap">
 +                        <div>
 +                            <label for="user-avatar" class="setting-list-label">{{ trans('settings.users_avatar') }}</label>
 +                            <p class="small">{{ trans('settings.users_avatar_desc') }}</p>
 +                        </div>
 +                        <div>
 +                            @include('components.image-picker', [
 +                                'resizeHeight' => '512',
 +                                'resizeWidth' => '512',
 +                                'showRemove' => false,
 +                                'defaultImage' => baseUrl('/user_avatar.png'),
 +                                'currentImage' => $user->getAvatar(80),
 +                                'currentId' => $user->image_id,
 +                                'name' => 'image_id',
 +                                'imageClass' => 'avatar large'
 +                            ])
                          </div>
                      </div>
 -                    <div class="form-group text-right">
 -                        <a href="{{  baseUrl($currentUser->can('users-manage') ? "/settings/users" : "/") }}" class="button outline">{{ trans('common.cancel') }}</a>
 -                        @if($authMethod !== 'system')
 -                            <a href="{{ baseUrl("/settings/users/{$user->id}/delete") }}" class="neg button">{{ trans('settings.users_delete') }}</a>
 -                        @endif
 -                        <button class="button pos" type="submit">{{ trans('common.save') }}</button>
 +
 +                    <div class="grid half large-gap v-center">
 +                        <div>
 +                            <label for="user-language" class="setting-list-label">{{ trans('settings.users_preferred_language') }}</label>
 +                            <p class="small">
 +                                {{ trans('settings.users_preferred_language_desc') }}
 +                            </p>
 +                        </div>
 +                        <div>
 +                            <select name="setting[language]" id="user-language">
 +                                @foreach(trans('settings.language_select') as $lang => $label)
-                                     <option @if(setting()->getUser($user, 'language') === $lang) selected @endif value="{{ $lang }}">{{ $label }}</option>
++                                    <option @if(setting()->getUser($user, 'language', config('app.default_locale')) === $lang) selected @endif value="{{ $lang }}">{{ $label }}</option>
 +                                @endforeach
 +                            </select>
 +                        </div>
                      </div>
 -                </form>
 -            </div>
 +
 +                </div>
 +
 +                <div class="text-right">
 +                    <a href="{{  baseUrl($currentUser->can('users-manage') ? "/settings/users" : "/") }}" class="button outline">{{ trans('common.cancel') }}</a>
 +                    @if($authMethod !== 'system')
 +                        <a href="{{ baseUrl("/settings/users/{$user->id}/delete") }}" class="button outline">{{ trans('settings.users_delete') }}</a>
 +                    @endif
 +                    <button class="button primary" type="submit">{{ trans('common.save') }}</button>
 +                </div>
 +            </form>
          </div>
  
          @if($currentUser->id === $user->id && count($activeSocialDrivers) > 0)
                  </div>
              </div>
          @endif
 -
 -
      </div>
  
 -    <p class="margin-top large"><br></p>
      @include('components.image-manager', ['imageType' => 'user'])
--@stop
++@stop