]> BookStack Code Mirror - bookstack/blob - resources/views/settings/index.blade.php
Add close icon to notifications
[bookstack] / resources / views / settings / index.blade.php
1 @extends('simple-layout')
2
3 @section('body')
4     <div class="container small">
5
6         <div class="grid left-focus v-center no-row-gap">
7             <div class="py-m">
8                 @include('settings.navbar', ['selected' => 'settings'])
9             </div>
10             <div class="text-right p-m">
11                 <a target="_blank" rel="noopener noreferrer" href="https://github.com/BookStackApp/BookStack/releases">
12                     BookStack @if(strpos($version, 'v') !== 0) version @endif {{ $version }}
13                 </a>
14             </div>
15         </div>
16
17         <div class="card content-wrap auto-height">
18             <h2 class="list-heading">{{ trans('settings.app_features_security') }}</h2>
19             <form action="{{ url("/settings") }}" method="POST">
20                 {!! csrf_field() !!}
21
22                 <div class="setting-list">
23
24
25                     <div class="grid half gap-xl">
26                         <div>
27                             <label for="setting-app-public" class="setting-list-label">{{ trans('settings.app_public_access') }}</label>
28                             <p class="small">{!! trans('settings.app_public_access_desc') !!}</p>
29                             @if(userCan('users-manage'))
30                                 <p class="small mb-none">
31                                     <a href="{{ url($guestUser->getEditUrl()) }}">{!! trans('settings.app_public_access_desc_guest') !!}</a>
32                                 </p>
33                             @endif
34                         </div>
35                         <div>
36                             @include('components.toggle-switch', [
37                                 'name' => 'setting-app-public',
38                                 'value' => setting('app-public'),
39                                 'label' => trans('settings.app_public_access_toggle'),
40                             ])
41                         </div>
42                     </div>
43
44                     <div class="grid half gap-xl">
45                         <div>
46                             <label class="setting-list-label">{{ trans('settings.app_secure_images') }}</label>
47                             <p class="small">{{ trans('settings.app_secure_images_desc') }}</p>
48                         </div>
49                         <div>
50                             @include('components.toggle-switch', [
51                                 'name' => 'setting-app-secure-images',
52                                 'value' => setting('app-secure-images'),
53                                 'label' => trans('settings.app_secure_images_toggle'),
54                             ])
55                         </div>
56                     </div>
57
58                     <div class="grid half gap-xl">
59                         <div>
60                             <label class="setting-list-label">{{ trans('settings.app_disable_comments') }}</label>
61                             <p class="small">{!! trans('settings.app_disable_comments_desc') !!}</p>
62                         </div>
63                         <div>
64                             @include('components.toggle-switch', [
65                                 'name' => 'setting-app-disable-comments',
66                                 'value' => setting('app-disable-comments'),
67                                 'label' => trans('settings.app_disable_comments_toggle'),
68                             ])
69                         </div>
70                     </div>
71
72
73                 </div>
74
75                 <div class="form-group text-right">
76                     <button type="submit" class="button">{{ trans('settings.settings_save') }}</button>
77                 </div>
78             </form>
79         </div>
80
81         <div class="card content-wrap auto-height">
82             <h2 class="list-heading">{{ trans('settings.app_customization') }}</h2>
83             <form action="{{ url("/settings") }}" method="POST" enctype="multipart/form-data">
84                 {!! csrf_field() !!}
85
86                 <div class="setting-list">
87
88                     <div class="grid half gap-xl">
89                         <div>
90                             <label for="setting-app-name" class="setting-list-label">{{ trans('settings.app_name') }}</label>
91                             <p class="small">{{ trans('settings.app_name_desc') }}</p>
92                         </div>
93                         <div>
94                             <input type="text" value="{{ setting('app-name', 'BookStack') }}" name="setting-app-name" id="setting-app-name">
95                             @include('components.toggle-switch', [
96                                 'name' => 'setting-app-name-header',
97                                 'value' => setting('app-name-header'),
98                                 'label' => trans('settings.app_name_header'),
99                             ])
100                         </div>
101                     </div>
102
103                     <div class="grid half gap-xl">
104                         <div>
105                             <label class="setting-list-label">{{ trans('settings.app_editor') }}</label>
106                             <p class="small">{{ trans('settings.app_editor_desc') }}</p>
107                         </div>
108                         <div>
109                             <select name="setting-app-editor" id="setting-app-editor">
110                                 <option @if(setting('app-editor') === 'wysiwyg') selected @endif value="wysiwyg">WYSIWYG</option>
111                                 <option @if(setting('app-editor') === 'markdown') selected @endif value="markdown">Markdown</option>
112                             </select>
113                         </div>
114                     </div>
115
116                     <div class="grid half gap-xl">
117                         <div>
118                             <label class="setting-list-label">{{ trans('settings.app_logo') }}</label>
119                             <p class="small">{!! trans('settings.app_logo_desc') !!}</p>
120                         </div>
121                         <div>
122                             @include('components.image-picker', [
123                                      'removeName' => 'setting-app-logo',
124                                      'removeValue' => 'none',
125                                      'defaultImage' => url('/logo.png'),
126                                      'currentImage' => setting('app-logo'),
127                                      'name' => 'app_logo',
128                                      'imageClass' => 'logo-image',
129                                  ])
130                         </div>
131                     </div>
132
133                     <!-- Primary Color -->
134                     <div class="grid half gap-xl">
135                         <div>
136                             <label class="setting-list-label">{{ trans('settings.app_primary_color') }}</label>
137                             <p class="small">{!! trans('settings.app_primary_color_desc') !!}</p>
138                         </div>
139                         <div setting-app-color-picker class="text-m-right">
140                             <input type="color" data-default="#206ea7" data-current="{{ setting('app-color') }}" value="{{ setting('app-color') }}" name="setting-app-color" id="setting-app-color" placeholder="#206ea7">
141                             <input type="hidden" value="{{ setting('app-color-light') }}" name="setting-app-color-light" id="setting-app-color-light">
142                             <br>
143                             <button type="button" class="text-button text-muted mt-s mx-s" setting-app-color-picker-default>{{ trans('common.default') }}</button>
144                             <span class="sep">|</span>
145                             <button type="button" class="text-button text-muted mt-s mx-s" setting-app-color-picker-reset>{{ trans('common.reset') }}</button>
146                         </div>
147                     </div>
148
149                     <!-- Entity Color -->
150                     <div class="pb-l">
151                         <div>
152                             <label class="setting-list-label">{{ trans('settings.content_colors') }}</label>
153                             <p class="small">{!! trans('settings.content_colors_desc') !!}</p>
154                         </div>
155                         <div class="grid half pt-m">
156                             <div>
157                                 @include('components.setting-entity-color-picker', ['type' => 'bookshelf'])
158                                 @include('components.setting-entity-color-picker', ['type' => 'book'])
159                                 @include('components.setting-entity-color-picker', ['type' => 'chapter'])
160                             </div>
161                             <div>
162                                 @include('components.setting-entity-color-picker', ['type' => 'page'])
163                                 @include('components.setting-entity-color-picker', ['type' => 'page-draft'])
164                             </div>
165                         </div>
166                     </div>
167
168                     <div homepage-control id="homepage-control" class="grid half gap-xl">
169                         <div>
170                             <label for="setting-app-homepage" class="setting-list-label">{{ trans('settings.app_homepage') }}</label>
171                             <p class="small">{{ trans('settings.app_homepage_desc') }}</p>
172                         </div>
173                         <div>
174                             <select name="setting-app-homepage-type" id="setting-app-homepage-type">
175                                 <option @if(setting('app-homepage-type') === 'default') selected @endif value="default">{{ trans('common.default') }}</option>
176                                 <option @if(setting('app-homepage-type') === 'books') selected @endif value="books">{{ trans('entities.books') }}</option>
177                                 <option @if(setting('app-homepage-type') === 'bookshelves') selected @endif value="bookshelves">{{ trans('entities.shelves') }}</option>
178                                 <option @if(setting('app-homepage-type') === 'page') selected @endif value="page">{{ trans('entities.pages_specific') }}</option>
179                             </select>
180
181                             <div page-picker-container style="display: none;" class="mt-m">
182                                 @include('components.page-picker', ['name' => 'setting-app-homepage', 'placeholder' => trans('settings.app_homepage_select'), 'value' => setting('app-homepage')])
183                             </div>
184                         </div>
185                     </div>
186
187
188                     <div>
189                         <label for="setting-app-custom-head" class="setting-list-label">{{ trans('settings.app_custom_html') }}</label>
190                         <p class="small">{{ trans('settings.app_custom_html_desc') }}</p>
191                         <textarea name="setting-app-custom-head" id="setting-app-custom-head" class="simple-code-input mt-m">{{ setting('app-custom-head', '') }}</textarea>
192                         <p class="small text-right">{{ trans('settings.app_custom_html_disabled_notice') }}</p>
193                     </div>
194
195
196                 </div>
197
198                 <div class="form-group text-right">
199                     <button type="submit" class="button">{{ trans('settings.settings_save') }}</button>
200                 </div>
201             </form>
202         </div>
203
204         <div class="card content-wrap auto-height">
205             <h2 class="list-heading">{{ trans('settings.reg_settings') }}</h2>
206             <form action="{{ url("/settings") }}" method="POST">
207                 {!! csrf_field() !!}
208
209                 <div class="setting-list">
210                     <div class="grid half gap-xl">
211                         <div>
212                             <label class="setting-list-label">{{ trans('settings.reg_enable') }}</label>
213                             <p class="small">{!! trans('settings.reg_enable_desc') !!}</p>
214                         </div>
215                         <div>
216                             @include('components.toggle-switch', [
217                                 'name' => 'setting-registration-enabled',
218                                 'value' => setting('registration-enabled'),
219                                 'label' => trans('settings.reg_enable_toggle')
220                             ])
221
222                             @if(config('auth.method') === 'ldap')
223                                 <div class="text-warn text-small mb-l">{{ trans('settings.reg_enable_ldap_warning') }}</div>
224                             @endif
225
226                             <label for="setting-registration-role">{{ trans('settings.reg_default_role') }}</label>
227                             <select id="setting-registration-role" name="setting-registration-role" @if($errors->has('setting-registration-role')) class="neg" @endif>
228                                 @foreach(\BookStack\Auth\Role::all() as $role)
229                                     <option value="{{$role->id}}" data-role-name="{{ $role->name }}"
230                                             @if(setting('registration-role', \BookStack\Auth\Role::first()->id) == $role->id) selected @endif
231                                     >
232                                         {{ $role->display_name }}
233                                     </option>
234                                 @endforeach
235                             </select>
236                         </div>
237                     </div>
238
239                     <div class="grid half gap-xl">
240                         <div>
241                             <label for="setting-registration-restrict" class="setting-list-label">{{ trans('settings.reg_confirm_restrict_domain') }}</label>
242                             <p class="small">{!! trans('settings.reg_confirm_restrict_domain_desc') !!}</p>
243                         </div>
244                         <div>
245                             <input type="text" id="setting-registration-restrict" name="setting-registration-restrict" placeholder="{{ trans('settings.reg_confirm_restrict_domain_placeholder') }}" value="{{ setting('registration-restrict', '') }}">
246                         </div>
247                     </div>
248
249                     <div class="grid half gap-xl">
250                         <div>
251                             <label class="setting-list-label">{{ trans('settings.reg_email_confirmation') }}</label>
252                             <p class="small">{{ trans('settings.reg_confirm_email_desc') }}</p>
253                         </div>
254                         <div>
255                             @include('components.toggle-switch', [
256                                 'name' => 'setting-registration-confirmation',
257                                 'value' => setting('registration-confirmation'),
258                                 'label' => trans('settings.reg_email_confirmation_toggle')
259                             ])
260                         </div>
261                     </div>
262
263                 </div>
264
265                 <div class="form-group text-right">
266                     <button type="submit" class="button">{{ trans('settings.settings_save') }}</button>
267                 </div>
268             </form>
269         </div>
270
271     </div>
272
273     @include('components.image-manager', ['imageType' => 'system'])
274     @include('components.entity-selector-popup', ['entityTypes' => 'page'])
275 @stop