diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 8b0ef309a..9a23fe2a1 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -8,6 +8,7 @@ use BookStack\Exceptions\UserRegistrationException;
use BookStack\Repos\UserRepo;
use BookStack\Services\EmailConfirmationService;
use BookStack\Services\SocialAuthService;
+use BookStack\SocialAccount;
use BookStack\User;
use Exception;
use Illuminate\Http\Request;
@@ -103,7 +104,7 @@ class RegisterController extends Controller
* @param Request|\Illuminate\Http\Request $request
* @return Response
* @throws UserRegistrationException
- * @throws \Illuminate\Foundation\Validation\ValidationException
+ * @throws \Illuminate\Validation\ValidationException
*/
public function postRegister(Request $request)
{
@@ -255,16 +256,13 @@ class RegisterController extends Controller
*/
public function socialCallback($socialDriver)
{
- if (session()->has('social-callback')) {
- $action = session()->pull('social-callback');
- if ($action == 'login') {
- return $this->socialAuthService->handleLoginCallback($socialDriver);
- } elseif ($action == 'register') {
- return $this->socialRegisterCallback($socialDriver);
- }
- } else {
+ if (!session()->has('social-callback')) {
throw new SocialSignInException(trans('errors.social_no_action_defined'), '/login');
}
+
+ $action = session()->pull('social-callback');
+ if ($action == 'login') return $this->socialAuthService->handleLoginCallback($socialDriver);
+ if ($action == 'register') return $this->socialRegisterCallback($socialDriver);
return redirect()->back();
}
diff --git a/public/fonts/roboto-mono-v4-latin-regular.woff b/public/fonts/roboto-mono-v4-latin-regular.woff
deleted file mode 100644
index 8cb9e6fd8..000000000
Binary files a/public/fonts/roboto-mono-v4-latin-regular.woff and /dev/null differ
diff --git a/public/fonts/roboto-mono-v4-latin-regular.woff2 b/public/fonts/roboto-mono-v4-latin-regular.woff2
deleted file mode 100644
index 1f6598111..000000000
Binary files a/public/fonts/roboto-mono-v4-latin-regular.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-100.woff b/public/fonts/roboto-v15-cyrillic_latin-100.woff
deleted file mode 100644
index 4eb2be6a1..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-100.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-100.woff2 b/public/fonts/roboto-v15-cyrillic_latin-100.woff2
deleted file mode 100644
index 007b90e85..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-100.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff b/public/fonts/roboto-v15-cyrillic_latin-100italic.woff
deleted file mode 100644
index fa7e51bc8..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-100italic.woff2
deleted file mode 100644
index f27a169cb..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-300.woff b/public/fonts/roboto-v15-cyrillic_latin-300.woff
deleted file mode 100644
index ace052941..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-300.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-300.woff2 b/public/fonts/roboto-v15-cyrillic_latin-300.woff2
deleted file mode 100644
index 0c093b91c..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-300.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff b/public/fonts/roboto-v15-cyrillic_latin-300italic.woff
deleted file mode 100644
index 7984971e7..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-300italic.woff2
deleted file mode 100644
index 46ed6c7cc..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-500.woff b/public/fonts/roboto-v15-cyrillic_latin-500.woff
deleted file mode 100644
index 8ae98f2de..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-500.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-500.woff2 b/public/fonts/roboto-v15-cyrillic_latin-500.woff2
deleted file mode 100644
index fba67842e..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-500.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff b/public/fonts/roboto-v15-cyrillic_latin-500italic.woff
deleted file mode 100644
index 560968d16..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-500italic.woff2
deleted file mode 100644
index cc41bf873..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-700.woff b/public/fonts/roboto-v15-cyrillic_latin-700.woff
deleted file mode 100644
index 7d19e332d..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-700.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-700.woff2 b/public/fonts/roboto-v15-cyrillic_latin-700.woff2
deleted file mode 100644
index e2274a4fb..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-700.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff b/public/fonts/roboto-v15-cyrillic_latin-700italic.woff
deleted file mode 100644
index 1604c8763..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-700italic.woff2
deleted file mode 100644
index f950ca2aa..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-italic.woff b/public/fonts/roboto-v15-cyrillic_latin-italic.woff
deleted file mode 100644
index d76d13d6a..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-italic.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-italic.woff2
deleted file mode 100644
index a80f41528..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-italic.woff2 and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-regular.woff b/public/fonts/roboto-v15-cyrillic_latin-regular.woff
deleted file mode 100644
index a2ada2f46..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-regular.woff and /dev/null differ
diff --git a/public/fonts/roboto-v15-cyrillic_latin-regular.woff2 b/public/fonts/roboto-v15-cyrillic_latin-regular.woff2
deleted file mode 100644
index a3b35e686..000000000
Binary files a/public/fonts/roboto-v15-cyrillic_latin-regular.woff2 and /dev/null differ
diff --git a/public/logo.png b/public/logo.png
index 1803feebf..585f8895b 100644
Binary files a/public/logo.png and b/public/logo.png differ
diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js
index 132580f68..8b37379fa 100644
--- a/resources/assets/js/controllers.js
+++ b/resources/assets/js/controllers.js
@@ -145,202 +145,6 @@ module.exports = function (ngApp, events) {
}]);
- ngApp.controller('PageAttachmentController', ['$scope', '$http', '$attrs',
- function ($scope, $http, $attrs) {
-
- const pageId = $scope.uploadedTo = $attrs.pageId;
- let currentOrder = '';
- $scope.files = [];
- $scope.editFile = false;
- $scope.file = getCleanFile();
- $scope.errors = {
- link: {},
- edit: {}
- };
-
- function getCleanFile() {
- return {
- page_id: pageId
- };
- }
-
- // Angular-UI-Sort options
- $scope.sortOptions = {
- handle: '.handle',
- items: '> tr',
- containment: "parent",
- axis: "y",
- stop: sortUpdate,
- };
-
- /**
- * Event listener for sort changes.
- * Updates the file ordering on the server.
- * @param event
- * @param ui
- */
- function sortUpdate(event, ui) {
- let newOrder = $scope.files.map(file => {return file.id}).join(':');
- if (newOrder === currentOrder) return;
-
- currentOrder = newOrder;
- $http.put(window.baseUrl(`/attachments/sort/page/${pageId}`), {files: $scope.files}).then(resp => {
- events.emit('success', resp.data.message);
- }, checkError('sort'));
- }
-
- /**
- * Used by dropzone to get the endpoint to upload to.
- * @returns {string}
- */
- $scope.getUploadUrl = function (file) {
- let suffix = (typeof file !== 'undefined') ? `/${file.id}` : '';
- return window.baseUrl(`/attachments/upload${suffix}`);
- };
-
- /**
- * Get files for the current page from the server.
- */
- function getFiles() {
- let url = window.baseUrl(`/attachments/get/page/${pageId}`);
- $http.get(url).then(resp => {
- $scope.files = resp.data;
- currentOrder = resp.data.map(file => {return file.id}).join(':');
- }, checkError('get'));
- }
- getFiles();
-
- /**
- * Runs on file upload, Adds an file to local file list
- * and shows a success message to the user.
- * @param file
- * @param data
- */
- $scope.uploadSuccess = function (file, data) {
- $scope.$apply(() => {
- $scope.files.push(data);
- });
- events.emit('success', trans('entities.attachments_file_uploaded'));
- };
-
- /**
- * Upload and overwrite an existing file.
- * @param file
- * @param data
- */
- $scope.uploadSuccessUpdate = function (file, data) {
- $scope.$apply(() => {
- let search = filesIndexOf(data);
- if (search !== -1) $scope.files[search] = data;
-
- if ($scope.editFile) {
- $scope.editFile = angular.copy(data);
- data.link = '';
- }
- });
- events.emit('success', trans('entities.attachments_file_updated'));
- };
-
- /**
- * Delete a file from the server and, on success, the local listing.
- * @param file
- */
- $scope.deleteFile = function(file) {
- if (!file.deleting) {
- file.deleting = true;
- return;
- }
- $http.delete(window.baseUrl(`/attachments/${file.id}`)).then(resp => {
- events.emit('success', resp.data.message);
- $scope.files.splice($scope.files.indexOf(file), 1);
- }, checkError('delete'));
- };
-
- /**
- * Attach a link to a page.
- * @param file
- */
- $scope.attachLinkSubmit = function(file) {
- file.uploaded_to = pageId;
- $http.post(window.baseUrl('/attachments/link'), file).then(resp => {
- $scope.files.push(resp.data);
- events.emit('success', trans('entities.attachments_link_attached'));
- $scope.file = getCleanFile();
- }, checkError('link'));
- };
-
- /**
- * Start the edit mode for a file.
- * @param file
- */
- $scope.startEdit = function(file) {
- $scope.editFile = angular.copy(file);
- $scope.editFile.link = (file.external) ? file.path : '';
- };
-
- /**
- * Cancel edit mode
- */
- $scope.cancelEdit = function() {
- $scope.editFile = false;
- };
-
- /**
- * Update the name and link of a file.
- * @param file
- */
- $scope.updateFile = function(file) {
- $http.put(window.baseUrl(`/attachments/${file.id}`), file).then(resp => {
- let search = filesIndexOf(resp.data);
- if (search !== -1) $scope.files[search] = resp.data;
-
- if ($scope.editFile && !file.external) {
- $scope.editFile.link = '';
- }
- $scope.editFile = false;
- events.emit('success', trans('entities.attachments_updated_success'));
- }, checkError('edit'));
- };
-
- /**
- * Get the url of a file.
- */
- $scope.getFileUrl = function(file) {
- return window.baseUrl('/attachments/' + file.id);
- };
-
- /**
- * Search the local files via another file object.
- * Used to search via object copies.
- * @param file
- * @returns int
- */
- function filesIndexOf(file) {
- for (let i = 0; i < $scope.files.length; i++) {
- if ($scope.files[i].id == file.id) return i;
- }
- return -1;
- }
-
- /**
- * Check for an error response in a ajax request.
- * @param errorGroupName
- */
- function checkError(errorGroupName) {
- $scope.errors[errorGroupName] = {};
- return function(response) {
- if (typeof response.data !== 'undefined' && typeof response.data.error !== 'undefined') {
- events.emit('error', response.data.error);
- }
- if (typeof response.data !== 'undefined' && typeof response.data.validation !== 'undefined') {
- $scope.errors[errorGroupName] = response.data.validation;
- console.log($scope.errors[errorGroupName])
- }
- }
- }
-
- }]);
-
// Controller used to reply to and add new comments
ngApp.controller('CommentReplyController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
const MarkdownIt = require("markdown-it");
diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js
index 2a0547c97..fc92121ff 100644
--- a/resources/assets/js/directives.js
+++ b/resources/assets/js/directives.js
@@ -1,119 +1,10 @@
"use strict";
-const DropZone = require("dropzone");
const MarkdownIt = require("markdown-it");
const mdTasksLists = require('markdown-it-task-lists');
const code = require('./code');
module.exports = function (ngApp, events) {
- /**
- * Common tab controls using simple jQuery functions.
- */
- ngApp.directive('tabContainer', function() {
- return {
- restrict: 'A',
- link: function (scope, element, attrs) {
- const $content = element.find('[tab-content]');
- const $buttons = element.find('[tab-button]');
-
- if (attrs.tabContainer) {
- let initial = attrs.tabContainer;
- $buttons.filter(`[tab-button="${initial}"]`).addClass('selected');
- $content.hide().filter(`[tab-content="${initial}"]`).show();
- } else {
- $content.hide().first().show();
- $buttons.first().addClass('selected');
- }
-
- $buttons.click(function() {
- let clickedTab = $(this);
- $buttons.removeClass('selected');
- $content.hide();
- let name = clickedTab.addClass('selected').attr('tab-button');
- $content.filter(`[tab-content="${name}"]`).show();
- });
- }
- };
- });
-
- /**
- * Sub form component to allow inner-form sections to act like their own forms.
- */
- ngApp.directive('subForm', function() {
- return {
- restrict: 'A',
- link: function (scope, element, attrs) {
- element.on('keypress', e => {
- if (e.keyCode === 13) {
- submitEvent(e);
- }
- });
-
- element.find('button[type="submit"]').click(submitEvent);
-
- function submitEvent(e) {
- e.preventDefault();
- if (attrs.subForm) scope.$eval(attrs.subForm);
- }
- }
- };
- });
-
- /**
- * DropZone
- * Used for uploading images
- */
- ngApp.directive('dropZone', [function () {
- return {
- restrict: 'E',
- template: `
-
- `,
- scope: {
- uploadUrl: '@',
- eventSuccess: '=',
- eventError: '=',
- uploadedTo: '@',
- },
- link: function (scope, element, attrs) {
- scope.message = attrs.message;
- if (attrs.placeholder) element[0].querySelector('.dz-message').textContent = attrs.placeholder;
- let dropZone = new DropZone(element[0].querySelector('.dropzone-container'), {
- url: scope.uploadUrl,
- init: function () {
- let dz = this;
- dz.on('sending', function (file, xhr, data) {
- let token = window.document.querySelector('meta[name=token]').getAttribute('content');
- data.append('_token', token);
- let uploadedTo = typeof scope.uploadedTo === 'undefined' ? 0 : scope.uploadedTo;
- data.append('uploaded_to', uploadedTo);
- });
- if (typeof scope.eventSuccess !== 'undefined') dz.on('success', scope.eventSuccess);
- dz.on('success', function (file, data) {
- $(file.previewElement).fadeOut(400, function () {
- dz.removeFile(file);
- });
- });
- if (typeof scope.eventError !== 'undefined') dz.on('error', scope.eventError);
- dz.on('error', function (file, errorMessage, xhr) {
- console.log(errorMessage);
- console.log(xhr);
- function setMessage(message) {
- $(file.previewElement).find('[data-dz-errormessage]').text(message);
- }
-
- if (xhr.status === 413) setMessage(trans('errors.server_upload_limit'));
- if (errorMessage.file) setMessage(errorMessage.file[0]);
-
- });
- }
- });
- }
- };
- }]);
-
/**
* TinyMCE
* An angular wrapper around the tinyMCE editor.
diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js
index 28d1e3b0c..ee7cf3cc1 100644
--- a/resources/assets/js/global.js
+++ b/resources/assets/js/global.js
@@ -9,34 +9,6 @@ window.baseUrl = function(path) {
return basePath + '/' + path;
};
-const Vue = require("vue");
-const axios = require("axios");
-
-let axiosInstance = axios.create({
- headers: {
- 'X-CSRF-TOKEN': document.querySelector('meta[name=token]').getAttribute('content'),
- 'baseURL': window.baseUrl('')
- }
-});
-window.$http = axiosInstance;
-Vue.prototype.$http = axiosInstance;
-
-
-// AngularJS - Create application and load components
-const angular = require("angular");
-require("angular-resource");
-require("angular-animate");
-require("angular-sanitize");
-require("angular-ui-sortable");
-
-let ngApp = angular.module('bookStack', ['ngResource', 'ngAnimate', 'ngSanitize', 'ui.sortable']);
-
-// Translation setup
-// Creates a global function with name 'trans' to be used in the same way as Laravel's translation system
-const Translations = require("./translations");
-let translator = new Translations(window.translations);
-window.trans = translator.get.bind(translator);
-
// Global Event System
class EventManager {
constructor() {
@@ -61,8 +33,45 @@ class EventManager {
}
window.Events = new EventManager();
+
+const Vue = require("vue");
+const axios = require("axios");
+
+let axiosInstance = axios.create({
+ headers: {
+ 'X-CSRF-TOKEN': document.querySelector('meta[name=token]').getAttribute('content'),
+ 'baseURL': window.baseUrl('')
+ }
+});
+axiosInstance.interceptors.request.use(resp => {
+ return resp;
+}, err => {
+ if (typeof err.response === "undefined" || typeof err.response.data === "undefined") return Promise.reject(err);
+ if (typeof err.response.data.error !== "undefined") window.Events.emit('error', err.response.data.error);
+ if (typeof err.response.data.message !== "undefined") window.Events.emit('error', err.response.data.message);
+});
+window.$http = axiosInstance;
+
+Vue.prototype.$http = axiosInstance;
Vue.prototype.$events = window.Events;
+
+// AngularJS - Create application and load components
+const angular = require("angular");
+require("angular-resource");
+require("angular-animate");
+require("angular-sanitize");
+require("angular-ui-sortable");
+
+let ngApp = angular.module('bookStack', ['ngResource', 'ngAnimate', 'ngSanitize', 'ui.sortable']);
+
+// Translation setup
+// Creates a global function with name 'trans' to be used in the same way as Laravel's translation system
+const Translations = require("./translations");
+let translator = new Translations(window.translations);
+window.trans = translator.get.bind(translator);
+
+
require("./vues/vues");
require("./components");
diff --git a/resources/assets/js/vues/attachment-manager.js b/resources/assets/js/vues/attachment-manager.js
new file mode 100644
index 000000000..635622b93
--- /dev/null
+++ b/resources/assets/js/vues/attachment-manager.js
@@ -0,0 +1,138 @@
+const draggable = require('vuedraggable');
+const dropzone = require('./components/dropzone');
+
+function mounted() {
+ this.pageId = this.$el.getAttribute('page-id');
+ this.file = this.newFile();
+
+ this.$http.get(window.baseUrl(`/attachments/get/page/${this.pageId}`)).then(resp => {
+ this.files = resp.data;
+ }).catch(err => {
+ this.checkValidationErrors('get', err);
+ });
+}
+
+let data = {
+ pageId: null,
+ files: [],
+ fileToEdit: null,
+ file: {},
+ tab: 'list',
+ editTab: 'file',
+ errors: {link: {}, edit: {}, delete: {}}
+};
+
+const components = {dropzone, draggable};
+
+let methods = {
+
+ newFile() {
+ return {page_id: this.pageId};
+ },
+
+ getFileUrl(file) {
+ return window.baseUrl(`/attachments/${file.id}`);
+ },
+
+ fileSortUpdate() {
+ this.$http.put(window.baseUrl(`/attachments/sort/page/${this.pageId}`), {files: this.files}).then(resp => {
+ this.$events.emit('success', resp.data.message);
+ }).catch(err => {
+ this.checkValidationErrors('sort', err);
+ });
+ },
+
+ startEdit(file) {
+ this.fileToEdit = Object.assign({}, file);
+ this.fileToEdit.link = file.external ? file.path : '';
+ this.editTab = file.external ? 'link' : 'file';
+ },
+
+ deleteFile(file) {
+ if (!file.deleting) return file.deleting = true;
+
+ this.$http.delete(window.baseUrl(`/attachments/${file.id}`)).then(resp => {
+ this.$events.emit('success', resp.data.message);
+ this.files.splice(this.files.indexOf(file), 1);
+ }).catch(err => {
+ this.checkValidationErrors('delete', err)
+ });
+ },
+
+ uploadSuccess(upload) {
+ this.files.push(upload.data);
+ this.$events.emit('success', trans('entities.attachments_file_uploaded'));
+ },
+
+ uploadSuccessUpdate(upload) {
+ let fileIndex = this.filesIndex(upload.data);
+ if (fileIndex === -1) {
+ this.files.push(upload.data)
+ } else {
+ this.files.splice(fileIndex, 1, upload.data);
+ }
+
+ if (this.fileToEdit && this.fileToEdit.id === upload.data.id) {
+ this.fileToEdit = Object.assign({}, upload.data);
+ }
+ this.$events.emit('success', trans('entities.attachments_file_updated'));
+ },
+
+ checkValidationErrors(groupName, err) {
+ console.error(err);
+ if (typeof err.response.data === "undefined" && typeof err.response.data.validation === "undefined") return;
+ this.errors[groupName] = err.response.data.validation;
+ console.log(this.errors[groupName]);
+ },
+
+ getUploadUrl(file) {
+ let url = window.baseUrl(`/attachments/upload`);
+ if (typeof file !== 'undefined') url += `/${file.id}`;
+ return url;
+ },
+
+ cancelEdit() {
+ this.fileToEdit = null;
+ },
+
+ attachNewLink(file) {
+ file.uploaded_to = this.pageId;
+ this.$http.post(window.baseUrl('/attachments/link'), file).then(resp => {
+ this.files.push(resp.data);
+ this.file = this.newFile();
+ this.$events.emit('success', trans('entities.attachments_link_attached'));
+ }).catch(err => {
+ this.checkValidationErrors('link', err);
+ });
+ },
+
+ updateFile(file) {
+ $http.put(window.baseUrl(`/attachments/${file.id}`), file).then(resp => {
+ let search = this.filesIndex(resp.data);
+ if (search === -1) {
+ this.files.push(resp.data);
+ } else {
+ this.files.splice(search, 1, resp.data);
+ }
+
+ if (this.fileToEdit && !file.external) this.fileToEdit.link = '';
+ this.fileToEdit = false;
+
+ this.$events.emit('success', trans('entities.attachments_updated_success'));
+ }).catch(err => {
+ this.checkValidationErrors('edit', err);
+ });
+ },
+
+ filesIndex(file) {
+ for (let i = 0, len = this.files.length; i < len; i++) {
+ if (this.files[i].id === file.id) return i;
+ }
+ return -1;
+ }
+
+};
+
+module.exports = {
+ data, methods, mounted, components,
+};
\ No newline at end of file
diff --git a/resources/assets/js/vues/entity-search.js b/resources/assets/js/vues/entity-dashboard.js
similarity index 100%
rename from resources/assets/js/vues/entity-search.js
rename to resources/assets/js/vues/entity-dashboard.js
diff --git a/resources/assets/js/vues/image-manager.js b/resources/assets/js/vues/image-manager.js
index 9e3fa013e..12ccc970d 100644
--- a/resources/assets/js/vues/image-manager.js
+++ b/resources/assets/js/vues/image-manager.js
@@ -127,8 +127,6 @@ const methods = {
message += errors[key].join('\n');
});
this.$events.emit('error', message);
- } else if (error.response.status === 403) {
- this.$events.emit('error', error.response.data.error);
}
});
},
@@ -144,8 +142,6 @@ const methods = {
}).catch(error=> {
if (error.response.status === 400) {
this.dependantPages = error.response.data;
- } else if (error.response.status === 403) {
- this.$events.emit('error', error.response.data.error);
}
});
},
diff --git a/resources/assets/js/vues/vues.js b/resources/assets/js/vues/vues.js
index e5ab50c4d..d4c4c4574 100644
--- a/resources/assets/js/vues/vues.js
+++ b/resources/assets/js/vues/vues.js
@@ -6,19 +6,20 @@ function exists(id) {
let vueMapping = {
'search-system': require('./search'),
- 'entity-dashboard': require('./entity-search'),
+ 'entity-dashboard': require('./entity-dashboard'),
'code-editor': require('./code-editor'),
'image-manager': require('./image-manager'),
'tag-manager': require('./tag-manager'),
+ 'attachment-manager': require('./attachment-manager'),
'page-comments': require('./page-comments')
};
window.vues = {};
-Object.keys(vueMapping).forEach(id => {
- if (exists(id)) {
- let config = vueMapping[id];
- config.el = '#' + id;
- window.vues[id] = new Vue(config);
- }
-});
\ No newline at end of file
+let ids = Object.keys(vueMapping);
+for (let i = 0, len = ids.length; i < len; i++) {
+ if (!exists(ids[i])) continue;
+ let config = vueMapping[ids[i]];
+ config.el = '#' + ids[i];
+ window.vues[ids[i]] = new Vue(config);
+}
\ No newline at end of file
diff --git a/resources/assets/sass/_blocks.scss b/resources/assets/sass/_blocks.scss
index bd3f8ff4e..e3a0d6952 100644
--- a/resources/assets/sass/_blocks.scss
+++ b/resources/assets/sass/_blocks.scss
@@ -134,8 +134,7 @@
.callout {
border-left: 3px solid #BBB;
background-color: #EEE;
- padding: $-s;
- padding-left: $-xl;
+ padding: $-s $-s $-s $-xl;
display: block;
position: relative;
&:before {
diff --git a/resources/assets/sass/_buttons.scss b/resources/assets/sass/_buttons.scss
index 6e03c9217..202eb935b 100644
--- a/resources/assets/sass/_buttons.scss
+++ b/resources/assets/sass/_buttons.scss
@@ -31,7 +31,6 @@ $button-border-radius: 2px;
display: inline-block;
border: none;
font-weight: 500;
- font-family: $text;
outline: 0;
border-radius: $button-border-radius;
cursor: pointer;
@@ -65,6 +64,7 @@ $button-border-radius: 2px;
padding: 0;
margin: 0;
border: none;
+ user-select: none;
&:focus, &:active {
outline: 0;
}
diff --git a/resources/assets/sass/_codemirror.scss b/resources/assets/sass/_codemirror.scss
index bd85218a5..e281d4c0d 100644
--- a/resources/assets/sass/_codemirror.scss
+++ b/resources/assets/sass/_codemirror.scss
@@ -2,7 +2,6 @@
.CodeMirror {
/* Set height, width, borders, and global font properties here */
- font-family: monospace;
height: 300px;
color: black;
}
@@ -235,7 +234,6 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
-moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
border-width: 0;
background: transparent;
- font-family: inherit;
font-size: inherit;
margin: 0;
white-space: pre;
diff --git a/resources/assets/sass/_components.scss b/resources/assets/sass/_components.scss
index 8092caa07..525b4f8f1 100644
--- a/resources/assets/sass/_components.scss
+++ b/resources/assets/sass/_components.scss
@@ -512,7 +512,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
}
-[tab-container] .nav-tabs {
+.tab-container .nav-tabs {
text-align: left;
border-bottom: 1px solid #DDD;
margin-bottom: $-m;
diff --git a/resources/assets/sass/_fonts.scss b/resources/assets/sass/_fonts.scss
deleted file mode 100644
index c8e8ea833..000000000
--- a/resources/assets/sass/_fonts.scss
+++ /dev/null
@@ -1,102 +0,0 @@
-// Generated using https://google-webfonts-helper.herokuapp.com
-
-/* roboto-100 - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 100;
- src: local('Roboto Thin'), local('Roboto-Thin'),
- url('../fonts/roboto-v15-cyrillic_latin-100.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-100.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-100italic - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 100;
- src: local('Roboto Thin Italic'), local('Roboto-ThinItalic'),
- url('../fonts/roboto-v15-cyrillic_latin-100italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-100italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-300 - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 300;
- src: local('Roboto Light'), local('Roboto-Light'),
- url('../fonts/roboto-v15-cyrillic_latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-300italic - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 300;
- src: local('Roboto Light Italic'), local('Roboto-LightItalic'),
- url('../fonts/roboto-v15-cyrillic_latin-300italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-300italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-regular - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 400;
- src: local('Roboto'), local('Roboto-Regular'),
- url('../fonts/roboto-v15-cyrillic_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-italic - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 400;
- src: local('Roboto Italic'), local('Roboto-Italic'),
- url('../fonts/roboto-v15-cyrillic_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-500 - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 500;
- src: local('Roboto Medium'), local('Roboto-Medium'),
- url('../fonts/roboto-v15-cyrillic_latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-500italic - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 500;
- src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'),
- url('../fonts/roboto-v15-cyrillic_latin-500italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-500italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-700 - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: normal;
- font-weight: 700;
- src: local('Roboto Bold'), local('Roboto-Bold'),
- url('../fonts/roboto-v15-cyrillic_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-/* roboto-700italic - cyrillic_latin */
-@font-face {
- font-family: 'Roboto';
- font-style: italic;
- font-weight: 700;
- src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'),
- url('../fonts/roboto-v15-cyrillic_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-v15-cyrillic_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
-
-/* roboto-mono-regular - latin */
-@font-face {
- font-family: 'Roboto Mono';
- font-style: normal;
- font-weight: 400;
- src: local('Roboto Mono'), local('RobotoMono-Regular'),
- url('../fonts/roboto-mono-v4-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */
- url('../fonts/roboto-mono-v4-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
-}
\ No newline at end of file
diff --git a/resources/assets/sass/_forms.scss b/resources/assets/sass/_forms.scss
index 866316fc5..d372359cc 100644
--- a/resources/assets/sass/_forms.scss
+++ b/resources/assets/sass/_forms.scss
@@ -5,7 +5,6 @@
border: 1px solid #CCC;
display: inline-block;
font-size: $fs-s;
- font-family: $text;
padding: $-xs;
color: #222;
width: 250px;
@@ -33,7 +32,6 @@
position: relative;
z-index: 5;
#markdown-editor-input {
- font-family: 'Roboto Mono', monospace;
font-style: normal;
font-weight: 400;
padding: $-xs $-m;
@@ -69,7 +67,6 @@
.editor-toolbar {
width: 100%;
padding: $-xs $-m;
- font-family: 'Roboto Mono', monospace;
font-size: 11px;
line-height: 1.6;
border-bottom: 1px solid #DDD;
@@ -251,15 +248,14 @@ div[editor-type="markdown"] .title-input.page-title input[type="text"] {
border: none;
color: $primary;
padding: 0;
- margin: 0;
cursor: pointer;
- margin-left: $-s;
- }
- button[type="submit"] {
- margin-left: -$-l;
+ position: absolute;
+ left: 7px;
+ top: 7px;
}
input {
- padding-right: $-l;
+ display: block;
+ padding-left: $-l;
width: 300px;
max-width: 100%;
}
diff --git a/resources/assets/sass/_header.scss b/resources/assets/sass/_header.scss
index ae8dd3ff5..49bd74b07 100644
--- a/resources/assets/sass/_header.scss
+++ b/resources/assets/sass/_header.scss
@@ -12,7 +12,6 @@ header {
padding: $-m;
}
border-bottom: 1px solid #DDD;
- //margin-bottom: $-l;
.links {
display: inline-block;
vertical-align: top;
@@ -23,26 +22,27 @@ header {
}
.links a {
display: inline-block;
- padding: $-l;
+ padding: $-m $-l;
color: #FFF;
&:last-child {
padding-right: 0;
}
@include smaller-than($screen-md) {
- padding: $-l $-s;
+ padding: $-m $-s;
}
}
.avatar, .user-name {
display: inline-block;
}
.avatar {
- //margin-top: (45px/2);
width: 30px;
height: 30px;
}
.user-name {
vertical-align: top;
- padding-top: $-l;
+ padding-top: $-m;
+ position: relative;
+ top: -3px;
display: inline-block;
cursor: pointer;
> * {
@@ -66,53 +66,57 @@ header {
}
}
}
- @include smaller-than($screen-md) {
+ @include smaller-than($screen-sm) {
text-align: center;
.float.right {
float: none;
}
- }
- @include smaller-than($screen-sm) {
.links a {
padding: $-s;
}
- form.search-box {
- margin-top: 0;
- }
.user-name {
padding-top: $-s;
}
}
- .dropdown-container {
- font-size: 0.9em;
+}
+
+.header-search {
+ display: inline-block;
+}
+header .search-box {
+ display: inline-block;
+ margin-top: $-s;
+ input {
+ background-color: rgba(0, 0, 0, 0.2);
+ border: 1px solid rgba(255, 255, 255, 0.3);
+ color: #EEE;
+ }
+ button {
+ color: #EEE;
+ }
+ ::-webkit-input-placeholder { /* Chrome/Opera/Safari */
+ color: #DDD;
+ }
+ ::-moz-placeholder { /* Firefox 19+ */
+ color: #DDD;
+ }
+ :-ms-input-placeholder { /* IE 10+ */
+ color: #DDD;
+ }
+ :-moz-placeholder { /* Firefox 18- */
+ color: #DDD;
+ }
+ @include smaller-than($screen-lg) {
+ max-width: 250px;
+ }
+ @include smaller-than($l) {
+ max-width: 200px;
}
}
-form.search-box {
- margin-top: $-l *0.9;
- display: inline-block;
- position: relative;
- text-align: left;
- input {
- background-color: transparent;
- border-radius: 24px;
- border: 2px solid #EEE;
- color: #EEE;
- padding-left: $-m;
- padding-right: $-l;
- outline: 0;
- }
- button {
- vertical-align: top;
- margin-left: -$-l;
- color: #FFF;
- top: 6px;
- right: 4px;
- display: inline-block;
- position: absolute;
- &:hover {
- color: #FFF;
- }
+@include smaller-than($s) {
+ .header-search {
+ display: block;
}
}
@@ -128,12 +132,12 @@ form.search-box {
font-size: 1.8em;
color: #fff;
font-weight: 400;
- padding: $-l $-l $-l 0;
+ padding: 14px $-l 14px 0;
vertical-align: top;
line-height: 1;
}
.logo-image {
- margin: $-m $-s $-m 0;
+ margin: $-xs $-s $-xs 0;
vertical-align: top;
height: 43px;
}
@@ -227,4 +231,7 @@ form.search-box {
border-bottom: 2px solid $primary;
}
}
+}
+.faded-small .nav-tabs a {
+ padding: $-s $-m;
}
\ No newline at end of file
diff --git a/resources/assets/sass/_html.scss b/resources/assets/sass/_html.scss
index c061f9d64..27ca04eb7 100644
--- a/resources/assets/sass/_html.scss
+++ b/resources/assets/sass/_html.scss
@@ -12,7 +12,6 @@ html {
}
body {
- font-family: $text;
font-size: $fs-m;
line-height: 1.6;
color: #616161;
diff --git a/resources/assets/sass/_tables.scss b/resources/assets/sass/_tables.scss
index ea517fee3..31ac92f60 100644
--- a/resources/assets/sass/_tables.scss
+++ b/resources/assets/sass/_tables.scss
@@ -59,18 +59,9 @@ table.list-table {
}
}
-table.file-table {
- @extend .no-style;
- td {
- padding: $-xs;
- }
- .ui-sortable-helper {
- display: table;
- }
-}
-
.fake-table {
display: table;
+ width: 100%;
> div {
display: table-row-group;
}
diff --git a/resources/assets/sass/_text.scss b/resources/assets/sass/_text.scss
index 2ef4bd16d..d38a5c515 100644
--- a/resources/assets/sass/_text.scss
+++ b/resources/assets/sass/_text.scss
@@ -1,3 +1,14 @@
+/**
+ * Fonts
+ */
+
+body, button, input, select, label {
+ font-family: $text;
+}
+.Codemirror, pre, #markdown-editor-input, .editor-toolbar, .code-base {
+ font-family: $mono;
+}
+
/*
* Header Styles
*/
@@ -58,7 +69,6 @@ a, .link {
cursor: pointer;
text-decoration: none;
transition: color ease-in-out 80ms;
- font-family: $text;
line-height: 1.6;
&:hover {
text-decoration: underline;
@@ -131,7 +141,6 @@ sub, .subscript {
}
pre {
- font-family: monospace;
font-size: 12px;
background-color: #f5f5f5;
border: 1px solid #DDD;
@@ -180,7 +189,6 @@ blockquote {
.code-base {
background-color: #F8F8F8;
- font-family: monospace;
font-size: 0.80em;
border: 1px solid #DDD;
border-radius: 3px;
diff --git a/resources/assets/sass/_variables.scss b/resources/assets/sass/_variables.scss
index 3e864aaa4..18880fa5b 100644
--- a/resources/assets/sass/_variables.scss
+++ b/resources/assets/sass/_variables.scss
@@ -27,8 +27,12 @@ $-xs: 6px;
$-xxs: 3px;
// Fonts
-$heading: 'Roboto', 'DejaVu Sans', Helvetica, Arial, sans-serif;
-$text: 'Roboto', 'DejaVu Sans', Helvetica, Arial, sans-serif;
+$text: -apple-system, BlinkMacSystemFont,
+"Segoe UI", "Oxygen", "Ubuntu", "Roboto", "Cantarell",
+"Fira Sans", "Droid Sans", "Helvetica Neue",
+sans-serif;
+$mono: "Lucida Console", "DejaVu Sans Mono", "Ubunto Mono", Monaco, monospace;
+$heading: $text;
$fs-m: 15px;
$fs-s: 14px;
diff --git a/resources/assets/sass/export-styles.scss b/resources/assets/sass/export-styles.scss
index 72b5b16b5..19579004b 100644
--- a/resources/assets/sass/export-styles.scss
+++ b/resources/assets/sass/export-styles.scss
@@ -1,4 +1,3 @@
-//@import "reset";
@import "variables";
@import "mixins";
@import "html";
diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss
index e40430bd8..b912bf7ee 100644
--- a/resources/assets/sass/styles.scss
+++ b/resources/assets/sass/styles.scss
@@ -1,6 +1,5 @@
@import "reset";
@import "variables";
-@import "fonts";
@import "mixins";
@import "html";
@import "text";
@@ -18,12 +17,11 @@
@import "pages";
@import "comments";
-[v-cloak], [v-show] {
+[v-cloak] {
display: none; opacity: 0;
animation-name: none !important;
}
-
[ng\:cloak], [ng-cloak], .ng-cloak {
display: none !important;
user-select: none;
diff --git a/resources/lang/de/activities.php b/resources/lang/de/activities.php
index c2d20b3a6..3318ea752 100644
--- a/resources/lang/de/activities.php
+++ b/resources/lang/de/activities.php
@@ -8,33 +8,33 @@ return [
*/
// Pages
- 'page_create' => 'Seite erstellt',
- 'page_create_notification' => 'Seite erfolgreich erstellt',
- 'page_update' => 'Seite aktualisiert',
- 'page_update_notification' => 'Seite erfolgreich aktualisiert',
- 'page_delete' => 'Seite gelöscht',
- 'page_delete_notification' => 'Seite erfolgreich gelöscht',
- 'page_restore' => 'Seite wiederhergstellt',
- 'page_restore_notification' => 'Seite erfolgreich wiederhergstellt',
- 'page_move' => 'Seite verschoben',
+ 'page_create' => 'hat Seite erstellt:',
+ 'page_create_notification' => 'hat Seite erfolgreich erstellt:',
+ 'page_update' => 'hat Seite aktualisiert:',
+ 'page_update_notification' => 'hat Seite erfolgreich aktualisiert:',
+ 'page_delete' => 'hat Seite gelöscht:',
+ 'page_delete_notification' => 'hat Seite erfolgreich gelöscht:',
+ 'page_restore' => 'hat Seite wiederhergstellt:',
+ 'page_restore_notification' => 'hat Seite erfolgreich wiederhergstellt:',
+ 'page_move' => 'hat Seite verschoben:',
// Chapters
- 'chapter_create' => 'Kapitel erstellt',
- 'chapter_create_notification' => 'Kapitel erfolgreich erstellt',
- 'chapter_update' => 'Kapitel aktualisiert',
- 'chapter_update_notification' => 'Kapitel erfolgreich aktualisiert',
- 'chapter_delete' => 'Kapitel gelöscht',
- 'chapter_delete_notification' => 'Kapitel erfolgreich gelöscht',
- 'chapter_move' => 'Kapitel verschoben',
+ 'chapter_create' => 'hat Kapitel erstellt:',
+ 'chapter_create_notification' => 'hat Kapitel erfolgreich erstellt:',
+ 'chapter_update' => 'hat Kapitel aktualisiert:',
+ 'chapter_update_notification' => 'hat Kapitel erfolgreich aktualisiert:',
+ 'chapter_delete' => 'hat Kapitel gelöscht',
+ 'chapter_delete_notification' => 'hat Kapitel erfolgreich gelöscht:',
+ 'chapter_move' => 'hat Kapitel verschoben:',
// Books
- 'book_create' => 'Buch erstellt',
- 'book_create_notification' => 'Buch erfolgreich erstellt',
- 'book_update' => 'Buch aktualisiert',
- 'book_update_notification' => 'Buch erfolgreich aktualisiert',
- 'book_delete' => 'Buch gelöscht',
- 'book_delete_notification' => 'Buch erfolgreich gelöscht',
- 'book_sort' => 'Buch sortiert',
- 'book_sort_notification' => 'Buch erfolgreich neu sortiert',
+ 'book_create' => 'hat Buch erstellt:',
+ 'book_create_notification' => 'hat Buch erfolgreich erstellt:',
+ 'book_update' => 'hat Buch aktualisiert:',
+ 'book_update_notification' => 'hat Buch erfolgreich aktualisiert:',
+ 'book_delete' => 'hat Buch gelöscht:',
+ 'book_delete_notification' => 'hat Buch erfolgreich gelöscht:',
+ 'book_sort' => 'hat Buch sortiert:',
+ 'book_sort_notification' => 'hat Buch erfolgreich neu sortiert:',
];
diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php
index f253cdfa1..8f4afe654 100644
--- a/resources/lang/de/auth.php
+++ b/resources/lang/de/auth.php
@@ -10,8 +10,8 @@ return [
| these language lines according to your application's requirements.
|
*/
- 'failed' => 'Dies sind keine gültigen Anmeldedaten.',
- 'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen sie es in :seconds Sekunden erneut.',
+ 'failed' => 'Die eingegebenen Anmeldedaten sind ungültig.',
+ 'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.',
/**
* Login & Register
@@ -29,16 +29,16 @@ return [
'forgot_password' => 'Passwort vergessen?',
'remember_me' => 'Angemeldet bleiben',
'ldap_email_hint' => 'Bitte geben Sie eine E-Mail-Adresse ein, um diese mit dem Account zu nutzen.',
- 'create_account' => 'Account anlegen',
- 'social_login' => 'Social Login',
- 'social_registration' => 'Social Registrierung',
- 'social_registration_text' => 'Mit einem dieser Möglichkeiten registrieren oder anmelden.',
+ 'create_account' => 'Account registrieren',
+ 'social_login' => 'Mit Sozialem Netzwerk anmelden',
+ 'social_registration' => 'Mit Sozialem Netzwerk registrieren',
+ 'social_registration_text' => 'Mit einer dieser Dienste registrieren oder anmelden',
'register_thanks' => 'Vielen Dank für Ihre Registrierung!',
- 'register_confirm' => 'Bitte prüfen Sie Ihren E-Mail Eingang und klicken auf den Verifizieren-Button, um :appName nutzen zu können.',
- 'registrations_disabled' => 'Die Registrierung ist momentan nicht möglich',
- 'registration_email_domain_invalid' => 'Diese E-Mail-Domain ist für die Benutzer der Applikation nicht freigeschaltet.',
+ 'register_confirm' => 'Bitte prüfen Sie Ihren Posteingang und bestätigen Sie die Registrierung.',
+ 'registrations_disabled' => 'Eine Registrierung ist momentan nicht möglich',
+ 'registration_email_domain_invalid' => 'Sie können sich mit dieser E-Mail nicht registrieren.',
'register_success' => 'Vielen Dank für Ihre Registrierung! Die Daten sind gespeichert und Sie sind angemeldet.',
@@ -46,30 +46,30 @@ return [
* Password Reset
*/
'reset_password' => 'Passwort vergessen',
- 'reset_password_send_instructions' => 'Bitte geben Sie unten Ihre E-Mail-Adresse ein und Sie erhalten eine E-Mail, um Ihr Passwort zurück zu setzen.',
+ 'reset_password_send_instructions' => 'Bitte geben Sie Ihre E-Mail-Adresse ein. Danach erhalten Sie eine E-Mail mit einem Link zum Zurücksetzen Ihres Passwortes.',
'reset_password_send_button' => 'Passwort zurücksetzen',
- 'reset_password_sent_success' => 'Eine E-Mail mit den Instruktionen, um Ihr Passwort zurückzusetzen wurde an :email gesendet.',
- 'reset_password_success' => 'Ihr Passwort wurde erfolgreich zurück gesetzt.',
+ 'reset_password_sent_success' => 'Eine E-Mail mit dem Link zum Zurücksetzen Ihres Passwortes wurde an :email gesendet.',
+ 'reset_password_success' => 'Ihr Passwort wurde erfolgreich zurückgesetzt.',
'email_reset_subject' => 'Passwort zurücksetzen für :appName',
- 'email_reset_text' => 'Sie erhalten diese E-Mail, weil eine Passwort-Rücksetzung für Ihren Account beantragt wurde.',
- 'email_reset_not_requested' => 'Wenn Sie die Passwort-Rücksetzung nicht ausgelöst haben, ist kein weiteres Handeln notwendig.',
+ 'email_reset_text' => 'Sie erhalten diese E-Mail, weil jemand versucht hat, Ihr Passwort zurückzusetzen.',
+ 'email_reset_not_requested' => 'Wenn Sie das nicht waren, brauchen Sie nichts weiter zu tun.',
/**
* Email Confirmation
*/
- 'email_confirm_subject' => 'Bestätigen sie ihre E-Mail Adresse bei :appName',
- 'email_confirm_greeting' => 'Danke, dass sie :appName beigetreten sind!',
- 'email_confirm_text' => 'Bitte bestätigen sie ihre E-Mail Adresse, indem sie auf den Button klicken:',
- 'email_confirm_action' => 'E-Mail Adresse bestätigen',
- 'email_confirm_send_error' => 'Bestätigungs-E-Mail benötigt, aber das System konnte die E-Mail nicht versenden. Kontaktieren sie den Administrator, um sicherzustellen, dass das Sytsem korrekt eingerichtet ist.',
- 'email_confirm_success' => 'Ihre E-Mail Adresse wurde bestätigt!',
- 'email_confirm_resent' => 'Bestätigungs-E-Mail wurde erneut versendet, bitte überprüfen sie ihren Posteingang.',
+ 'email_confirm_subject' => 'Bestätigen Sie Ihre E-Mail-Adresse für :appName',
+ 'email_confirm_greeting' => 'Danke, dass Sie sich für :appName registriert haben!',
+ 'email_confirm_text' => 'Bitte bestätigen Sie Ihre E-Mail-Adresse, indem Sie auf die Schaltfläche klicken:',
+ 'email_confirm_action' => 'E-Mail-Adresse bestätigen',
+ 'email_confirm_send_error' => 'Leider konnte die für die Registrierung notwendige E-Mail zur bestätigung Ihrer E-Mail-Adresse nicht versandt werden. Bitte kontaktieren Sie den Systemadministrator!',
+ 'email_confirm_success' => 'Ihre E-Mail-Adresse wurde bestätigt!',
+ 'email_confirm_resent' => 'Bestätigungs-E-Mail wurde erneut versendet, bitte überprüfen Sie Ihren Posteingang.',
'email_not_confirmed' => 'E-Mail-Adresse ist nicht bestätigt',
'email_not_confirmed_text' => 'Ihre E-Mail-Adresse ist bisher nicht bestätigt.',
'email_not_confirmed_click_link' => 'Bitte klicken Sie auf den Link in der E-Mail, die Sie nach der Registrierung erhalten haben.',
'email_not_confirmed_resend' => 'Wenn Sie die E-Mail nicht erhalten haben, können Sie die Nachricht erneut anfordern. Füllen Sie hierzu bitte das folgende Formular aus:',
- 'email_not_confirmed_resend_button' => 'Bestätigungs E-Mail erneut senden',
+ 'email_not_confirmed_resend_button' => 'Bestätigungs-E-Mail erneut senden',
];
diff --git a/resources/lang/de/common.php b/resources/lang/de/common.php
index 7ad1743a0..3c21a9d08 100644
--- a/resources/lang/de/common.php
+++ b/resources/lang/de/common.php
@@ -28,9 +28,9 @@ return [
'edit' => 'Bearbeiten',
'sort' => 'Sortieren',
'move' => 'Verschieben',
- 'delete' => 'Löschen',
+ 'delete' => 'Löschen',
'search' => 'Suchen',
- 'search_clear' => 'Suche löschen',
+ 'search_clear' => 'Suche löschen',
'reset' => 'Zurücksetzen',
'remove' => 'Entfernen',
@@ -38,9 +38,9 @@ return [
/**
* Misc
*/
- 'deleted_user' => 'Gelöschte Benutzer',
- 'no_activity' => 'Keine Aktivitäten zum Anzeigen',
- 'no_items' => 'Keine Einträge gefunden.',
+ 'deleted_user' => 'Gelöschte Benutzer',
+ 'no_activity' => 'Keine Aktivitäten zum Anzeigen',
+ 'no_items' => 'Keine Einträge gefunden.',
'back_to_top' => 'nach oben',
'toggle_details' => 'Details zeigen/verstecken',
@@ -53,6 +53,6 @@ return [
/**
* Email Content
*/
- 'email_action_help' => 'Sollte es beim Anklicken des ":actionText" Buttons Probleme geben, kopieren Sie folgende URL und fügen diese in Ihrem Webbrowser ein:',
+ 'email_action_help' => 'Sollte es beim Anklicken der Schaltfläche ":action_text" Probleme geben, öffnen Sie folgende URL in Ihrem Browser:',
'email_rights' => 'Alle Rechte vorbehalten',
-];
\ No newline at end of file
+];
diff --git a/resources/lang/de/components.php b/resources/lang/de/components.php
index a8538c465..26bf3e626 100644
--- a/resources/lang/de/components.php
+++ b/resources/lang/de/components.php
@@ -13,12 +13,12 @@ return [
'image_uploaded' => 'Hochgeladen am :uploadedDate',
'image_load_more' => 'Mehr',
'image_image_name' => 'Bildname',
- 'image_delete_confirm' => 'Dieses Bild wird auf den folgenden Seiten benutzt. Bitte klicken Sie erneut auf löschen, wenn Sie dieses Bild tatsächlich entfernen möchten.',
+ 'image_delete_confirm' => 'Dieses Bild wird auf den folgenden Seiten benutzt. Bitte klicken Sie erneut auf löschen, wenn Sie dieses Bild wirklich entfernen möchten.',
'image_select_image' => 'Bild auswählen',
- 'image_dropzone' => 'Ziehen Sie Bilder hier hinein oder klicken Sie hier, um ein Bild auszuwählen',
+ 'image_dropzone' => 'Ziehen Sie Bilder hierher oder klicken Sie, um ein Bild auszuwählen',
'images_deleted' => 'Bilder gelöscht',
'image_preview' => 'Bildvorschau',
'image_upload_success' => 'Bild erfolgreich hochgeladen',
'image_update_success' => 'Bilddetails erfolgreich aktualisiert',
'image_delete_success' => 'Bild erfolgreich gelöscht'
-];
\ No newline at end of file
+];
diff --git a/resources/lang/de/entities.php b/resources/lang/de/entities.php
index 5d7d5cdde..910218a58 100644
--- a/resources/lang/de/entities.php
+++ b/resources/lang/de/entities.php
@@ -4,38 +4,39 @@ return [
/**
* Shared
*/
- 'recently_created' => 'Kürzlich angelegt',
- 'recently_created_pages' => 'Kürzlich angelegte Seiten',
- 'recently_updated_pages' => 'Kürzlich aktualisierte Seiten',
- 'recently_created_chapters' => 'Kürzlich angelegte Kapitel',
- 'recently_created_books' => 'Kürzlich angelegte Bücher',
- 'recently_update' => 'Kürzlich aktualisiert',
- 'recently_viewed' => 'Kürzlich angesehen',
- 'recent_activity' => 'Kürzliche Aktivität',
+ 'recently_created' => 'Kürzlich angelegt',
+ 'recently_created_pages' => 'Kürzlich angelegte Seiten',
+ 'recently_updated_pages' => 'Kürzlich aktualisierte Seiten',
+ 'recently_created_chapters' => 'Kürzlich angelegte Kapitel',
+ 'recently_created_books' => 'Kürzlich angelegte Bücher',
+ 'recently_update' => 'Kürzlich aktualisiert',
+ 'recently_viewed' => 'Kürzlich angesehen',
+ 'recent_activity' => 'Kürzliche Aktivität',
'create_now' => 'Jetzt anlegen',
- 'revisions' => 'Revisionen',
- 'meta_created' => 'Angelegt am :timeLength',
- 'meta_created_name' => 'Angelegt am :timeLength durch :user',
- 'meta_updated' => 'Aktualisiert am :timeLength',
- 'meta_updated_name' => 'Aktualisiert am :timeLength durch :user',
+ 'revisions' => 'Versionen',
+ 'meta_revision' => 'Version #:revisionCount',
+ 'meta_created' => 'Erstellt: :timeLength',
+ 'meta_created_name' => 'Erstellt: :timeLength von :user',
+ 'meta_updated' => 'Zuletzt aktualisiert: :timeLength',
+ 'meta_updated_name' => 'Zuletzt aktualisiert: :timeLength von :user',
'x_pages' => ':count Seiten',
- 'entity_select' => 'Eintrag auswählen',
+ 'entity_select' => 'Eintrag auswählen',
'images' => 'Bilder',
- 'my_recent_drafts' => 'Meine kürzlichen Entwürfe',
- 'my_recently_viewed' => 'Kürzlich von mir angesehen',
+ 'my_recent_drafts' => 'Meine kürzlichen Entwürfe',
+ 'my_recently_viewed' => 'Kürzlich von mir angesehen',
'no_pages_viewed' => 'Sie haben bisher keine Seiten angesehen.',
'no_pages_recently_created' => 'Sie haben bisher keine Seiten angelegt.',
'no_pages_recently_updated' => 'Sie haben bisher keine Seiten aktualisiert.',
'export' => 'Exportieren',
'export_html' => 'HTML-Datei',
'export_pdf' => 'PDF-Datei',
- 'export_text' => 'Text-Datei',
+ 'export_text' => 'Textdatei',
/**
* Permissions and restrictions
*/
'permissions' => 'Berechtigungen',
- 'permissions_intro' => 'Wenn individuelle Berechtigungen aktiviert werden, überschreiben diese Einstellungen durch Rollen zugewiesene Berechtigungen.',
+ 'permissions_intro' => 'Wenn individuelle Berechtigungen aktiviert werden, überschreiben diese Einstellungen durch Rollen zugewiesene Berechtigungen.',
'permissions_enable' => 'Individuelle Berechtigungen aktivieren',
'permissions_save' => 'Berechtigungen speichern',
@@ -43,41 +44,58 @@ return [
* Search
*/
'search_results' => 'Suchergebnisse',
- 'search_clear' => 'Suche zurücksetzen',
- 'search_no_pages' => 'Es wurden keine passenden Suchergebnisse gefunden',
- 'search_for_term' => 'Suche nach :term',
+ 'search_total_results_found' => ':count Ergebnis gefunden|:count Ergebnisse gesamt',
+ 'search_clear' => 'Filter löschen',
+ 'search_no_pages' => 'Keine Seiten gefunden',
+ 'search_for_term' => 'Nach :term suchen',
+ 'search_more' => 'Mehr Ergebnisse',
+ 'search_filters' => 'Filter',
+ 'search_content_type' => 'Inhaltstyp',
+ 'search_exact_matches' => 'Exakte Treffer',
+ 'search_tags' => 'Nach Schlagwort suchen',
+ 'search_viewed_by_me' => 'Schon von mir angesehen',
+ 'search_not_viewed_by_me' => 'Noch nicht von mir angesehen',
+ 'search_permissions_set' => 'Berechtigungen gesetzt',
+ 'search_created_by_me' => 'Von mir erstellt',
+ 'search_updated_by_me' => 'Von mir aktualisiert',
+ 'search_updated_before' => 'Aktualisiert vor',
+ 'search_updated_after' => 'Aktualisiert nach',
+ 'search_created_before' => 'Erstellt vor',
+ 'search_created_after' => 'Erstellt nach',
+ 'search_set_date' => 'Datum auswählen',
+ 'search_update' => 'Suche aktualisieren',
/**
* Books
*/
'book' => 'Buch',
- 'books' => 'Bücher',
- 'books_empty' => 'Es wurden keine Bücher angelegt',
- 'books_popular' => 'Populäre Bücher',
- 'books_recent' => 'Kürzlich genutzte Bücher',
- 'books_popular_empty' => 'Die populärsten Bücher werden hier angezeigt.',
- 'books_create' => 'Neues Buch anlegen',
- 'books_delete' => 'Buch löschen',
- 'books_delete_named' => 'Buch :bookName löschen',
- 'books_delete_explain' => 'Sie möchten das Buch \':bookName\' löschen und alle Seiten und Kapitel entfernen.',
- 'books_delete_confirmation' => 'Sind Sie sicher, dass Sie dieses Buch löschen möchten?',
+ 'books' => 'Bücher',
+ 'books_empty' => 'Keine Bücher vorhanden',
+ 'books_popular' => 'Beliebte Bücher',
+ 'books_recent' => 'Kürzlich angesehene Bücher',
+ 'books_popular_empty' => 'Die beliebtesten Bücher werden hier angezeigt.',
+ 'books_create' => 'Neues Buch erstellen',
+ 'books_delete' => 'Buch löschen',
+ 'books_delete_named' => 'Buch ":bookName" löschen',
+ 'books_delete_explain' => 'Das Buch ":bookName" wird gelöscht und alle zugehörigen Kapitel und Seiten entfernt.',
+ 'books_delete_confirmation' => 'Sind Sie sicher, dass Sie dieses Buch löschen möchten?',
'books_edit' => 'Buch bearbeiten',
- 'books_edit_named' => 'Buch :bookName bearbeiten',
- 'books_form_book_name' => 'Buchname',
+ 'books_edit_named' => 'Buch ":bookName" bearbeiten',
+ 'books_form_book_name' => 'Name des Buches',
'books_save' => 'Buch speichern',
'books_permissions' => 'Buch-Berechtigungen',
'books_permissions_updated' => 'Buch-Berechtigungen aktualisiert',
- 'books_empty_contents' => 'Es sind noch keine Seiten oder Kapitel für dieses Buch angelegt.',
+ 'books_empty_contents' => 'Es sind noch keine Seiten oder Kapitel zu diesem Buch hinzugefügt worden.',
'books_empty_create_page' => 'Neue Seite anlegen',
'books_empty_or' => 'oder',
'books_empty_sort_current_book' => 'Aktuelles Buch sortieren',
- 'books_empty_add_chapter' => 'Neues Kapitel hinzufügen',
+ 'books_empty_add_chapter' => 'Neues Kapitel hinzufügen',
'books_permissions_active' => 'Buch-Berechtigungen aktiv',
'books_search_this' => 'Dieses Buch durchsuchen',
- 'books_navigation' => 'Buch-Navigation',
+ 'books_navigation' => 'Buchnavigation',
'books_sort' => 'Buchinhalte sortieren',
- 'books_sort_named' => 'Buch :bookName sortieren',
- 'books_sort_show_other' => 'Andere Bücher zeigen',
+ 'books_sort_named' => 'Buch ":bookName" sortieren',
+ 'books_sort_show_other' => 'Andere Bücher anzeigen',
'books_sort_save' => 'Neue Reihenfolge speichern',
/**
@@ -85,145 +103,147 @@ return [
*/
'chapter' => 'Kapitel',
'chapters' => 'Kapitel',
- 'chapters_popular' => 'Populäre Kapitel',
+ 'chapters_popular' => 'Beliebte Kapitel',
'chapters_new' => 'Neues Kapitel',
'chapters_create' => 'Neues Kapitel anlegen',
'chapters_delete' => 'Kapitel entfernen',
- 'chapters_delete_named' => 'Kapitel :chapterName entfernen',
- 'chapters_delete_explain' => 'Sie möchten das Kapitel \':chapterName\' löschen und alle Seiten dem direkten Eltern-Buch hinzugefügen.',
- 'chapters_delete_confirm' => 'Sind Sie sicher, dass Sie dieses Kapitel löschen möchten?',
+ 'chapters_delete_named' => 'Kapitel ":chapterName" entfernen',
+ 'chapters_delete_explain' => 'Das Kapitel ":chapterName" wird gelöscht und alle zugehörigen Seiten dem übergeordneten Buch zugeordnet.',
+ 'chapters_delete_confirm' => 'Sind Sie sicher, dass Sie dieses Kapitel löschen möchten?',
'chapters_edit' => 'Kapitel bearbeiten',
- 'chapters_edit_named' => 'Kapitel :chapterName bearbeiten',
+ 'chapters_edit_named' => 'Kapitel ":chapterName" bearbeiten',
'chapters_save' => 'Kapitel speichern',
'chapters_move' => 'Kapitel verschieben',
- 'chapters_move_named' => 'Kapitel :chapterName verschieben',
- 'chapter_move_success' => 'Kapitel in das Buch :bookName verschoben.',
+ 'chapters_move_named' => 'Kapitel ":chapterName" verschieben',
+ 'chapter_move_success' => 'Das Kapitel wurde in das Buch ":bookName" verschoben.',
'chapters_permissions' => 'Kapitel-Berechtigungen',
- 'chapters_empty' => 'Aktuell sind keine Kapitel in diesem Buch angelegt.',
+ 'chapters_empty' => 'Aktuell sind keine Kapitel diesem Buch hinzugefügt worden.',
'chapters_permissions_active' => 'Kapitel-Berechtigungen aktiv',
'chapters_permissions_success' => 'Kapitel-Berechtigungenen aktualisisert',
+ 'chapters_search_this' => 'Dieses Kapitel durchsuchen',
/**
* Pages
*/
'page' => 'Seite',
'pages' => 'Seiten',
- 'pages_popular' => 'Populäre Seiten',
+ 'pages_popular' => 'Beliebte Seiten',
'pages_new' => 'Neue Seite',
- 'pages_attachments' => 'Anhänge',
+ 'pages_attachments' => 'Anhänge',
'pages_navigation' => 'Seitennavigation',
- 'pages_delete' => 'Seite löschen',
- 'pages_delete_named' => 'Seite :pageName löschen',
- 'pages_delete_draft_named' => 'Seitenentwurf von :pageName löschen',
- 'pages_delete_draft' => 'Seitenentwurf löschen',
- 'pages_delete_success' => 'Seite gelöscht',
- 'pages_delete_draft_success' => 'Seitenentwurf gelöscht',
- 'pages_delete_confirm' => 'Sind Sie sicher, dass Sie diese Seite löschen möchen?',
- 'pages_delete_draft_confirm' => 'Sind Sie sicher, dass Sie diesen Seitenentwurf löschen möchten?',
- 'pages_editing_named' => 'Seite :pageName bearbeiten',
- 'pages_edit_toggle_header' => 'Toggle header',
+ 'pages_delete' => 'Seite löschen',
+ 'pages_delete_named' => 'Seite ":pageName" löschen',
+ 'pages_delete_draft_named' => 'Seitenentwurf von ":pageName" löschen',
+ 'pages_delete_draft' => 'Seitenentwurf löschen',
+ 'pages_delete_success' => 'Seite gelöscht',
+ 'pages_delete_draft_success' => 'Seitenentwurf gelöscht',
+ 'pages_delete_confirm' => 'Sind Sie sicher, dass Sie diese Seite löschen möchen?',
+ 'pages_delete_draft_confirm' => 'Sind Sie sicher, dass Sie diesen Seitenentwurf löschen möchten?',
+ 'pages_editing_named' => 'Seite ":pageName" bearbeiten',
+ 'pages_edit_toggle_header' => 'Hauptmenü anzeigen/verstecken',
'pages_edit_save_draft' => 'Entwurf speichern',
'pages_edit_draft' => 'Seitenentwurf bearbeiten',
'pages_editing_draft' => 'Seitenentwurf bearbeiten',
'pages_editing_page' => 'Seite bearbeiten',
'pages_edit_draft_save_at' => 'Entwurf gespeichert um ',
- 'pages_edit_delete_draft' => 'Entwurf löschen',
+ 'pages_edit_delete_draft' => 'Entwurf löschen',
'pages_edit_discard_draft' => 'Entwurf verwerfen',
- 'pages_edit_set_changelog' => 'Veränderungshinweis setzen',
- 'pages_edit_enter_changelog_desc' => 'Bitte geben Sie eine kurze Zusammenfassung Ihrer Änderungen ein',
- 'pages_edit_enter_changelog' => 'Veränderungshinweis eingeben',
+ 'pages_edit_set_changelog' => 'Änderungsprotokoll hinzufügen',
+ 'pages_edit_enter_changelog_desc' => 'Bitte geben Sie eine kurze Zusammenfassung Ihrer Änderungen ein',
+ 'pages_edit_enter_changelog' => 'Änderungsprotokoll eingeben',
'pages_save' => 'Seite speichern',
'pages_title' => 'Seitentitel',
'pages_name' => 'Seitenname',
'pages_md_editor' => 'Redakteur',
'pages_md_preview' => 'Vorschau',
- 'pages_md_insert_image' => 'Bild einfügen',
- 'pages_md_insert_link' => 'Link zu einem Objekt einfügen',
+ 'pages_md_insert_image' => 'Bild einfügen',
+ 'pages_md_insert_link' => 'Link zu einem Objekt einfügen',
'pages_not_in_chapter' => 'Seite ist in keinem Kapitel',
'pages_move' => 'Seite verschieben',
'pages_move_success' => 'Seite nach ":parentName" verschoben',
'pages_permissions' => 'Seiten Berechtigungen',
'pages_permissions_success' => 'Seiten Berechtigungen aktualisiert',
'pages_revisions' => 'Seitenversionen',
- 'pages_revisions_named' => 'Seitenversionen von :pageName',
- 'pages_revision_named' => 'Seitenversion von :pageName',
- 'pages_revisions_created_by' => 'Angelegt von',
+ 'pages_revisions_named' => 'Seitenversionen von ":pageName"',
+ 'pages_revision_named' => 'Seitenversion von ":pageName"',
+ 'pages_revisions_created_by' => 'Erstellt von',
'pages_revisions_date' => 'Versionsdatum',
- 'pages_revisions_changelog' => 'Veränderungshinweise',
- 'pages_revisions_changes' => 'Veränderungen',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_changelog' => 'Änderungsprotokoll',
+ 'pages_revisions_changes' => 'Änderungen',
'pages_revisions_current' => 'Aktuelle Version',
'pages_revisions_preview' => 'Vorschau',
- 'pages_revisions_restore' => 'Zurück sichern',
- 'pages_revisions_none' => 'Diese Seite hat keine älteren Versionen.',
+ 'pages_revisions_restore' => 'Wiederherstellen',
+ 'pages_revisions_none' => 'Diese Seite hat keine älteren Versionen.',
'pages_copy_link' => 'Link kopieren',
'pages_permissions_active' => 'Seiten-Berechtigungen aktiv',
- 'pages_initial_revision' => 'Erste Veröffentlichung',
+ 'pages_initial_revision' => 'Erste Veröffentlichung',
'pages_initial_name' => 'Neue Seite',
- 'pages_editing_draft_notification' => 'Sie bearbeiten momenten einen Entwurf, der zuletzt um :timeDiff gespeichert wurde.',
- 'pages_draft_edited_notification' => 'Diese Seite wurde seit diesem Zeitpunkt verändert. Wir empfehlen Ihnen, diesen Entwurf zu verwerfen.',
+ 'pages_editing_draft_notification' => 'Sie bearbeiten momenten einen Entwurf, der zuletzt :timeDiff gespeichert wurde.',
+ 'pages_draft_edited_notification' => 'Diese Seite wurde seit diesem Zeitpunkt verändert. Wir empfehlen Ihnen, diesen Entwurf zu verwerfen.',
'pages_draft_edit_active' => [
- 'start_a' => ':count Benutzer haben die Bearbeitung dieser Seite begonnen.',
- 'start_b' => ':userName hat die Bearbeitung dieser Seite begonnen.',
+ 'start_a' => ':count Benutzer bearbeiten derzeit diese Seite.',
+ 'start_b' => ':userName bearbeitet jetzt diese Seite.',
'time_a' => 'seit die Seiten zuletzt aktualisiert wurden.',
'time_b' => 'in den letzten :minCount Minuten',
- 'message' => ':start :time. Achten Sie darauf keine Aktualisierungen von anderen Benutzern zu überschreiben!',
+ 'message' => ':start :time. Achten Sie darauf, keine Änderungen von anderen Benutzern zu überschreiben!',
],
'pages_draft_discarded' => 'Entwurf verworfen. Der aktuelle Seiteninhalt wurde geladen.',
/**
* Editor sidebar
*/
- 'page_tags' => 'Seiten-Schlagwörter',
+ 'page_tags' => 'Seiten-Schlagwörter',
'tag' => 'Schlagwort',
- 'tags' => 'Schlagworte',
- 'tag_value' => 'Schlagwortinhalt (Optional)',
- 'tags_explain' => "Fügen Sie Schlagworte hinzu, um Ihren Inhalt zu kategorisieren. \n Sie können einen erklärenden Inhalt hinzufügen, um eine genauere Unterteilung vorzunehmen.",
- 'tags_add' => 'Weiteres Schlagwort hinzufügen',
- 'attachments' => 'Anhänge',
- 'attachments_explain' => 'Sie können auf Ihrer Seite Dateien hochladen oder Links anfügen. Diese werden in der seitlich angezeigt.',
- 'attachments_explain_instant_save' => 'Änderungen werden direkt gespeichert.',
- 'attachments_items' => 'Angefügte Elemente',
+ 'tags' => 'Schlagwörter',
+ 'tag_value' => 'Inhalt (Optional)',
+ 'tags_explain' => "Fügen Sie Schlagwörter hinzu, um Ihren Inhalt zu kategorisieren.\nSie können einen erklärenden Inhalt hinzufügen, um eine genauere Unterteilung vorzunehmen.",
+ 'tags_add' => 'Weiteres Schlagwort hinzufügen',
+ 'attachments' => 'Anhänge',
+ 'attachments_explain' => 'Sie können auf Ihrer Seite Dateien hochladen oder Links hinzufügen. Diese werden in der Seitenleiste angezeigt.',
+ 'attachments_explain_instant_save' => 'Änderungen werden direkt gespeichert.',
+ 'attachments_items' => 'Angefügte Elemente',
'attachments_upload' => 'Datei hochladen',
- 'attachments_link' => 'Link anfügen',
+ 'attachments_link' => 'Link hinzufügen',
'attachments_set_link' => 'Link setzen',
- 'attachments_delete_confirm' => 'Klicken Sie erneut auf löschen, um diesen Anhang zu entfernen.',
- 'attachments_dropzone' => 'Ziehen Sie Dateien hier hinein oder klicken Sie hier, um eine Datei auszuwählen',
+ 'attachments_delete_confirm' => 'Klicken Sie erneut auf löschen, um diesen Anhang zu entfernen.',
+ 'attachments_dropzone' => 'Ziehen Sie Dateien hierher oder klicken Sie, um eine Datei auszuwählen',
'attachments_no_files' => 'Es wurden bisher keine Dateien hochgeladen.',
- 'attachments_explain_link' => 'Wenn Sie keine Datei hochladen möchten, können Sie stattdessen einen Link anfügen. Dieser Link kann auf eine andere Seite oder zu einer Datei in der Cloud weisen.',
+ 'attachments_explain_link' => 'Wenn Sie keine Datei hochladen möchten, können Sie stattdessen einen Link hinzufügen. Dieser Link kann auf eine andere Seite oder eine Datei im Internet weisen.',
'attachments_link_name' => 'Link-Name',
'attachment_link' => 'Link zum Anhang',
'attachments_link_url' => 'Link zu einer Datei',
'attachments_link_url_hint' => 'URL einer Seite oder Datei',
- 'attach' => 'anfügen',
+ 'attach' => 'Hinzufügen',
'attachments_edit_file' => 'Datei bearbeiten',
'attachments_edit_file_name' => 'Dateiname',
- 'attachments_edit_drop_upload' => 'Ziehen Sie Dateien hier hinein, um diese hochzuladen und zu überschreiben',
- 'attachments_order_updated' => 'Reihenfolge der Anhänge aktualisiert',
- 'attachments_updated_success' => 'Anhang-Details aktualisiert',
- 'attachments_deleted' => 'Anhang gelöscht',
- 'attachments_file_uploaded' => 'Datei erfolgrecich hochgeladen',
- 'attachments_file_updated' => 'Datei erfolgreich aktualisisert',
- 'attachments_link_attached' => 'Link erfolgreich der Seite hinzugefügt',
+ 'attachments_edit_drop_upload' => 'Ziehen Sie Dateien hierher, um diese hochzuladen und zu überschreiben',
+ 'attachments_order_updated' => 'Reihenfolge der Anhänge aktualisiert',
+ 'attachments_updated_success' => 'Anhangdetails aktualisiert',
+ 'attachments_deleted' => 'Anhang gelöscht',
+ 'attachments_file_uploaded' => 'Datei erfolgreich hochgeladen',
+ 'attachments_file_updated' => 'Datei erfolgreich aktualisiert',
+ 'attachments_link_attached' => 'Link erfolgreich der Seite hinzugefügt',
/**
* Profile View
*/
'profile_user_for_x' => 'Benutzer seit :time',
- 'profile_created_content' => 'Angelegte Inhalte',
- 'profile_not_created_pages' => ':userName hat bisher keine Seiten angelegt.',
- 'profile_not_created_chapters' => ':userName hat bisher keine Kapitel angelegt.',
- 'profile_not_created_books' => ':userName hat bisher keine Bücher angelegt.',
+ 'profile_created_content' => 'Erstellte Inhalte',
+ 'profile_not_created_pages' => ':userName hat noch keine Seiten erstellt.',
+ 'profile_not_created_chapters' => ':userName hat noch keine Kapitel erstellt.',
+ 'profile_not_created_books' => ':userName hat noch keine Bücher erstellt.',
/**
* Comnents
*/
'comment' => 'Kommentar',
'comments' => 'Kommentare',
- 'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein, Markdown unterstützt ...',
+ 'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein (Markdown unterstützt)',
'no_comments' => 'Keine Kommentare',
'x_comments' => ':numComments Kommentare',
'one_comment' => '1 Kommentar',
- 'comments_loading' => 'Laden ...',
+ 'comments_loading' => 'Laden...',
'comment_save' => 'Kommentar speichern',
'comment_reply' => 'Antworten',
'comment_edit' => 'Bearbeiten',
@@ -233,7 +253,7 @@ return [
'comment_updated' => 'Kommentar aktualisiert',
'comment_deleted' => 'Kommentar gelöscht',
'comment_updated_text' => 'Aktualisiert vor :updateDiff von',
- 'comment_delete_confirm' => 'Damit wird der Inhalt des Kommentars entfernt. Bist du sicher, dass du diesen Kommentar löschen möchtest?',
+ 'comment_delete_confirm' => 'Der Inhalt des Kommentars wird entfernt. Bist du sicher, dass du diesen Kommentar löschen möchtest?',
'comment_create' => 'Erstellt'
-];
\ No newline at end of file
+];
diff --git a/resources/lang/de/errors.php b/resources/lang/de/errors.php
index ff045d628..0b961f8ee 100644
--- a/resources/lang/de/errors.php
+++ b/resources/lang/de/errors.php
@@ -7,37 +7,37 @@ return [
*/
// Pages
- 'permission' => 'Sie haben keine Berechtigung auf diese Seite zuzugreifen.',
- 'permissionJson' => 'Sie haben keine Berechtigung die angeforderte Aktion auszuführen.',
+ 'permission' => 'Sie haben keine Berechtigung, auf diese Seite zuzugreifen.',
+ 'permissionJson' => 'Sie haben keine Berechtigung, die angeforderte Aktion auszuführen.',
// Auth
- 'error_user_exists_different_creds' => 'Ein Benutzer mit der E-Mail-Adresse :email ist bereits mit anderen Anmeldedaten angelegt.',
- 'email_already_confirmed' => 'Die E-Mail-Adresse ist bereits bestätigt. Bitte melden Sie sich an.',
- 'email_confirmation_invalid' => 'Der Bestätigungs-Token ist nicht gültig oder wurde bereits verwendet. Bitte registrieren Sie sich erneut.',
- 'email_confirmation_expired' => 'Der Bestätigungs-Token ist abgelaufen. Es wurde eine neue Bestätigungs-E-Mail gesendet.',
- 'ldap_fail_anonymous' => 'Anonymer LDAP Zugriff ist fehlgeschlafgen',
- 'ldap_fail_authed' => 'LDAP Zugriff mit DN & Passwort ist fehlgeschlagen',
- 'ldap_extension_not_installed' => 'LDAP PHP Erweiterung ist nicht installiert.',
- 'ldap_cannot_connect' => 'Die Verbindung zu LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf.',
+ 'error_user_exists_different_creds' => 'Ein Benutzer mit der E-Mail-Adresse :email ist bereits mit anderen Anmeldedaten registriert.',
+ 'email_already_confirmed' => 'Die E-Mail-Adresse ist bereits bestätigt. Bitte melden Sie sich an.',
+ 'email_confirmation_invalid' => 'Der Bestätigungslink ist nicht gültig oder wurde bereits verwendet. Bitte registrieren Sie sich erneut.',
+ 'email_confirmation_expired' => 'Der Bestätigungslink ist abgelaufen. Es wurde eine neue Bestätigungs-E-Mail gesendet.',
+ 'ldap_fail_anonymous' => 'Anonymer LDAP-Zugriff ist fehlgeschlafgen',
+ 'ldap_fail_authed' => 'LDAP-Zugriff mit DN und Passwort ist fehlgeschlagen',
+ 'ldap_extension_not_installed' => 'LDAP-PHP-Erweiterung ist nicht installiert.',
+ 'ldap_cannot_connect' => 'Die Verbindung zum LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf.',
'social_no_action_defined' => 'Es ist keine Aktion definiert',
- 'social_account_in_use' => 'Dieses :socialAccount Konto wird bereits verwendet. Bitte melden Sie sich mit dem :socialAccount Konto an.',
- 'social_account_email_in_use' => 'Die E-Mail-Adresse :email ist bereits registriert. Wenn Sie bereits registriert sind, können Sie Ihr :socialAccount Konto in Ihren Profil-Einstellungen verknüpfen.',
- 'social_account_existing' => 'Dieses :socialAccount Konto ist bereits mit Ihrem Profil verknüpft.',
- 'social_account_already_used_existing' => 'Dieses :socialAccount Konto wird bereits durch einen anderen Benutzer verwendet.',
- 'social_account_not_used' => 'Dieses :socialAccount Konto ist bisher keinem Benutzer zugeordnet. Bitte verknüpfen Sie deses in Ihrem Profil-Einstellungen.',
- 'social_account_register_instructions' => 'Wenn Sie bisher keinen Social-Media Konto besitzen können Sie ein solches Konto mit der :socialAccount Option anlegen.',
- 'social_driver_not_found' => 'Social-Media Konto Treiber nicht gefunden',
- 'social_driver_not_configured' => 'Ihr :socialAccount Konto ist nicht korrekt konfiguriert.',
+ 'social_account_in_use' => 'Dieses :socialAccount-Konto wird bereits verwendet. Bitte melden Sie sich mit dem :socialAccount-Konto an.',
+ 'social_account_email_in_use' => 'Die E-Mail-Adresse ":email" ist bereits registriert. Wenn Sie bereits registriert sind, können Sie Ihr :socialAccount-Konto in Ihren Profil-Einstellungen verknüpfen.',
+ 'social_account_existing' => 'Dieses :socialAccount-Konto ist bereits mit Ihrem Profil verknüpft.',
+ 'social_account_already_used_existing' => 'Dieses :socialAccount-Konto wird bereits von einem anderen Benutzer verwendet.',
+ 'social_account_not_used' => 'Dieses :socialAccount-Konto ist bisher keinem Benutzer zugeordnet. Sie können es in Ihren Profil-Einstellung.',
+ 'social_account_register_instructions' => 'Wenn Sie bisher keinen Social-Media Konto besitzen, können Sie ein solches Konto mit der :socialAccount Option anlegen.',
+ 'social_driver_not_found' => 'Treiber für Social-Media-Konten nicht gefunden',
+ 'social_driver_not_configured' => 'Ihr :socialAccount-Konto ist nicht korrekt konfiguriert.',
// System
'path_not_writable' => 'Die Datei kann nicht in den angegebenen Pfad :filePath hochgeladen werden. Stellen Sie sicher, dass dieser Ordner auf dem Server beschreibbar ist.',
'cannot_get_image_from_url' => 'Bild konnte nicht von der URL :url geladen werden.',
- 'cannot_create_thumbs' => 'Der Server kann keine Vorschau-Bilder erzeugen. Bitte prüfen Sie, ob Sie die GD PHP Erweiterung installiert haben.',
- 'server_upload_limit' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigröße. Bitte versuchen Sie es mit einer kleineren Datei.',
+ 'cannot_create_thumbs' => 'Der Server kann keine Vorschau-Bilder erzeugen. Bitte prüfen Sie, ob die GD PHP-Erweiterung installiert ist.',
+ 'server_upload_limit' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigröße. Bitte versuchen Sie es mit einer kleineren Datei.',
'image_upload_error' => 'Beim Hochladen des Bildes trat ein Fehler auf.',
// Attachments
- 'attachment_page_mismatch' => 'Die Seite stimmt nach dem Hochladen des Anhangs nicht überein.',
+ 'attachment_page_mismatch' => 'Die Seite stimmte nach dem Hochladen des Anhangs nicht überein.',
// Pages
'page_draft_autosave_fail' => 'Fehler beim Speichern des Entwurfs. Stellen Sie sicher, dass Sie mit dem Internet verbunden sind, bevor Sie den Entwurf dieser Seite speichern.',
@@ -47,26 +47,18 @@ return [
'book_not_found' => 'Buch nicht gefunden',
'page_not_found' => 'Seite nicht gefunden',
'chapter_not_found' => 'Kapitel nicht gefunden',
- 'selected_book_not_found' => 'Das gewählte Buch wurde nicht gefunden.',
- 'selected_book_chapter_not_found' => 'Das gewählte Buch oder Kapitel wurde nicht gefunden.',
- 'guests_cannot_save_drafts' => 'Gäste können keine Entwürfe speichern',
+ 'selected_book_not_found' => 'Das gewählte Buch wurde nicht gefunden.',
+ 'selected_book_chapter_not_found' => 'Das gewählte Buch oder Kapitel wurde nicht gefunden.',
+ 'guests_cannot_save_drafts' => 'Gäste können keine Entwürfe speichern',
// Users
- 'users_cannot_delete_only_admin' => 'Sie können den einzigen Administrator nicht löschen.',
- 'users_cannot_delete_guest' => 'Sie können den Gast-Benutzer nicht löschen',
+ 'users_cannot_delete_only_admin' => 'Sie können den einzigen Administrator nicht löschen.',
+ 'users_cannot_delete_guest' => 'Sie können den Gast-Benutzer nicht löschen',
// Roles
'role_cannot_be_edited' => 'Diese Rolle kann nicht bearbeitet werden.',
- 'role_system_cannot_be_deleted' => 'Dies ist eine Systemrolle und kann nicht gelöscht werden',
- 'role_registration_default_cannot_delete' => 'Diese Rolle kann nicht gelöscht werden solange sie als Standardrolle für neue Registrierungen gesetzt ist',
-
- // Error pages
- '404_page_not_found' => 'Seite nicht gefunden',
- 'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Sie angefordert haben wurde nicht gefunden.',
- 'return_home' => 'Zurück zur Startseite',
- 'error_occurred' => 'Es ist ein Fehler aufgetreten',
- 'app_down' => ':appName befindet sich aktuell im Wartungsmodus.',
- 'back_soon' => 'Wir werden so schnell wie möglich wieder online sein.',
+ 'role_system_cannot_be_deleted' => 'Dies ist eine Systemrolle und kann nicht gelöscht werden',
+ 'role_registration_default_cannot_delete' => 'Diese Rolle kann nicht gelöscht werden, solange sie als Standardrolle für neue Registrierungen gesetzt ist',
// Comments
'comment_list' => 'Beim Abrufen der Kommentare ist ein Fehler aufgetreten.',
@@ -74,4 +66,12 @@ return [
'comment_add' => 'Beim Hinzufügen des Kommentars ist ein Fehler aufgetreten.',
'comment_delete' => 'Beim Löschen des Kommentars ist ein Fehler aufgetreten.',
'empty_comment' => 'Kann keinen leeren Kommentar hinzufügen',
+
+ // Error pages
+ '404_page_not_found' => 'Seite nicht gefunden',
+ 'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Sie angefordert haben, wurde nicht gefunden.',
+ 'return_home' => 'Zurück zur Startseite',
+ 'error_occurred' => 'Es ist ein Fehler aufgetreten',
+ 'app_down' => ':appName befindet sich aktuell im Wartungsmodus.',
+ 'back_soon' => 'Wir werden so schnell wie möglich wieder online sein.'
];
diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php
index a3bf7c8c8..6ed0e30f0 100644
--- a/resources/lang/de/pagination.php
+++ b/resources/lang/de/pagination.php
@@ -14,6 +14,6 @@ return [
*/
'previous' => '« Vorherige',
- 'next' => 'Nächste »',
+ 'next' => 'Nächste »',
];
diff --git a/resources/lang/de/passwords.php b/resources/lang/de/passwords.php
index c44b49baa..25ed05a04 100644
--- a/resources/lang/de/passwords.php
+++ b/resources/lang/de/passwords.php
@@ -13,10 +13,10 @@ return [
|
*/
- 'password' => 'Passörter müssen mindestens sechs Zeichen enthalten und die Wiederholung muss identisch sein.',
- 'user' => "Wir können keinen Benutzer mit dieser E-Mail Adresse finden.",
- 'token' => 'Dieser Passwort-Reset-Token ist ungültig.',
- 'sent' => 'Wir haben Ihnen eine E-Mail mit einem Link zum Zurücksetzen des Passworts zugesendet!',
- 'reset' => 'Ihr Passwort wurde zurückgesetzt!',
+ 'password' => 'Passörter müssen mindestens sechs Zeichen enthalten und die Wiederholung muss übereinstimmen.',
+ 'user' => "Es konnte kein Benutzer mit dieser E-Mail-Adresse gefunden werden.",
+ 'token' => 'Dieser Link zum Zurücksetzen des Passwortes ist ungültig.',
+ 'sent' => 'Wir haben Ihnen eine E-Mail mit einem Link zum Zurücksetzen des Passworts zugesendet!',
+ 'reset' => 'Ihr Passwort wurde zurückgesetzt!',
];
diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php
index 668eecf33..9435ec808 100644
--- a/resources/lang/de/settings.php
+++ b/resources/lang/de/settings.php
@@ -20,17 +20,17 @@ return [
'app_name' => 'Anwendungsname',
'app_name_desc' => 'Dieser Name wird im Header und in E-Mails angezeigt.',
'app_name_header' => 'Anwendungsname im Header anzeigen?',
- 'app_public_viewing' => 'Öffentliche Ansicht erlauben?',
- 'app_secure_images' => 'Erhöhte Sicherheit für Bilduploads aktivieren?',
- 'app_secure_images_desc' => 'Aus Leistungsgründen sind alle Bilder öffentlich sichtbar. Diese Option fügt zufällige, schwer zu eratene, Zeichenketten vor die Bild-URLs hinzu. Stellen sie sicher, dass Verzeichnindexes deaktiviert sind, um einen einfachen Zugriff zu verhindern.',
+ 'app_public_viewing' => 'Öffentliche Ansicht erlauben?',
+ 'app_secure_images' => 'Erhöhte Sicherheit für hochgeladene Bilder aktivieren?',
+ 'app_secure_images_desc' => 'Aus Leistungsgründen sind alle Bilder öffentlich sichtbar. Diese Option fügt zufällige, schwer zu eratene, Zeichenketten zu Bild-URLs hinzu. Stellen sie sicher, dass Verzeichnisindizes deaktiviert sind, um einen einfachen Zugriff zu verhindern.',
'app_editor' => 'Seiteneditor',
- 'app_editor_desc' => 'Wählen sie den Editor aus, der von allen Benutzern genutzt werden soll, um Seiten zu editieren.',
+ 'app_editor_desc' => 'Wählen Sie den Editor aus, der von allen Benutzern genutzt werden soll, um Seiten zu editieren.',
'app_custom_html' => 'Benutzerdefinierter HTML Inhalt',
- 'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der Sektion jeder Seite eingefügt. Diese kann praktisch sein, um CSS Styles anzupassen oder Analytics Code hinzuzufügen.',
+ 'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der Sektion jeder Seite eingefügt. Diese kann praktisch sein, um CSS Styles anzupassen oder Analytics-Code hinzuzufügen.',
'app_logo' => 'Anwendungslogo',
- 'app_logo_desc' => 'Dieses Bild sollte 43px hoch sein.
Größere Bilder werden verkleinert.',
- 'app_primary_color' => 'Primäre Anwendungsfarbe',
- 'app_primary_color_desc' => 'Dies sollte ein HEX Wert sein.
Wenn Sie nicht eingeben, wird die Anwendung auf die Standardfarbe zurückgesetzt.',
+ 'app_logo_desc' => "Dieses Bild sollte 43px hoch sein.\nGrößere Bilder werden verkleinert.",
+ 'app_primary_color' => 'Primäre Anwendungsfarbe',
+ 'app_primary_color_desc' => "Dies sollte ein HEX Wert sein.\nWenn Sie nicht eingeben, wird die Anwendung auf die Standardfarbe zurückgesetzt.",
/**
* Registration settings
@@ -39,11 +39,11 @@ return [
'reg_settings' => 'Registrierungseinstellungen',
'reg_allow' => 'Registrierung erlauben?',
'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung',
- 'reg_confirm_email' => 'Bestätigung per E-Mail erforderlich?',
- 'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.',
- 'reg_confirm_restrict_domain' => 'Registrierung auf bestimmte Domains einschränken',
- 'reg_confirm_restrict_domain_desc' => 'Fügen sie eine, durch Komma getrennte, Liste von E-Mail Domains hinzu, auf die die Registrierung eingeschränkt werden soll. Benutzern wird eine E-Mail gesendet, um ihre E-Mail Adresse zu bestätigen, bevor sie diese Anwendung nutzen können.
Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung ändern.',
- 'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt',
+ 'reg_confirm_email' => 'Bestätigung per E-Mail erforderlich?',
+ 'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.',
+ 'reg_confirm_restrict_domain' => 'Registrierung auf bestimmte Domains einschränken',
+ 'reg_confirm_restrict_domain_desc' => "Fügen sie eine durch Komma getrennte Liste von Domains hinzu, auf die die Registrierung eingeschränkt werden soll. Benutzern wird eine E-Mail gesendet, um ihre E-Mail Adresse zu bestätigen, bevor sie diese Anwendung nutzen können.\nHinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung ändern.",
+ 'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt',
/**
* Role settings
@@ -53,31 +53,31 @@ return [
'role_user_roles' => 'Benutzer-Rollen',
'role_create' => 'Neue Rolle anlegen',
'role_create_success' => 'Rolle erfolgreich angelegt',
- 'role_delete' => 'Rolle löschen',
- 'role_delete_confirm' => 'Sie möchten die Rolle \':roleName\' löschen.',
- 'role_delete_users_assigned' => 'Diese Rolle ist :userCount Benutzern zugeordnet. Sie können unten eine neue Rolle auswählen, die Sie diesen Benutzern zuordnen möchten.',
+ 'role_delete' => 'Rolle löschen',
+ 'role_delete_confirm' => 'Sie möchten die Rolle ":roleName" löschen.',
+ 'role_delete_users_assigned' => 'Diese Rolle ist :userCount Benutzern zugeordnet. Sie können unten eine neue Rolle auswählen, die Sie diesen Benutzern zuordnen möchten.',
'role_delete_no_migration' => "Den Benutzern keine andere Rolle zuordnen",
- 'role_delete_sure' => 'Sind Sie sicher, dass Sie diese Rolle löschen möchten?',
- 'role_delete_success' => 'Rolle erfolgreich gelöscht',
+ 'role_delete_sure' => 'Sind Sie sicher, dass Sie diese Rolle löschen möchten?',
+ 'role_delete_success' => 'Rolle erfolgreich gelöscht',
'role_edit' => 'Rolle bearbeiten',
- 'role_details' => 'Rollen-Details',
+ 'role_details' => 'Rollendetails',
'role_name' => 'Rollenname',
'role_desc' => 'Kurzbeschreibung der Rolle',
'role_system' => 'System-Berechtigungen',
'role_manage_users' => 'Benutzer verwalten',
- 'role_manage_roles' => 'Rollen & Rollen-Berechtigungen verwalten',
- 'role_manage_entity_permissions' => 'Alle Buch-, Kapitel und Seiten-Berechtigungen verwalten',
- 'role_manage_own_entity_permissions' => 'Nur Berechtigungen eigener Bücher, Kapitel und Seiten verwalten',
- 'role_manage_settings' => 'Globaleinstellungen verwalrten',
+ 'role_manage_roles' => 'Rollen und Rollen-Berechtigungen verwalten',
+ 'role_manage_entity_permissions' => 'Alle Buch-, Kapitel- und Seiten-Berechtigungen verwalten',
+ 'role_manage_own_entity_permissions' => 'Nur Berechtigungen eigener Bücher, Kapitel und Seiten verwalten',
+ 'role_manage_settings' => 'Globaleinstellungen verwalten',
'role_asset' => 'Berechtigungen',
- 'role_asset_desc' => 'Diese Berechtigungen gelten für den Standard-Zugriff innerhalb des Systems. Berechtigungen für Bücher, Kapitel und Seiten überschreiben diese Berechtigungenen.',
+ 'role_asset_desc' => 'Diese Berechtigungen gelten für den Standard-Zugriff innerhalb des Systems. Berechtigungen für Bücher, Kapitel und Seiten überschreiben diese Berechtigungenen.',
'role_all' => 'Alle',
'role_own' => 'Eigene',
- 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_controlled_by_asset' => 'Berechtigungen werden vom Uploadziel bestimmt',
'role_save' => 'Rolle speichern',
'role_update_success' => 'Rolle erfolgreich gespeichert',
'role_users' => 'Dieser Rolle zugeordnete Benutzer',
- 'role_users_none' => 'Bisher sind dieser Rolle keiner Benutzer zugeordnet,',
+ 'role_users_none' => 'Bisher sind dieser Rolle keine Benutzer zugeordnet',
/**
* Users
@@ -85,27 +85,27 @@ return [
'users' => 'Benutzer',
'user_profile' => 'Benutzerprofil',
- 'users_add_new' => 'Benutzer hinzufügen',
+ 'users_add_new' => 'Benutzer hinzufügen',
'users_search' => 'Benutzer suchen',
'users_role' => 'Benutzerrollen',
'users_external_auth_id' => 'Externe Authentifizierungs-ID',
- 'users_password_warning' => 'Füllen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort ändern möchten:',
- 'users_system_public' => 'Dieser Benutzer repräsentiert alle Gast-Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.',
- 'users_delete' => 'Benutzer löschen',
- 'users_delete_named' => 'Benutzer :userName löschen',
- 'users_delete_warning' => 'Sie möchten den Benutzer \':userName\' gänzlich aus dem System löschen.',
- 'users_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?',
- 'users_delete_success' => 'Benutzer erfolgreich gelöscht.',
+ 'users_password_warning' => 'Füllen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort ändern möchten:',
+ 'users_system_public' => 'Dieser Benutzer repräsentiert alle unangemeldeten Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.',
+ 'users_delete' => 'Benutzer löschen',
+ 'users_delete_named' => 'Benutzer ":userName" löschen',
+ 'users_delete_warning' => 'Der Benutzer ":userName" wird aus dem System gelöscht.',
+ 'users_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?',
+ 'users_delete_success' => 'Benutzer erfolgreich gelöscht.',
'users_edit' => 'Benutzer bearbeiten',
'users_edit_profile' => 'Profil bearbeiten',
'users_edit_success' => 'Benutzer erfolgreich aktualisisert',
'users_avatar' => 'Benutzer-Bild',
- 'users_avatar_desc' => 'Dieses Bild sollte einen Durchmesser von ca. 256px haben.',
+ 'users_avatar_desc' => 'Das Bild sollte eine Auflösung von 256x256px haben.',
'users_preferred_language' => 'Bevorzugte Sprache',
'users_social_accounts' => 'Social-Media Konten',
- 'users_social_accounts_info' => 'Hier können Sie andere Social-Media Konten für eine schnellere und einfachere Anmeldung verknüpfen. Wenn Sie ein Social-Media Konto hier lösen, bleibt der Zugriff erhalteb. Entfernen Sie in diesem Falle die Berechtigung in Ihren Profil-Einstellungen des verknüpften Social-Media Kontos.',
- 'users_social_connect' => 'Social-Media Konto verknüpfen',
- 'users_social_disconnect' => 'Social-Media Kontoverknüpfung lösen',
- 'users_social_connected' => ':socialAccount Konto wurde erfolgreich mit dem Profil verknüpft.',
- 'users_social_disconnected' => ':socialAccount Konto wurde erfolgreich vom Profil gelöst.',
+ 'users_social_accounts_info' => 'Hier können Sie andere Social-Media-Konten für eine schnellere und einfachere Anmeldung verknüpfen. Wenn Sie ein Social-Media Konto lösen, bleibt der Zugriff erhalten. Entfernen Sie in diesem Falle die Berechtigung in Ihren Profil-Einstellungen des verknüpften Social-Media-Kontos.',
+ 'users_social_connect' => 'Social-Media-Konto verknüpfen',
+ 'users_social_disconnect' => 'Social-Media-Konto lösen',
+ 'users_social_connected' => ':socialAccount-Konto wurde erfolgreich mit dem Profil verknüpft.',
+ 'users_social_disconnected' => ':socialAccount-Konto wurde erfolgreich vom Profil gelöst.',
];
diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php
index 3a6a1bc15..5ac4b1b27 100644
--- a/resources/lang/de/validation.php
+++ b/resources/lang/de/validation.php
@@ -19,54 +19,54 @@ return [
'alpha' => ':attribute kann nur Buchstaben enthalten.',
'alpha_dash' => ':attribute kann nur Buchstaben, Zahlen und Bindestriche enthalten.',
'alpha_num' => ':attribute kann nur Buchstaben und Zahlen enthalten.',
- 'array' => ':attribute muss eine Array sein.',
+ 'array' => ':attribute muss ein Array sein.',
'before' => ':attribute muss ein Datum vor :date sein.',
'between' => [
'numeric' => ':attribute muss zwischen :min und :max liegen.',
- 'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.',
+ 'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.',
'string' => ':attribute muss zwischen :min und :max Zeichen lang sein.',
'array' => ':attribute muss zwischen :min und :max Elemente enthalten.',
],
'boolean' => ':attribute Feld muss wahr oder falsch sein.',
- 'confirmed' => ':attribute Bestätigung stimmt nicht überein.',
+ 'confirmed' => ':attribute stimmt nicht überein.',
'date' => ':attribute ist kein valides Datum.',
'date_format' => ':attribute entspricht nicht dem Format :format.',
- 'different' => ':attribute und :other müssen unterschiedlich sein.',
+ 'different' => ':attribute und :other müssen unterschiedlich sein.',
'digits' => ':attribute muss :digits Stellen haben.',
'digits_between' => ':attribute muss zwischen :min und :max Stellen haben.',
- 'email' => ':attribute muss eine valide E-Mail Adresse sein.',
- 'filled' => ':attribute Feld ist erforderlich.',
- 'exists' => 'Markiertes :attribute ist ungültig.',
+ 'email' => ':attribute muss eine valide E-Mail-Adresse sein.',
+ 'filled' => ':attribute ist erforderlich.',
+ 'exists' => ':attribute ist ungültig.',
'image' => ':attribute muss ein Bild sein.',
- 'in' => 'Markiertes :attribute ist ungültig.',
+ 'in' => ':attribute ist ungültig.',
'integer' => ':attribute muss eine Zahl sein.',
'ip' => ':attribute muss eine valide IP-Adresse sein.',
'max' => [
- 'numeric' => ':attribute darf nicht größer als :max sein.',
- 'file' => ':attribute darf nicht größer als :max Kilobyte sein.',
- 'string' => ':attribute darf nicht länger als :max Zeichen sein.',
+ 'numeric' => ':attribute darf nicht größer als :max sein.',
+ 'file' => ':attribute darf nicht größer als :max Kilobyte sein.',
+ 'string' => ':attribute darf nicht länger als :max Zeichen sein.',
'array' => ':attribute darf nicht mehr als :max Elemente enthalten.',
],
'mimes' => ':attribute muss eine Datei vom Typ: :values sein.',
'min' => [
- 'numeric' => ':attribute muss mindestens :min. sein',
- 'file' => ':attribute muss mindestens :min Kilobyte groß sein.',
+ 'numeric' => ':attribute muss mindestens :min sein',
+ 'file' => ':attribute muss mindestens :min Kilobyte groß sein.',
'string' => ':attribute muss mindestens :min Zeichen lang sein.',
'array' => ':attribute muss mindesten :min Elemente enthalten.',
],
- 'not_in' => 'Markiertes :attribute ist ungültig.',
+ 'not_in' => ':attribute ist ungültig.',
'numeric' => ':attribute muss eine Zahl sein.',
- 'regex' => ':attribute Format ist ungültig.',
- 'required' => ':attribute Feld ist erforderlich.',
- 'required_if' => ':attribute Feld ist erforderlich, wenn :other :value ist.',
- 'required_with' => ':attribute Feld ist erforderlich, wenn :values vorhanden ist.',
- 'required_with_all' => ':attribute Feld ist erforderlich, wenn :values vorhanden sind.',
- 'required_without' => ':attribute Feld ist erforderlich, wenn :values nicht vorhanden ist.',
- 'required_without_all' => ':attribute Feld ist erforderlich, wenn :values nicht vorhanden sind.',
- 'same' => ':attribute und :other muss übereinstimmen.',
+ 'regex' => ':attribute ist in einem ungültigen Format.',
+ 'required' => ':attribute ist erforderlich.',
+ 'required_if' => ':attribute ist erforderlich, wenn :other :value ist.',
+ 'required_with' => ':attribute ist erforderlich, wenn :values vorhanden ist.',
+ 'required_with_all' => ':attribute ist erforderlich, wenn :values vorhanden sind.',
+ 'required_without' => ':attribute ist erforderlich, wenn :values nicht vorhanden ist.',
+ 'required_without_all' => ':attribute ist erforderlich, wenn :values nicht vorhanden sind.',
+ 'same' => ':attribute und :other müssen übereinstimmen.',
'size' => [
'numeric' => ':attribute muss :size sein.',
- 'file' => ':attribute muss :size Kilobytes groß sein.',
+ 'file' => ':attribute muss :size Kilobytes groß sein.',
'string' => ':attribute muss :size Zeichen lang sein.',
'array' => ':attribute muss :size Elemente enthalten.',
],
diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php
index b1cacf08c..1c972e4fb 100644
--- a/resources/views/base.blade.php
+++ b/resources/views/base.blade.php
@@ -36,7 +36,7 @@