diff --git a/app/assets/images/symbols.svg b/app/assets/images/symbols.svg
index 5c1eee4673..328c5cc012 100644
--- a/app/assets/images/symbols.svg
+++ b/app/assets/images/symbols.svg
@@ -137,6 +137,14 @@
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index 33d122b41a..bcb2e3ffd1 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -377,6 +377,18 @@ function refreshEditors() {
}
}
+function undoCodeMirror() {
+ if(typeof myCodeMirror !== 'undefined') {
+ myCodeMirror.undo();
+ }
+}
+
+function redoCodeMirror() {
+ if(typeof myCodeMirror !== 'undefined') {
+ myCodeMirror.redo();
+ }
+}
+
const ResizableSplitter = {
initVertical: function makeResiableSplitter(splitterSelector, panel1Selector, panel2Selector, mode='', options = {}) {
const { onDrag, onChanged, initialPosition = '50%', onPositionChange } = options;
diff --git a/app/assets/stylesheets/codemirror/lib/codemirror.css b/app/assets/stylesheets/codemirror/lib/codemirror.css
index 4cd92363fc..ce85920b51 100644
--- a/app/assets/stylesheets/codemirror/lib/codemirror.css
+++ b/app/assets/stylesheets/codemirror/lib/codemirror.css
@@ -585,4 +585,20 @@ span.CodeMirror-selectedtext {
li.CodeMirror-hint-active {
background: #08f;
color: #fff;
+}
+
+
+button.undoBtn,
+button.redoBtn {
+ position: relative;
+ display: flex;
+ align-items: center;
+ column-gap: 3px;
+ justify-content: center;
+ width: 40px;
+
+ svg {
+ width: 18px;
+ height: 18px;
+ }
}
\ No newline at end of file
diff --git a/app/assets/stylesheets/sections/page.scss b/app/assets/stylesheets/sections/page.scss
index 38f9a9d50a..d54b21d5e8 100644
--- a/app/assets/stylesheets/sections/page.scss
+++ b/app/assets/stylesheets/sections/page.scss
@@ -102,7 +102,6 @@
}
}
-
#blankPageButton {
margin: 0px 10px;
}
diff --git a/app/views/shared/_codemirror.html.erb b/app/views/shared/_codemirror.html.erb
index 332fefc3ed..6da5f40fea 100644
--- a/app/views/shared/_codemirror.html.erb
+++ b/app/views/shared/_codemirror.html.erb
@@ -28,12 +28,28 @@
\ No newline at end of file
diff --git a/app/views/transcribe/display_page.html.slim b/app/views/transcribe/display_page.html.slim
index 8abda91e3a..7a19aebd83 100644
--- a/app/views/transcribe/display_page.html.slim
+++ b/app/views/transcribe/display_page.html.slim
@@ -48,6 +48,8 @@
span =t('.always_show_fullscreen')
.flex-toolbar_group.push-right
+
+ .flex-toolbar_group
=f.label 'mark_blank', t('.mark_as_blank')
=f.check_box('mark_blank', {checked: @page.status_blank?})
diff --git a/app/views/transcribe/translate.html.slim b/app/views/transcribe/translate.html.slim
index d3a6159787..3935ea2a11 100644
--- a/app/views/transcribe/translate.html.slim
+++ b/app/views/transcribe/translate.html.slim
@@ -16,6 +16,8 @@
span.voice-info
.flex-toolbar_group.push-right
+
+ .flex-toolbar_group
=f.label 'mark_blank', t('.mark_as_blank')
=f.check_box('mark_blank', {checked: @page.status_blank?})
diff --git a/config/locales/shared/shared-de.yml b/config/locales/shared/shared-de.yml
index 0361642948..e7728b4a6b 100644
--- a/config/locales/shared/shared-de.yml
+++ b/config/locales/shared/shared-de.yml
@@ -21,12 +21,14 @@ de:
gap_description: Markiert eine Lücke im Text, oft aufgrund von Beschädigungen
head_description: Markiert Überschriften im Text
marginalia_description: Markiert Text am Seitenrand (außerhalb des Haupttextes).
+ redo_description: Die letzte rückgängig gemachte Aktion wiederherstellen.
reg_description: Markiert eine normalisierte Schreibung mit Originalform im orig-Attribut.
s_description: Markiert Text, der aus irgendeinem Grund durchgestrichen wurde.
sub_description: Tiefgestellter Text.
sup_description: Hochgestellter Text.
u_description: Markiert unterstrichenen Text.
unclear_description: Markiert unklaren Text.
+ undo_description: Die letzte Aktion rückgängig machen.
collection_tabs:
add_work: Werk hinzufügen
collaborators: Mitarbeitende
diff --git a/config/locales/shared/shared-en.yml b/config/locales/shared/shared-en.yml
index e49e1f9611..f51901085c 100644
--- a/config/locales/shared/shared-en.yml
+++ b/config/locales/shared/shared-en.yml
@@ -21,12 +21,14 @@ en:
gap_description: Marks a gap in the text, often due to damage
head_description: Marks headings within the text
marginalia_description: Marks text in the margins of the main text.
+ redo_description: Redo the last undone action
reg_description: Marks a regularized form of the text, with original forms in the orig attribute.
s_description: Marks text that has been struck through for any reason.
sub_description: Subscript text.
sup_description: Superscript text.
u_description: Marks underlined text.
unclear_description: Marks unclear text.
+ undo_description: Undo the last action
collection_tabs:
add_work: Add Work
collaborators: Collaborators
diff --git a/config/locales/shared/shared-es.yml b/config/locales/shared/shared-es.yml
index aa40dcb73a..4fb5e1539d 100644
--- a/config/locales/shared/shared-es.yml
+++ b/config/locales/shared/shared-es.yml
@@ -21,12 +21,14 @@ es:
gap_description: Marca un hueco en el texto, a menudo debido a daños
head_description: Marca los encabezados dentro del texto
marginalia_description: Marca el texto en los márgenes del texto principal.
+ redo_description: Rehacer la última acción deshecha
reg_description: Marca una forma regularizada del texto, con formularios originales en el atributo orig.
s_description: Marca el texto que se ha tachado por cualquier motivo.
sub_description: Texto de subíndice.
sup_description: Texto de superíndice.
u_description: Marca el texto subrayado.
unclear_description: Marca texto poco claro.
+ undo_description: Deshacer la última acción.
collection_tabs:
add_work: Añadir Obra
collaborators: Colaboradores
diff --git a/config/locales/shared/shared-fr.yml b/config/locales/shared/shared-fr.yml
index 0f40103f18..176ecb6c9d 100644
--- a/config/locales/shared/shared-fr.yml
+++ b/config/locales/shared/shared-fr.yml
@@ -21,12 +21,14 @@ fr:
gap_description: Marque un vide dans le texte, souvent dû à des dommages
head_description: Marque les titres dans le texte
marginalia_description: Marque le texte dans les marges du texte principal.
+ redo_description: Refaire la dernière action annulée
reg_description: Marque une forme régularisée du texte, avec des formes originales dans l'attribut orig.
s_description: Marque le texte qui a été barré pour une raison quelconque.
sub_description: Texte en indice.
sup_description: Texte en exposant.
u_description: Marque le texte souligné.
unclear_description: Marque le texte peu clair.
+ undo_description: Annuler la dernière action
collection_tabs:
add_work: Ajouter un œuvre
collaborators: Collaborateurs
diff --git a/config/locales/shared/shared-pt.yml b/config/locales/shared/shared-pt.yml
index 1923c78daa..4bb37e9553 100644
--- a/config/locales/shared/shared-pt.yml
+++ b/config/locales/shared/shared-pt.yml
@@ -21,12 +21,14 @@ pt:
gap_description: Marca uma lacuna no texto, geralmente devido a danos
head_description: Marca os títulos dentro do texto
marginalia_description: Marca o texto nas margens do texto principal.
+ redo_description: Refazer a última ação anulada
reg_description: Marca uma forma regularizada do texto, com formas originais no atributo original.
s_description: Marca o texto que foi riscado por qualquer motivo.
sub_description: Texto subscrito.
sup_description: Superscript text.
u_description: Marca o texto sublinhado
unclear_description: Marca um texto pouco claro
+ undo_description: Anular a última ação
collection_tabs:
add_work: Adicionar Obra
collaborators: Colaboradores