From 56f444a8a777acafd9c3331eaf4950418fab858c Mon Sep 17 00:00:00 2001 From: Marcos Date: Wed, 30 May 2018 01:41:25 +0200 Subject: [PATCH 1/7] New strings --- resources/lang/es/activities.php | 4 +++- resources/lang/es/common.php | 1 + resources/lang/es/entities.php | 3 +++ resources/lang/es/errors.php | 4 ++-- resources/lang/es/settings.php | 14 ++++++++++++++ 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/resources/lang/es/activities.php b/resources/lang/es/activities.php index 649b8c7..7c53a7e 100644 --- a/resources/lang/es/activities.php +++ b/resources/lang/es/activities.php @@ -35,6 +35,8 @@ 'book_delete' => 'libro borrado', 'book_delete_notification' => 'Libro borrado exitosamente', 'book_sort' => 'libro ordenado', - 'book_sort_notification' => 'Libro re-ordenado exitosamente', + 'book_sort_notification' => 'Libro reordenado exitosamente', + // Other + 'commented_on' => 'comentada el', ]; diff --git a/resources/lang/es/common.php b/resources/lang/es/common.php index dabeec4..fbadb65 100644 --- a/resources/lang/es/common.php +++ b/resources/lang/es/common.php @@ -31,6 +31,7 @@ 'edit' => 'Editar', 'sort' => 'Ordenar', 'move' => 'Mover', + 'copy' => 'Copiar', 'reply' => 'Responder', 'delete' => 'Borrar', 'search' => 'Buscar', diff --git a/resources/lang/es/entities.php b/resources/lang/es/entities.php index b02b98e..866a3c1 100644 --- a/resources/lang/es/entities.php +++ b/resources/lang/es/entities.php @@ -166,6 +166,9 @@ 'pages_not_in_chapter' => 'La página no está en un capítulo', 'pages_move' => 'Mover página', 'pages_move_success' => 'Página movida a ":parentName"', + 'pages_copy' => 'Copiar página', + 'pages_copy_desination' => 'Destino de la copia', + 'pages_copy_success' => 'Página copiada a correctamente', 'pages_permissions' => 'Permisos de página', 'pages_permissions_success' => 'Permisos de página actualizados', 'pages_revision' => 'Revisión', diff --git a/resources/lang/es/errors.php b/resources/lang/es/errors.php index 73c3063..7dddf71 100644 --- a/resources/lang/es/errors.php +++ b/resources/lang/es/errors.php @@ -7,7 +7,7 @@ */ // Permissions - 'permission' => 'UNo tiene permisos para visualizar la página solicitada.', + 'permission' => 'No tiene permisos para visualizar la página solicitada.', 'permissionJson' => 'No tiene permisos para ejecutar la acción solicitada.', // Auth @@ -65,7 +65,7 @@ 'role_system_cannot_be_deleted' => 'Este rol es un rol de sistema y no puede ser borrado', 'role_registration_default_cannot_delete' => 'Este rol no puede ser borrado mientras sea el rol por defecto de nuevos registros', - // Comments + // Comments 'comment_list' => 'Se ha producido un error al buscar los comentarios.', 'cannot_add_comment_to_draft' => 'No puedes añadir comentarios a un borrador.', 'comment_add' => 'Se ha producido un error al añadir el comentario.', diff --git a/resources/lang/es/settings.php b/resources/lang/es/settings.php index ea1a128..d75d842 100644 --- a/resources/lang/es/settings.php +++ b/resources/lang/es/settings.php @@ -34,6 +34,7 @@ 'app_homepage' => 'Página de inicio', 'app_homepage_desc' => 'Elija la página que se mostrará al inicio en lugar de la vista predeterminada. Se ignorarán los permisos de la página seleccionada.', 'app_homepage_default' => 'Página de inicio seleccionada', + 'app_homepage_books' => 'O selecciona la página de libros como página de inicio. Esto prevalecerá sobre cualquier página seleccionada como página de inicio.', 'app_disable_comments' => 'Deshabilitar comentarios', 'app_disable_comments_desc' => 'Deshabilita los comentarios en todas las páginas de la aplicación. Los comentarios existentes no se muestran.', @@ -50,6 +51,19 @@ 'reg_confirm_restrict_domain_desc' => 'Introduzca una lista separada por comas de los dominio a los que les gustaría restringir el registro de usuarios. A los usuarios les será enviado un correo electrónico para confirmar la dirección antes de que se le permita interactuar con la aplicación.
Tenga en cuenta que los usuarios podrán cambiar sus direcciones de correo electrónico después de registrarse exitosamente.', 'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida', + /** + * Maintenance settings + */ + + 'maint' => 'Mantenimiento', + 'maint_image_cleanup' => 'Limpiar imágenes', + 'maint_image_cleanup_desc' => "Analiza las páginas y sus revisiones para comprobar qué imágenes y dibujos están siendo utilizadas y cuales no son necesarias. Asegúrate de crear una copia completa de la base de datos y de las imágenes antes de lanzar esta opción.", + 'maint_image_cleanup_ignore_revisions' => 'Ignorar imágenes en revisiones', + 'maint_image_cleanup_run' => 'Lanzar limpieza', + 'maint_image_cleanup_warning' => 'Se han encontrado :count imágenes posiblemente no utilizadas . ¿Estás seguro de querer borrar estas imágenes?', + 'maint_image_cleanup_success' => '¡Se han encontrado y borrado :count imágenes posiblemente no utilizadas!', + 'maint_image_cleanup_nothing_found' => '¡No se han encontrado imágenes sin utilizar, no se han borrado imágenes!', + /** * Role settings */ From 0363fc4ea12a803013f56c3300da89d3a505dcd0 Mon Sep 17 00:00:00 2001 From: Abijeet Date: Sun, 3 Jun 2018 14:24:55 +0530 Subject: [PATCH 2/7] Fixes undefined error when clicking on page navigation links. Fixes #873 Signed-off-by: Abijeet --- resources/assets/js/components/page-display.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/assets/js/components/page-display.js b/resources/assets/js/components/page-display.js index f51cb7f..5eb5648 100644 --- a/resources/assets/js/components/page-display.js +++ b/resources/assets/js/components/page-display.js @@ -20,7 +20,7 @@ class PageDisplay { // Sidebar page nav click event $('.sidebar-page-nav').on('click', 'a', event => { - goToText(event.target.getAttribute('href').substr(1)); + this.goToText(event.target.getAttribute('href').substr(1)); }); } From b3cc3130f092ce571f47a67bcd199ead18cdd1f9 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 9 Jun 2018 10:41:01 +0100 Subject: [PATCH 3/7] Added copy button to codemirror-rendered code blocks Closes #858 --- resources/assets/js/services/code.js | 31 ++++++++++++++++++++++- resources/assets/sass/_codemirror.scss | 34 ++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/resources/assets/js/services/code.js b/resources/assets/js/services/code.js index 6c04e98..ae63a8c 100644 --- a/resources/assets/js/services/code.js +++ b/resources/assets/js/services/code.js @@ -16,6 +16,8 @@ require('codemirror/mode/toml/toml'); require('codemirror/mode/xml/xml'); require('codemirror/mode/yaml/yaml'); +const Clipboard = require("clipboard"); + const CodeMirror = require('codemirror'); const modeMap = { @@ -77,7 +79,7 @@ function highlightElem(elem) { elem.innerHTML = elem.innerHTML.replace(//gi ,'\n'); let content = elem.textContent.trim(); - CodeMirror(function(elt) { + let cm = CodeMirror(function(elt) { elem.parentNode.replaceChild(elt, elem); }, { value: content, @@ -86,6 +88,33 @@ function highlightElem(elem) { theme: getTheme(), readOnly: true }); + + addCopyIcon(cm); +} + +/** + * Add a button to a CodeMirror instance which copies the contents to the clipboard upon click. + * @param cmInstance + */ +function addCopyIcon(cmInstance) { + const copyIcon = ``; + const copyButton = document.createElement('div'); + copyButton.classList.add('CodeMirror-copy'); + copyButton.innerHTML = copyIcon; + cmInstance.display.wrapper.appendChild(copyButton); + + const clipboard = new Clipboard(copyButton, { + text: function(trigger) { + return cmInstance.getValue() + } + }); + + clipboard.on('success', event => { + copyButton.classList.add('success'); + setTimeout(() => { + copyButton.classList.remove('success'); + }, 360); + }); } /** diff --git a/resources/assets/sass/_codemirror.scss b/resources/assets/sass/_codemirror.scss index 2366bf1..8fe4058 100644 --- a/resources/assets/sass/_codemirror.scss +++ b/resources/assets/sass/_codemirror.scss @@ -403,4 +403,38 @@ span.CodeMirror-selectedtext { background: none; } left: 0; width: 100%; height: 100%; +} + +/** + * Custom Copy Button + */ +.CodeMirror-copy { + position: absolute; + top: -1px; + right: -1px; + background-color: #EEE; + padding: $-xs; + line-height: 0; + border: 1px solid #DDD; + cursor: pointer; + fill: #444; + z-index: 5; + transition: all ease-in 180ms; + user-select: none; + opacity: 0.7; + svg { + transition: transform ease-in 180ms; + transform: translateY(0); + } + &.success { + background-color: lighten($positive, 10%); + fill: #FFF; + svg { + transform: translateY(-3px); + } + } +} +.CodeMirror:hover .CodeMirror-copy { + user-select: all; + opacity: 1; } \ No newline at end of file From a9bf2ed39837a0413b31079e891c7eb305893bfb Mon Sep 17 00:00:00 2001 From: Leonardo Martinez Date: Wed, 13 Jun 2018 10:12:36 -0300 Subject: [PATCH 4/7] Updated 'Spanish Argentina' translation. --- resources/lang/es_AR/settings.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/resources/lang/es_AR/settings.php b/resources/lang/es_AR/settings.php index cb32c01..92aaf7d 100644 --- a/resources/lang/es_AR/settings.php +++ b/resources/lang/es_AR/settings.php @@ -34,10 +34,10 @@ 'app_homepage' => 'Página de inicio de la Aplicación', 'app_homepage_desc' => 'Seleccione una página de inicio para mostrar en lugar de la vista por defecto. Se ignoran los permisos de página para las páginas seleccionadas.', 'app_homepage_default' => 'Página de inicio por defecto seleccionadad', + 'app_homepage_books' => 'O seleccione la página de libros como su página de inicio. Esto tendrá preferencia sobre cualquier página seleccionada como página de inicio.', 'app_disable_comments' => 'Deshabilitar comentarios', 'app_disable_comments_desc' => 'Deshabilitar comentarios en todas las páginas de la aplicación. Los comentarios existentes no se muestran.', - /** * Registration settings */ @@ -51,6 +51,19 @@ 'reg_confirm_restrict_domain_desc' => 'Introduzca una lista separada por comas de los correos electrónicos del dominio a los que les gustaría restringir el registro por dominio. A los usuarios les será enviado un correo elctrónico para confirmar la dirección antes de que se le permita interactuar con la aplicación.
Note que a los usuarios se les permitirá cambiar sus direcciones de correo electrónico luego de un registro éxioso.', 'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida', + /** + * Maintenance settings + */ + + 'maint' => 'Mantenimiento', + 'maint_image_cleanup' => 'Limpiar imágenes', + 'maint_image_cleanup_desc' => "Analizar contenido de páginas y revisiones para detectar cuáles imágenes y dibujos están en uso y cuáles son redundantes. Asegúrese de crear un respaldo completo de imágenes y base de datos antes de ejecutar esta tarea.", + 'maint_image_cleanup_ignore_revisions' => 'Ignorar imágenes en revisión', + 'maint_image_cleanup_run' => 'Ejecutar limpieza', + 'maint_image_cleanup_warning' => 'Se encontraron :count imágenes pontencialmente sin uso. Está seguro de que quiere eliminarlas?', + 'maint_image_cleanup_success' => 'Se encontraron y se eliminaron :count imágenes pontencialmente sin uso!', + 'maint_image_cleanup_nothing_found' => 'No se encotraron imágenes sin usar, Nada eliminado!', + /** * Role settings */ From 7d81a9515687aaff833ab76523a1b909fc21b764 Mon Sep 17 00:00:00 2001 From: Abijeet Date: Sun, 17 Jun 2018 14:21:31 +0530 Subject: [PATCH 5/7] Fixes issue with having to click the delete icon for attachment twice. Fixes #884 This is happening because - Due to the limitations of modern JavaScript (and the abandonment of Object.observe), Vue cannot detect property addition or deletion. Since Vue performs the getter/setter conversion process during instance initialization, a property must be present in the data object in order for Vue to convert it and make it reactive. Source: https://vuejs.org/v2/guide/reactivity.html Also added padding to the icons in the attachment section. Signed-off-by: Abijeet --- resources/assets/js/vues/attachment-manager.js | 4 +++- resources/views/pages/form-toolbox.blade.php | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/resources/assets/js/vues/attachment-manager.js b/resources/assets/js/vues/attachment-manager.js index 16f96c7..5acad61 100644 --- a/resources/assets/js/vues/attachment-manager.js +++ b/resources/assets/js/vues/attachment-manager.js @@ -52,7 +52,9 @@ let methods = { }, deleteFile(file) { - if (!file.deleting) return file.deleting = true; + if (!file.deleting) { + return this.$set(file, 'deleting', true); + } this.$http.delete(window.baseUrl(`/attachments/${file.id}`)).then(resp => { this.$events.emit('success', resp.data.message); diff --git a/resources/views/pages/form-toolbox.blade.php b/resources/views/pages/form-toolbox.blade.php index f6ee251..01c2245 100644 --- a/resources/views/pages/form-toolbox.blade.php +++ b/resources/views/pages/form-toolbox.blade.php @@ -42,8 +42,8 @@ {{ trans('common.cancel') }} -
@icon('edit')
-
@icon('close')
+
@icon('edit')
+
@icon('close')

From fb29f4119d430cc8d040ba5d7c5d5d084937cf32 Mon Sep 17 00:00:00 2001 From: Abijeet Date: Sat, 30 Jun 2018 09:49:55 +0530 Subject: [PATCH 6/7] Fixes issue with code not wrapping on revision page. Closes #888 Signed-off-by: Abijeet --- resources/assets/sass/_pages.scss | 6 ++++++ resources/views/pages/revision.blade.php | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/resources/assets/sass/_pages.scss b/resources/assets/sass/_pages.scss index ca146d8..4658b9c 100755 --- a/resources/assets/sass/_pages.scss +++ b/resources/assets/sass/_pages.scss @@ -89,6 +89,12 @@ del { background: #FFECEC; } + + &.page-revision { + pre code { + white-space: pre-wrap; + } + } } // Page content pointers diff --git a/resources/views/pages/revision.blade.php b/resources/views/pages/revision.blade.php index ec6ca11..f2d181f 100644 --- a/resources/views/pages/revision.blade.php +++ b/resources/views/pages/revision.blade.php @@ -14,7 +14,7 @@

-
+
@include('pages.page-display')
From f5df5ac7d555471bd648181056ef9aba88e32849 Mon Sep 17 00:00:00 2001 From: Abijeet Date: Sat, 30 Jun 2018 10:28:11 +0530 Subject: [PATCH 7/7] Changes the way the date is displayed in image-manager. Signed-off-by: Abijeet --- resources/assets/js/services/dates.js | 9 +++++++++ resources/assets/js/vues/image-manager.js | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/resources/assets/js/services/dates.js b/resources/assets/js/services/dates.js index d0ecc20..119d8fa 100644 --- a/resources/assets/js/services/dates.js +++ b/resources/assets/js/services/dates.js @@ -12,4 +12,13 @@ export function utcTimeStampToLocalTime(timestamp) { let hours = date.getHours(); let mins = date.getMinutes(); return `${(hours>9?'':'0') + hours}:${(mins>9?'':'0') + mins}`; +} + +export function formatDateTime(date) { + let month = date.getMonth() + 1; + let day = date.getDate(); + let hours = date.getHours(); + let mins = date.getMinutes(); + + return `${date.getFullYear()}-${(month>9?'':'0') + month}-${(day>9?'':'0') + day} ${(hours>9?'':'0') + hours}:${(mins>9?'':'0') + mins}`; } \ No newline at end of file diff --git a/resources/assets/js/vues/image-manager.js b/resources/assets/js/vues/image-manager.js index 16c8ef9..9b17bcd 100644 --- a/resources/assets/js/vues/image-manager.js +++ b/resources/assets/js/vues/image-manager.js @@ -1,3 +1,6 @@ + +import * as Dates from "../services/dates"; + const dropzone = require('./components/dropzone'); let page = 0; @@ -168,7 +171,7 @@ const methods = { }, getDate(stringDate) { - return new Date(stringDate); + return Dates.formatDateTime(new Date(stringDate)); }, uploadSuccess(event) {