mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-05-02 17:14:03 +08:00
Merge branch 'master' of https://github.com/BookStackApp/BookStack
Conflicts: resources/assets/js/vues/vues.js
This commit is contained in:
commit
47d82a1ac2
@ -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();
|
||||
}
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
public/logo.png
BIN
public/logo.png
Binary file not shown.
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 5.3 KiB |
@ -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");
|
||||
|
@ -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: `
|
||||
<div class="dropzone-container">
|
||||
<div class="dz-message">{{message}}</div>
|
||||
</div>
|
||||
`,
|
||||
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.
|
||||
|
@ -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");
|
||||
|
||||
|
138
resources/assets/js/vues/attachment-manager.js
Normal file
138
resources/assets/js/vues/attachment-manager.js
Normal file
@ -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,
|
||||
};
|
@ -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);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -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);
|
||||
}
|
||||
});
|
||||
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);
|
||||
}
|
@ -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 {
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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+ */
|
||||
}
|
@ -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%;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
@ -12,7 +12,6 @@ html {
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: $text;
|
||||
font-size: $fs-m;
|
||||
line-height: 1.6;
|
||||
color: #616161;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
//@import "reset";
|
||||
@import "variables";
|
||||
@import "mixins";
|
||||
@import "html";
|
||||
|
@ -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;
|
||||
|
@ -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:',
|
||||
|
||||
];
|
||||
|
@ -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',
|
||||
];
|
||||
|
@ -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',
|
||||
];
|
||||
];
|
||||
|
@ -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'
|
||||
];
|
||||
];
|
||||
|
@ -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'
|
||||
|
||||
];
|
||||
];
|
||||
|
@ -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.'
|
||||
];
|
||||
|
@ -14,6 +14,6 @@ return [
|
||||
*/
|
||||
|
||||
'previous' => '« Vorherige',
|
||||
'next' => 'Nächste »',
|
||||
'next' => 'Nächste »',
|
||||
|
||||
];
|
||||
|
@ -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!',
|
||||
|
||||
];
|
||||
|
@ -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 <head> Inhalt',
|
||||
'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der <head> 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 <head> 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. <br>Größere Bilder werden verkleinert.',
|
||||
'app_primary_color' => 'Primäre Anwendungsfarbe',
|
||||
'app_primary_color_desc' => 'Dies sollte ein HEX Wert sein. <br>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. <br> 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.',
|
||||
];
|
||||
|
@ -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.',
|
||||
],
|
||||
|
@ -36,7 +36,7 @@
|
||||
<header id="header">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-4 col-sm-4" ng-non-bindable>
|
||||
<div class="col-sm-4" ng-non-bindable>
|
||||
<a href="{{ baseUrl('/') }}" class="logo">
|
||||
@if(setting('app-logo', '') !== 'none')
|
||||
<img class="logo-image" src="{{ setting('app-logo', '') === '' ? baseUrl('/logo.png') : baseUrl(setting('app-logo', '')) }}" alt="Logo">
|
||||
@ -46,14 +46,14 @@
|
||||
@endif
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-lg-4 col-sm-3 text-center">
|
||||
<form action="{{ baseUrl('/search') }}" method="GET" class="search-box">
|
||||
<input id="header-search-box-input" type="text" name="term" tabindex="2" value="{{ isset($searchTerm) ? $searchTerm : '' }}">
|
||||
<button id="header-search-box-button" type="submit" class="text-button"><i class="zmdi zmdi-search"></i></button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-lg-4 col-sm-5">
|
||||
<div class="col-sm-8">
|
||||
<div class="float right">
|
||||
<div class="header-search">
|
||||
<form action="{{ baseUrl('/search') }}" method="GET" class="search-box">
|
||||
<button id="header-search-box-button" type="submit"><i class="zmdi zmdi-search"></i> </button>
|
||||
<input id="header-search-box-input" type="text" name="term" tabindex="2" placeholder="{{ trans('common.search') }}" value="{{ isset($searchTerm) ? $searchTerm : '' }}">
|
||||
</form>
|
||||
</div>
|
||||
<div class="links text-center">
|
||||
<a href="{{ baseUrl('/books') }}"><i class="zmdi zmdi-book"></i>{{ trans('entities.books') }}</a>
|
||||
@if(signedInUser() && userCan('settings-manage'))
|
||||
|
@ -55,7 +55,7 @@
|
||||
<div class="col-md-7">
|
||||
|
||||
<h1>{{$book->name}}</h1>
|
||||
<div class="book-content" v-if="!searching">
|
||||
<div class="book-content" v-show="!searching">
|
||||
<p class="text-muted" v-pre>{!! nl2br(e($book->description)) !!}</p>
|
||||
|
||||
<div class="page-list" v-pre>
|
||||
@ -87,7 +87,7 @@
|
||||
@include('partials.entity-meta', ['entity' => $book])
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-results" v-cloak v-if="searching">
|
||||
<div class="search-results" v-cloak v-show="searching">
|
||||
<h3 class="text-muted">{{ trans('entities.search_results') }} <a v-if="searching" v-on:click="clearSearch()" class="text-small"><i class="zmdi zmdi-close"></i>{{ trans('entities.search_clear') }}</a></h3>
|
||||
<div v-if="!searchResults">
|
||||
@include('partials/loading-icon')
|
||||
@ -111,13 +111,11 @@
|
||||
</p>
|
||||
@endif
|
||||
|
||||
<div class="search-box">
|
||||
<form v-on:submit.prevent="searchBook">
|
||||
<input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.books_search_this') }}">
|
||||
<button type="submit"><i class="zmdi zmdi-search"></i></button>
|
||||
<button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
|
||||
</form>
|
||||
</div>
|
||||
<form v-on:submit.prevent="searchBook" class="search-box">
|
||||
<input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.books_search_this') }}">
|
||||
<button type="submit"><i class="zmdi zmdi-search"></i></button>
|
||||
<button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
|
||||
</form>
|
||||
|
||||
<div class="activity">
|
||||
<h3>{{ trans('entities.recent_activity') }}</h3>
|
||||
|
@ -51,7 +51,7 @@
|
||||
<div class="row">
|
||||
<div class="col-md-7">
|
||||
<h1>{{ $chapter->name }}</h1>
|
||||
<div class="chapter-content" v-if="!searching">
|
||||
<div class="chapter-content" v-show="!searching">
|
||||
<p class="text-muted">{!! nl2br(e($chapter->description)) !!}</p>
|
||||
|
||||
@if(count($pages) > 0)
|
||||
@ -82,7 +82,7 @@
|
||||
@include('partials.entity-meta', ['entity' => $chapter])
|
||||
</div>
|
||||
|
||||
<div class="search-results" v-cloak v-if="searching">
|
||||
<div class="search-results" v-cloak v-show="searching">
|
||||
<h3 class="text-muted">{{ trans('entities.search_results') }} <a v-if="searching" v-on:click="clearSearch()" class="text-small"><i class="zmdi zmdi-close"></i>{{ trans('entities.search_clear') }}</a></h3>
|
||||
<div v-if="!searchResults">
|
||||
@include('partials/loading-icon')
|
||||
@ -115,13 +115,11 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="search-box">
|
||||
<form v-on:submit.prevent="searchBook">
|
||||
<input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.chapters_search_this') }}">
|
||||
<button type="submit"><i class="zmdi zmdi-search"></i></button>
|
||||
<button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
|
||||
</form>
|
||||
</div>
|
||||
<form v-on:submit.prevent="searchBook" class="search-box">
|
||||
<input v-model="searchTerm" v-on:change="checkSearchForm()" type="text" name="term" placeholder="{{ trans('entities.chapters_search_this') }}">
|
||||
<button type="submit"><i class="zmdi zmdi-search"></i></button>
|
||||
<button v-if="searching" v-cloak class="text-neg" v-on:click="clearSearch()" type="button"><i class="zmdi zmdi-close"></i></button>
|
||||
</form>
|
||||
|
||||
@include('pages/sidebar-tree-list', ['book' => $book, 'sidebarTree' => $sidebarTree])
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
}
|
||||
|
||||
if (action === 'show-image-manager') {
|
||||
window.ImageManager.showExternal((image) => {
|
||||
window.ImageManager.show((image) => {
|
||||
if (!resize) {
|
||||
setImage(image);
|
||||
return;
|
||||
|
@ -14,8 +14,8 @@
|
||||
<div class="padded tags">
|
||||
<p class="muted small">{!! nl2br(e(trans('entities.tags_explain'))) !!}</p>
|
||||
|
||||
<draggable class="fake-table no-style tag-table" :options="{handle: '.handle'}" :list="tags" element="div" style="width: 100%;">
|
||||
<transition-group name="test" tag="div">
|
||||
<draggable class="fake-table no-style tag-table" :options="{handle: '.handle'}" :list="tags" element="div">
|
||||
<transition-group tag="div">
|
||||
<div v-for="(tag, i) in tags" :key="tag.key">
|
||||
<div width="20" class="handle" ><i class="zmdi zmdi-menu"></i></div>
|
||||
<div>
|
||||
@ -47,93 +47,93 @@
|
||||
</div>
|
||||
|
||||
@if(userCan('attachment-create-all'))
|
||||
<div toolbox-tab-content="files" ng-controller="PageAttachmentController" page-id="{{ $page->id or 0 }}">
|
||||
<div toolbox-tab-content="files" id="attachment-manager" page-id="{{ $page->id or 0 }}">
|
||||
<h4>{{ trans('entities.attachments') }}</h4>
|
||||
<div class="padded files">
|
||||
|
||||
<div id="file-list" ng-show="!editFile">
|
||||
<div id="file-list" v-show="!fileToEdit">
|
||||
<p class="muted small">{{ trans('entities.attachments_explain') }} <span class="secondary">{{ trans('entities.attachments_explain_instant_save') }}</span></p>
|
||||
|
||||
<div tab-container>
|
||||
<div class="tab-container">
|
||||
<div class="nav-tabs">
|
||||
<div tab-button="list" class="tab-item">{{ trans('entities.attachments_items') }}</div>
|
||||
<div tab-button="file" class="tab-item">{{ trans('entities.attachments_upload') }}</div>
|
||||
<div tab-button="link" class="tab-item">{{ trans('entities.attachments_link') }}</div>
|
||||
<div @click="tab = 'list'" :class="{selected: tab === 'list'}" class="tab-item">{{ trans('entities.attachments_items') }}</div>
|
||||
<div @click="tab = 'file'" :class="{selected: tab === 'file'}" class="tab-item">{{ trans('entities.attachments_upload') }}</div>
|
||||
<div @click="tab = 'link'" :class="{selected: tab === 'link'}" class="tab-item">{{ trans('entities.attachments_link') }}</div>
|
||||
</div>
|
||||
<div tab-content="list">
|
||||
<table class="file-table" style="width: 100%;">
|
||||
<tbody ui-sortable="sortOptions" ng-model="files" >
|
||||
<tr ng-repeat="file in files track by $index">
|
||||
<td width="20" ><i class="handle zmdi zmdi-menu"></i></td>
|
||||
<td>
|
||||
<a ng-href="@{{getFileUrl(file)}}" target="_blank" ng-bind="file.name"></a>
|
||||
<div ng-if="file.deleting">
|
||||
<div v-show="tab === 'list'">
|
||||
<draggable class="fake-table no-style " style="width: 100%;" :options="{handle: '.handle'}" @change="fileSortUpdate" :list="files" element="div">
|
||||
<transition-group tag="div">
|
||||
<div v-for="(file, index) in files" :key="file.id">
|
||||
<div width="20" ><i class="handle zmdi zmdi-menu"></i></div>
|
||||
<div>
|
||||
<a :href="getFileUrl(file)" target="_blank" v-text="file.name"></a>
|
||||
<div v-if="file.deleting">
|
||||
<span class="neg small">{{ trans('entities.attachments_delete_confirm') }}</span>
|
||||
<br>
|
||||
<span class="text-primary small" ng-click="file.deleting=false;">{{ trans('common.cancel') }}</span>
|
||||
<span class="text-primary small" @click="file.deleting = false;">{{ trans('common.cancel') }}</span>
|
||||
</div>
|
||||
</td>
|
||||
<td width="10" ng-click="startEdit(file)" class="text-center text-primary" style="padding: 0;"><i class="zmdi zmdi-edit"></i></td>
|
||||
<td width="5"></td>
|
||||
<td width="10" ng-click="deleteFile(file)" class="text-center text-neg" style="padding: 0;"><i class="zmdi zmdi-close"></i></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="small muted" ng-if="files.length == 0">
|
||||
</div>
|
||||
<div width="10" @click="startEdit(file)" class="text-center text-primary" style="padding: 0;"><i class="zmdi zmdi-edit"></i></div>
|
||||
<div width="5"></div>
|
||||
<div width="10" @click="deleteFile(file)" class="text-center text-neg" style="padding: 0;"><i class="zmdi zmdi-close"></i></div>
|
||||
</div>
|
||||
</transition-group>
|
||||
</draggable>
|
||||
<p class="small muted" v-if="files.length === 0">
|
||||
{{ trans('entities.attachments_no_files') }}
|
||||
</p>
|
||||
</div>
|
||||
<div tab-content="file">
|
||||
<drop-zone message="{{ trans('entities.attachments_dropzone') }}" upload-url="@{{getUploadUrl()}}" uploaded-to="@{{uploadedTo}}" event-success="uploadSuccess"></drop-zone>
|
||||
<div v-show="tab === 'file'">
|
||||
<dropzone placeholder="{{ trans('entities.attachments_dropzone') }}" :upload-url="getUploadUrl()" :uploaded-to="pageId" @success="uploadSuccess"></dropzone>
|
||||
</div>
|
||||
<div tab-content="link" sub-form="attachLinkSubmit(file)">
|
||||
<div v-show="tab === 'link'" @keypress.enter.prevent="attachNewLink(file)">
|
||||
<p class="muted small">{{ trans('entities.attachments_explain_link') }}</p>
|
||||
<div class="form-group">
|
||||
<label for="attachment-via-link">{{ trans('entities.attachments_link_name') }}</label>
|
||||
<input placeholder="{{ trans('entities.attachments_link_name') }}" ng-model="file.name">
|
||||
<p class="small neg" ng-repeat="error in errors.link.name" ng-bind="error"></p>
|
||||
<input type="text" placeholder="{{ trans('entities.attachments_link_name') }}" v-model="file.name">
|
||||
<p class="small neg" v-for="error in errors.link.name" v-text="error"></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="attachment-via-link">{{ trans('entities.attachments_link_url') }}</label>
|
||||
<input placeholder="{{ trans('entities.attachments_link_url_hint') }}" ng-model="file.link">
|
||||
<p class="small neg" ng-repeat="error in errors.link.link" ng-bind="error"></p>
|
||||
<input type="text" placeholder="{{ trans('entities.attachments_link_url_hint') }}" v-model="file.link">
|
||||
<p class="small neg" v-for="error in errors.link.link" v-text="error"></p>
|
||||
</div>
|
||||
<button class="button pos">{{ trans('entities.attach') }}</button>
|
||||
<button @click.prevent="attachNewLink(file)" class="button pos">{{ trans('entities.attach') }}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="file-edit" ng-if="editFile" sub-form="updateFile(editFile)">
|
||||
<div id="file-edit" v-if="fileToEdit" @keypress.enter.prevent="updateFile(fileToEdit)">
|
||||
<h5>{{ trans('entities.attachments_edit_file') }}</h5>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="attachment-name-edit">{{ trans('entities.attachments_edit_file_name') }}</label>
|
||||
<input type="text" id="attachment-name-edit" placeholder="{{ trans('entities.attachments_edit_file_name') }}" ng-model="editFile.name">
|
||||
<p class="small neg" ng-repeat="error in errors.edit.name" ng-bind="error"></p>
|
||||
<input type="text" id="attachment-name-edit" placeholder="{{ trans('entities.attachments_edit_file_name') }}" v-model="fileToEdit.name">
|
||||
<p class="small neg" v-for="error in errors.edit.name" v-text="error"></p>
|
||||
</div>
|
||||
|
||||
<div tab-container="@{{ editFile.external ? 'link' : 'file' }}">
|
||||
<div class="tab-container">
|
||||
<div class="nav-tabs">
|
||||
<div tab-button="file" class="tab-item">{{ trans('entities.attachments_upload') }}</div>
|
||||
<div tab-button="link" class="tab-item">{{ trans('entities.attachments_set_link') }}</div>
|
||||
<div @click="editTab = 'file'" :class="{selected: editTab === 'file'}" class="tab-item">{{ trans('entities.attachments_upload') }}</div>
|
||||
<div @click="editTab = 'link'" :class="{selected: editTab === 'link'}" class="tab-item">{{ trans('entities.attachments_set_link') }}</div>
|
||||
</div>
|
||||
<div tab-content="file">
|
||||
<drop-zone upload-url="@{{getUploadUrl(editFile)}}" uploaded-to="@{{uploadedTo}}" placeholder="{{ trans('entities.attachments_edit_drop_upload') }}" event-success="uploadSuccessUpdate"></drop-zone>
|
||||
<div v-if="editTab === 'file'">
|
||||
<dropzone :upload-url="getUploadUrl(fileToEdit)" :uploaded-to="pageId" placeholder="{{ trans('entities.attachments_edit_drop_upload') }}" @success="uploadSuccessUpdate"></dropzone>
|
||||
<br>
|
||||
</div>
|
||||
<div tab-content="link">
|
||||
<div v-if="editTab === 'link'">
|
||||
<div class="form-group">
|
||||
<label for="attachment-link-edit">{{ trans('entities.attachments_link_url') }}</label>
|
||||
<input id="attachment-link-edit" placeholder="{{ trans('entities.attachment_link') }}" ng-model="editFile.link">
|
||||
<p class="small neg" ng-repeat="error in errors.edit.link" ng-bind="error"></p>
|
||||
<input type="text" id="attachment-link-edit" placeholder="{{ trans('entities.attachment_link') }}" v-model="fileToEdit.link">
|
||||
<p class="small neg" v-for="error in errors.edit.link" v-text="error"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="button" class="button" ng-click="cancelEdit()">{{ trans('common.back') }}</button>
|
||||
<button class="button pos">{{ trans('common.save') }}</button>
|
||||
<button type="button" class="button" @click="cancelEdit">{{ trans('common.back') }}</button>
|
||||
<button @click.enter.prevent="updateFile(fileToEdit)" class="button pos">{{ trans('common.save') }}</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -1,4 +1,5 @@
|
||||
<style id="custom-styles" data-color="{{ setting('app-color') }}" data-color-light="{{ setting('app-color-light') }}">
|
||||
@if(setting('app-color'))
|
||||
header, [back-to-top], .primary-background {
|
||||
background-color: {{ setting('app-color') }} !important;
|
||||
}
|
||||
@ -17,4 +18,5 @@
|
||||
.text-primary, p.primary, p .primary, span.primary:hover, .text-primary:hover, a, a:hover, a:focus, .text-button, .text-button:hover, .text-button:focus {
|
||||
color: {{ setting('app-color') }};
|
||||
}
|
||||
@endif
|
||||
</style>
|
Loading…
x
Reference in New Issue
Block a user