]> BookStack Code Mirror - bookstack/commitdiff
Resolved conflicts
authorBharadwaja G <redacted>
Thu, 24 Aug 2017 06:51:43 +0000 (12:21 +0530)
committerBharadwaja G <redacted>
Thu, 24 Aug 2017 06:51:43 +0000 (12:21 +0530)
1  2 
resources/assets/js/global.js
resources/assets/sass/styles.scss
resources/lang/de/common.php
resources/lang/de/settings.php
resources/lang/en/settings.php
resources/lang/fr/common.php
resources/lang/fr/settings.php
resources/views/components/image-picker.blade.php

index 1ee5bf0d38d91ce11e9609290a9dfaafeb72c3b5,ee7cf3cc12913926a7dee6557ba33d18cf4ff959..966adb75d9f6b37b66e6df2bdc8315c3df33becd
@@@ -1,4 -1,5 +1,5 @@@
  "use strict";
+ require("babel-polyfill");
  
  // Url retrieval function
  window.baseUrl = function(path) {
@@@ -8,6 -9,31 +9,31 @@@
      return basePath + '/' + path;
  };
  
+ // Global Event System
+ class EventManager {
+     constructor() {
+         this.listeners = {};
+     }
+     emit(eventName, eventData) {
+         if (typeof this.listeners[eventName] === 'undefined') return this;
+         let eventsToStart = this.listeners[eventName];
+         for (let i = 0; i < eventsToStart.length; i++) {
+             let event = eventsToStart[i];
+             event(eventData);
+         }
+         return this;
+     }
+     listen(eventName, callback) {
+         if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = [];
+         this.listeners[eventName].push(callback);
+         return this;
+     }
+ }
+ window.Events = new EventManager();
  const Vue = require("vue");
  const axios = require("axios");
  
@@@ -17,11 -43,17 +43,17 @@@ let axiosInstance = axios.create(
          '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;
- require("./vues/vues");
+ Vue.prototype.$events = window.Events;
  
  
  // AngularJS - Create application and load components
@@@ -39,37 -71,13 +71,13 @@@ const Translations = require("./transla
  let translator = new Translations(window.translations);
  window.trans = translator.get.bind(translator);
  
- // Global Event System
- class EventManager {
-     constructor() {
-         this.listeners = {};
-     }
  
-     emit(eventName, eventData) {
-         if (typeof this.listeners[eventName] === 'undefined') return this;
-         let eventsToStart = this.listeners[eventName];
-         for (let i = 0; i < eventsToStart.length; i++) {
-             let event = eventsToStart[i];
-             event(eventData);
-         }
-         return this;
-     }
-     listen(eventName, callback) {
-         if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = [];
-         this.listeners[eventName].push(callback);
-         return this;
-     }
- }
- window.Events = new EventManager();
- Vue.prototype.$events = window.Events;
+ require("./vues/vues");
+ require("./components");
  
  // Load in angular specific items
- const Services = require('./services');
  const Directives = require('./directives');
  const Controllers = require('./controllers');
- Services(ngApp, window.Events);
  Directives(ngApp, window.Events);
  Controllers(ngApp, window.Events);
  
@@@ -91,90 -99,11 +99,90 @@@ jQuery.expr[":"].contains = $.expr.crea
      };
  });
  
 +// Global jQuery Elements
 +let notifications = $('.notification');
 +let successNotification = notifications.filter('.pos');
 +let errorNotification = notifications.filter('.neg');
 +let warningNotification = notifications.filter('.warning');
 +// Notification Events
 +window.Events.listen('success', function (text) {
 +    successNotification.hide();
 +    successNotification.find('span').text(text);
 +    setTimeout(() => {
 +        successNotification.show();
 +    }, 1);
 +});
 +window.Events.listen('warning', function (text) {
 +    warningNotification.find('span').text(text);
 +    warningNotification.show();
 +});
 +window.Events.listen('error', function (text) {
 +    errorNotification.find('span').text(text);
 +    errorNotification.show();
 +});
 +
 +// Notification hiding
 +notifications.click(function () {
 +    $(this).fadeOut(100);
 +});
 +
 +// Chapter page list toggles
 +$('.chapter-toggle').click(function (e) {
 +    e.preventDefault();
 +    $(this).toggleClass('open');
 +    $(this).closest('.chapter').find('.inset-list').slideToggle(180);
 +});
 +
 +// Back to top button
 +$('#back-to-top').click(function() {
 +     $('#header').smoothScrollTo();
 +});
 +let scrollTopShowing = false;
 +let scrollTop = document.getElementById('back-to-top');
 +let scrollTopBreakpoint = 1200;
 +window.addEventListener('scroll', function() {
 +    let scrollTopPos = document.documentElement.scrollTop || document.body.scrollTop || 0;
 +    if (!scrollTopShowing && scrollTopPos > scrollTopBreakpoint) {
 +        scrollTop.style.display = 'block';
 +        scrollTopShowing = true;
 +        setTimeout(() => {
 +            scrollTop.style.opacity = 0.4;
 +        }, 1);
 +    } else if (scrollTopShowing && scrollTopPos < scrollTopBreakpoint) {
 +        scrollTop.style.opacity = 0;
 +        scrollTopShowing = false;
 +        setTimeout(() => {
 +            scrollTop.style.display = 'none';
 +        }, 500);
 +    }
 +});
 +
 +// Common jQuery actions
 +$('[data-action="expand-entity-list-details"]').click(function() {
 +    $('.entity-list.compact').find('p').not('.empty-text').slideToggle(240);
 +});
 +
 +// Toggle thumbnail::hide image and reduce grid size
 +$(document).ready(function(){
 +   $('[data-action="expand-thumbnail"]').click(function(){
 +     $('.gallery-item').toggleClass("collapse").find('img').slideToggle(50);
 +   });
 +});
 +
 +// Popup close
 +$('.popup-close').click(function() {
 +    $(this).closest('.overlay').fadeOut(240);
 +});
 +$('.overlay').click(function(event) {
 +    if (!$(event.target).hasClass('overlay')) return;
 +    $(this).fadeOut(240);
 +});
 +
  // Detect IE for css
  if(navigator.userAgent.indexOf('MSIE')!==-1
      || navigator.appVersion.indexOf('Trident/') > 0
      || navigator.userAgent.indexOf('Safari') !== -1){
-     $('body').addClass('flexbox-support');
+     document.body.classList.add('flexbox-support');
  }
  
  // Page specific items
index 0e886190598c7d2a4bf0eab01418befe599bbf27,b912bf7ee3fcc7f1ea4e7f2c07c616af584907f0..51e47ea7487f8fdc776b02abd5277cba230f5955
@@@ -1,6 -1,5 +1,5 @@@
  @import "reset";
  @import "variables";
- @import "fonts";
  @import "mixins";
  @import "html";
  @import "text";
  @import "header";
  @import "lists";
  @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;
@@@ -65,44 -64,6 +64,6 @@@ body.dragging, body.dragging * 
    }
  }
  
- // System wide notifications
- .notification {
-   position: fixed;
-   top: 0;
-   right: 0;
-   margin: $-xl*2 $-xl;
-   padding: $-l $-xl;
-   background-color: #EEE;
-   border-radius: 3px;
-   box-shadow: $bs-med;
-   z-index: 999999;
-   display: block;
-   cursor: pointer;
-   max-width: 480px;
-   i, span {
-     display: table-cell;
-   }
-   i {
-     font-size: 2em;
-     padding-right: $-l;
-   }
-   span {
-     vertical-align: middle;
-   }
-   &.pos {
-     background-color: $positive;
-     color: #EEE;
-   }
-   &.neg {
-     background-color: $negative;
-     color: #EEE;
-   }
-   &.warning {
-     background-color: $secondary;
-     color: #EEE;
-   }
- }
  // Loading icon
  $loadingSize: 10px;
  .loading-container {
  
  // Back to top link
  $btt-size: 40px;
#back-to-top {
[back-to-top] {
    background-color: $primary;
    position: fixed;
    bottom: $-m;
  
  
  
 +.gallery-item {
 +  margin-bottom: 32px;
 +  height: 350px;
 +  overflow: hidden;
 +  border: 1px solid #ccc;
 +  h4 {
 +    font-size: 1.2em;
 +    text-align: center;
 +    height: 55px;
 +    padding: 0px 12px;
 +  }
 +  p {
 +    font-size: 0.8em;
 +    text-align: center;
 +    padding: 0px 12px;
 +  }
 +  &.collapse {
 +    height: 150px;
 +  }
 +}
 +
 +.gallery-image {
 +  margin-top: 5%;
 +  text-align: center;
 +  img {
 +    border-radius: 3px;
 +  }
 +}
 +
 +.cover {
 +    height: 192px;
 +    width: 120px;
 +    border-radius: 3px;
 +  }
index 8c1bb4569e21dd08f500e738f6a9aef9c70b41eb,3c21a9d0802bab681efb927e572df83f6f9ae77c..af2793dfca52ec45ff05ae89696684e025b27f7e
@@@ -17,8 -17,6 +17,8 @@@ return 
      'name' => 'Name',
      'description' => 'Beschreibung',
      'role' => 'Rolle',
 +    'cover_image' => 'Titelbild',
 +    'cover_image_description' => 'Das Bild sollte in einem Verhältnis von Höhe zu Breite von 1.6: 1 sein.',
  
      /**
       * Actions
@@@ -30,9 -28,9 +30,9 @@@
      'edit' => 'Bearbeiten',
      'sort' => 'Sortieren',
      'move' => 'Verschieben',
-     'delete' => 'L&ouml;schen',
+     'delete' => 'Löschen',
      'search' => 'Suchen',
-     'search_clear' => 'Suche l&ouml;schen',
+     'search_clear' => 'Suche löschen',
      'reset' => 'Zurücksetzen',
      'remove' => 'Entfernen',
  
      /**
       * Misc
       */
-     'deleted_user' => 'Gel&ouml;schte Benutzer',
-     'no_activity' => 'Keine Aktivit&auml;ten zum Anzeigen',
-     'no_items' => 'Keine Eintr&auml;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',
 -
 +    'toggle_thumbnails' => 'Thumbnails zeigen/verstecken',
      /**
       * Header
       */
@@@ -55,6 -53,6 +55,6 @@@
      /**
       * 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',
- ];
+ ];
index 9d72b7942d6944ac561c9b8d5080adef883be4df,9435ec80853ecea267fdc04126acbe268f50181f..598f9f6631f08f406eadbfdfc9078dafe5cc1811
@@@ -20,17 -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' => '&Ouml;ffentliche Ansicht erlauben?',
-     'app_secure_images' => 'Erh&ouml;hte Sicherheit f&uuml;r Bilduploads aktivieren?',
-     'app_secure_images_desc' => 'Aus Leistungsgr&uuml;nden sind alle Bilder &ouml;ffentlich sichtbar. Diese Option f&uuml;gt zuf&auml;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&auml;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&uuml;gt wird, wird am Ende der <head> Sektion jeder Seite eingef&uuml;gt. Diese kann praktisch sein, um CSS Styles anzupassen oder Analytics Code hinzuzuf&uuml;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&ouml;&szlig;ere Bilder werden verkleinert.',
-     'app_primary_color' => 'Prim&auml;re Anwendungsfarbe',
-     'app_primary_color_desc' => 'Dies sollte ein HEX Wert sein. <br>Wenn Sie nicht eingeben, wird die Anwendung auf die Standardfarbe zur&uuml;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
      'reg_settings' => 'Registrierungseinstellungen',
      'reg_allow' => 'Registrierung erlauben?',
      'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung',
-     'reg_confirm_email' => 'Best&auml;tigung per E-Mail erforderlich?',
-     'reg_confirm_email_desc' => 'Falls die Einschr&auml;nkung f&uuml;r Domains genutzt wird, ist die Best&auml;tigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.',
-     'reg_confirm_restrict_domain' => 'Registrierung auf bestimmte Domains einschr&auml;nken',
-     'reg_confirm_restrict_domain_desc' => 'F&uuml;gen sie eine, durch Komma getrennte, Liste von E-Mail Domains hinzu, auf die die Registrierung eingeschr&auml;nkt werden soll. Benutzern wird eine E-Mail gesendet, um ihre E-Mail Adresse zu best&auml;tigen, bevor sie diese Anwendung nutzen k&ouml;nnen. <br> Hinweis: Benutzer k&ouml;nnen ihre E-Mail Adresse nach erfolgreicher Registrierung &auml;ndern.',
-     'reg_confirm_restrict_domain_placeholder' => 'Keine Einschr&auml;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
      'role_user_roles' => 'Benutzer-Rollen',
      'role_create' => 'Neue Rolle anlegen',
      'role_create_success' => 'Rolle erfolgreich angelegt',
-     'role_delete' => 'Rolle l&ouml;schen',
-     'role_delete_confirm' => 'Sie m&ouml;chten die Rolle \':roleName\' l&ouml;schen.',
-     'role_delete_users_assigned' => 'Diese Rolle ist :userCount Benutzern zugeordnet. Sie k&ouml;nnen unten eine neue Rolle ausw&auml;hlen, die Sie diesen Benutzern zuordnen m&ouml;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&ouml;schen m&ouml;chten?',
-     'role_delete_success' => 'Rolle erfolgreich gel&ouml;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&uuml;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&uuml;r den Standard-Zugriff innerhalb des Systems. Berechtigungen f&uuml;r B&uuml;cher, Kapitel und Seiten &uuml;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
  
      'users' => 'Benutzer',
      'user_profile' => 'Benutzerprofil',
-     'users_add_new' => 'Benutzer hinzuf&uuml;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&uuml;llen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort &auml;ndern m&ouml;chten:',
-     'users_system_public' => 'Dieser Benutzer repr&auml;sentiert alle Gast-Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.',
+     '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_books_display_type' => 'Bevorzugtes Display-Layout für Bücher',
-     'users_delete' => 'Benutzer l&ouml;schen',
-     'users_delete_named' => 'Benutzer :userName l&ouml;schen',
-     'users_delete_warning' => 'Sie m&ouml;chten den Benutzer \':userName\' g&auml;nzlich aus dem System l&ouml;schen.',
-     'users_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Benutzer l&ouml;schen m&ouml;chten?',
-     'users_delete_success' => 'Benutzer erfolgreich gel&ouml;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&ouml;nnen Sie andere Social-Media Konten f&uuml;r eine schnellere und einfachere Anmeldung verkn&uuml;pfen. Wenn Sie ein Social-Media Konto hier l&ouml;sen, bleibt der Zugriff erhalteb. Entfernen Sie in diesem Falle die Berechtigung in Ihren Profil-Einstellungen des verkn&uuml;pften Social-Media Kontos.',
-     'users_social_connect' => 'Social-Media Konto verkn&uuml;pfen',
-     'users_social_disconnect' => 'Social-Media Kontoverkn&uuml;pfung l&ouml;sen',
-     'users_social_connected' => ':socialAccount Konto wurde erfolgreich mit dem Profil verkn&uuml;pft.',
-     'users_social_disconnected' => ':socialAccount Konto wurde erfolgreich vom Profil gel&ouml;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.',
  ];
index d35857903f95cc6b455913fd3f7a456a7b89ff85,3eec7737f913c493b8cf60b45e08b4a4cb64fd8c..0a7547a584aa7002a1f936122a3ee44b78aaa0de
@@@ -91,7 -91,6 +91,7 @@@ return 
      'users_external_auth_id' => 'External Authentication ID',
      'users_password_warning' => 'Only fill the below if you would like to change your password:',
      'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.',
 +    'users_books_display_type' => 'Preferred layout for books viewing',
      'users_delete' => 'Delete User',
      'users_delete_named' => 'Delete user :userName',
      'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.',
          'pt_BR' => 'Português do Brasil',
          'sk' => 'Slovensky',
          'ja' => '日本語',
+         'pl' => 'Polski',
      ]
      ///////////////////////////////////
  ];
index 129cf082e74b2964f3dffdcaf80f7e005dfba94b,7a8ec55b605d90f53bc27559b6988b535b6231dd..74f174dca11f7c243e7cd7793ad1d284795b3fe3
@@@ -9,7 -9,7 +9,7 @@@ return 
      'back' => 'Retour',
      'save' => 'Enregistrer',
      'continue' => 'Continuer',
-     'select' => 'Selectionner',
+     'select' => 'Sélectionner',
  
      /**
       * Form Labels
@@@ -17,8 -17,7 +17,8 @@@
      'name' => 'Nom',
      'description' => 'Description',
      'role' => 'Rôle',
 -
 +    'cover_image' => 'Image de couverture',
 +    'cover_image_description' => 'L\'image devrait avoir un rapport d\'aspect 1.6: 1',
      /**
       * Actions
       */
@@@ -44,7 -43,6 +44,7 @@@
      'no_items' => 'Aucun élément',
      'back_to_top' => 'Retour en haut',
      'toggle_details' => 'Afficher les détails',
 +    'toggle_thumbnails' => 'Afficher les vignettes',
  
      /**
       * Header
@@@ -55,6 -53,6 +55,6 @@@
      /**
       * Email Content
       */
-     'email_action_help' => 'Si vous rencontrez des problèmes pour cliquer le bouton ":actionText", copiez et collez l\'adresse ci-dessous dans votre navigateur:',
+     'email_action_help' => 'Si vous rencontrez des problèmes pour cliquer sur le bouton ":actionText", copiez et collez l\'adresse ci-dessous dans votre navigateur :',
      'email_rights' => 'Tous droits réservés',
  ];
index 5d9c966e79726262d541da1ecb34c1afbdb91866,92e623795dcbc851cbf006e993859d135b2b624f..5516e66a4609942afd5c82564f85d898b3b4eb94
@@@ -19,27 -19,27 +19,27 @@@ return 
      'app_settings' => 'Préférences de l\'application',
      'app_name' => 'Nom de l\'application',
      'app_name_desc' => 'Ce nom est affiché dans l\'en-tête et les e-mails.',
-     'app_name_header' => 'Afficher le nom dans l\'en-tête?',
-     'app_public_viewing' => 'Accepter le visionnage public des pages?',
-     'app_secure_images' => 'Activer l\'ajout d\'image sécurisé?',
+     'app_name_header' => 'Afficher le nom dans l\'en-tête ?',
+     'app_public_viewing' => 'Accepter le visionnage public des pages ?',
+     'app_secure_images' => 'Activer l\'ajout d\'image sécurisé ?',
      'app_secure_images_desc' => 'Pour des questions de performances, toutes les images sont publiques. Cette option ajoute une chaîne aléatoire difficile à deviner dans les URLs des images.',
      'app_editor' => 'Editeur des pages',
      'app_editor_desc' => 'Sélectionnez l\'éditeur qui sera utilisé pour modifier les pages.',
      'app_custom_html' => 'HTML personnalisé dans l\'en-tête',
-     'app_custom_html_desc' => 'Le contenu inséré ici sera jouté en bas de la balise <head> de toutes les pages. Vous pouvez l\'utiliser pour ajouter du CSS personnalisé ou un tracker analytique.',
+     'app_custom_html_desc' => 'Le contenu inséré ici sera ajouté en bas de la balise <head> de toutes les pages. Vous pouvez l\'utiliser pour ajouter du CSS personnalisé ou un tracker analytique.',
      'app_logo' => 'Logo de l\'Application',
      'app_logo_desc' => 'Cette image doit faire 43px de hauteur. <br>Les images plus larges seront réduites.',
      'app_primary_color' => 'Couleur principale de l\'application',
-     'app_primary_color_desc' => 'This should be a hex value. <br>Leave empty to reset to the default color.',
+     'app_primary_color_desc' => 'Cela devrait être une valeur hexadécimale. <br>Laisser vide pour rétablir la couleur par défaut.',
  
      /**
       * Registration settings
       */
  
      'reg_settings' => 'Préférence pour l\'inscription',
-     'reg_allow' => 'Accepter l\'inscription?',
+     'reg_allow' => 'Accepter l\'inscription ?',
      'reg_default_role' => 'Rôle par défaut lors de l\'inscription',
-     'reg_confirm_email' => 'Obliger la confirmation par e-mail?',
+     'reg_confirm_email' => 'Obliger la confirmation par e-mail ?',
      'reg_confirm_email_desc' => 'Si la restriction de domaine est activée, la confirmation sera automatiquement obligatoire et cette valeur sera ignorée.',
      'reg_confirm_restrict_domain' => 'Restreindre l\'inscription à un domaine',
      'reg_confirm_restrict_domain_desc' => 'Entrez une liste de domaines acceptés lors de l\'inscription, séparés par une virgule. Les utilisateur recevront un e-mail de confirmation à cette adresse. <br> Les utilisateurs pourront changer leur adresse après inscription s\'ils le souhaitent.',
      'role_delete_confirm' => 'Ceci va supprimer le rôle \':roleName\'.',
      'role_delete_users_assigned' => 'Ce rôle a :userCount utilisateurs assignés. Vous pouvez choisir un rôle de remplacement pour ces utilisateurs.',
      'role_delete_no_migration' => "Ne pas assigner de nouveau rôle",
-     'role_delete_sure' => 'Êtes vous sûr(e) de vouloir supprimer ce rôle?',
+     'role_delete_sure' => 'Êtes vous sûr(e) de vouloir supprimer ce rôle ?',
      'role_delete_success' => 'Le rôle a été supprimé avec succès',
      'role_edit' => 'Modifier le rôle',
      'role_details' => 'Détails du rôle',
-     'role_name' => 'Nom du Rôle',
+     'role_name' => 'Nom du rôle',
      'role_desc' => 'Courte description du rôle',
      'role_system' => 'Permissions système',
      'role_manage_users' => 'Gérer les utilisateurs',
      'role_manage_roles' => 'Gérer les rôles et permissions',
      'role_manage_entity_permissions' => 'Gérer les permissions sur les livres, chapitres et pages',
-     'role_manage_own_entity_permissions' => 'Gérer les permissions de ses propres livres chapitres et pages',
+     'role_manage_own_entity_permissions' => 'Gérer les permissions de ses propres livres, chapitres, et pages',
      'role_manage_settings' => 'Gérer les préférences de l\'application',
      'role_asset' => 'Asset Permissions',
      'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
      'users_external_auth_id' => 'Identifiant d\'authentification externe',
      'users_password_warning' => 'Remplissez ce fomulaire uniquement si vous souhaitez changer de mot de passe:',
      'users_system_public' => 'Cet utilisateur représente les invités visitant votre instance. Il est assigné automatiquement aux invités.',
 +    'users_books_display_type' => 'Disposition d\'affichage préférée pour les livres',
      'users_delete' => 'Supprimer un utilisateur',
      'users_delete_named' => 'Supprimer l\'utilisateur :userName',
      'users_delete_warning' => 'Ceci va supprimer \':userName\' du système.',
-     'users_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer cet utilisateur?',
+     'users_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer cet utilisateur ?',
      'users_delete_success' => 'Utilisateurs supprimés avec succès',
      'users_edit' => 'Modifier l\'utilisateur',
      'users_edit_profile' => 'Modifier le profil',
      'users_social_accounts_info' => 'Vous pouvez connecter des réseaux sociaux à votre compte pour vous connecter plus rapidement. Déconnecter un compte n\'enlèvera pas les accès autorisés précédemment sur votre compte de réseau social.',
      'users_social_connect' => 'Connecter le compte',
      'users_social_disconnect' => 'Déconnecter le compte',
-     'users_social_connected' => 'Votre compte :socialAccount a élté ajouté avec succès.',
+     'users_social_connected' => 'Votre compte :socialAccount a été ajouté avec succès.',
      'users_social_disconnected' => 'Votre compte :socialAccount a été déconnecté avec succès',
  
  ];
index 6fd81dabd58d34ee8a190d15fd6be8a2f4a46b4d,228e8d230c6663009ed3431758d1007ab4a4ec38..2aa39d3d2639e18ed9150f5f811e12fbc235855c
@@@ -13,7 -13,7 +13,7 @@@
          <button class="text-button neg" data-action="remove-image" type="button">{{ trans('common.remove') }}</button>
      @endif
  
 -    <input type="hidden" name="{{$name}}" id="{{$name}}" value="{{ isset($currentId) && ($currentId !== '' && $currentId !== false) ? $currentId : $currentImage}}">
 +    <input type="hidden" name="{{$name}}" id="{{$name}}" value="{{ isset($currentId) && ($currentId !== 0 && $currentId !== false) ? $currentId : $currentImage}}">
  </div>
  
  <script>
@@@ -43,7 -43,7 +43,7 @@@
               }
  
               if (action === 'show-image-manager') {
-                  window.ImageManager.showExternal((image) => {
+                  window.ImageManager.show((image) => {
                       if (!resize) {
                           setImage(image);
                           return;