From 79c83e060d46aeaaef23a55d59fca96b542ba82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Gro=C3=9Fe?= Date: Fri, 16 Jun 2017 12:28:10 +0200 Subject: [PATCH 1/2] Add button to clear schema data --- admin/schemas.php | 27 +++++++++++++++++++++++++-- lang/de/clear_intro.txt | 1 + lang/de/delete_intro.txt | 1 + lang/de/lang.php | 11 +++++++++++ lang/en/clear_intro.txt | 1 + lang/en/lang.php | 7 ++++++- meta/Schema.php | 15 +++++++++++++++ style.less | 1 + 8 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 lang/de/clear_intro.txt create mode 100644 lang/de/delete_intro.txt create mode 100644 lang/en/clear_intro.txt diff --git a/admin/schemas.php b/admin/schemas.php index 4fc37b6c..c5df84d2 100644 --- a/admin/schemas.php +++ b/admin/schemas.php @@ -113,6 +113,23 @@ public function handle() { } } + // clear + if($table && $INPUT->bool('clear')) { + if($table != $INPUT->str('confirm_clear')) { + msg($this->getLang('clear_fail'), -1); + } else { + try { + $schema = new Schema($table); + $schema->clear(); + msg($this->getLang('clear_ok'), 1); + touch(action_plugin_struct_cache::getSchemaRefreshFile()); + send_redirect(wl($ID, array('do' => 'admin', 'page' => 'struct_schemas'), true, '&')); + } catch(StructException $e) { + msg(hsc($e->getMessage()), -1); + } + } + } + } /** @@ -204,12 +221,18 @@ protected function html_delete(Schema $schema) { $form->setHiddenField('page', 'struct_schemas'); $form->setHiddenField('table', $schema->getTable()); + $form->addFieldsetOpen($this->getLang('btn_delete')); $form->addHTML($this->locale_xhtml('delete_intro')); - - $form->addFieldsetOpen($this->getLang('tab_delete')); $form->addTextInput('confirm', $this->getLang('del_confirm')); $form->addButton('delete', $this->getLang('btn_delete')); $form->addFieldsetClose(); + + $form->addFieldsetOpen($this->getLang('btn_clear')); + $form->addHTML($this->locale_xhtml('clear_intro')); + $form->addTextInput('confirm_clear', $this->getLang('clear_confirm')); + $form->addButton('clear', $this->getLang('btn_clear')); + $form->addFieldsetClose(); + return $form->toHTML(); } diff --git a/lang/de/clear_intro.txt b/lang/de/clear_intro.txt new file mode 100644 index 00000000..b66f9a75 --- /dev/null +++ b/lang/de/clear_intro.txt @@ -0,0 +1 @@ +**ACHTUNG:** Hiermit werden **alle** Daten gelöscht, die jemals für dieses Schema gespeichert waren. Es gibt kein Zurück! diff --git a/lang/de/delete_intro.txt b/lang/de/delete_intro.txt new file mode 100644 index 00000000..5d532473 --- /dev/null +++ b/lang/de/delete_intro.txt @@ -0,0 +1 @@ +**ACHTUNG:** Hiermit wird die Definition des Schemas gelöscht und **alle** Daten, die jemals für dieses Schema gespeichert waren. Es gibt kein Zurück! diff --git a/lang/de/lang.php b/lang/de/lang.php index 0e9116f9..60eca3a2 100644 --- a/lang/de/lang.php +++ b/lang/de/lang.php @@ -18,4 +18,15 @@ $lang['export'] = 'Schema als JSON exportieren'; $lang['btn_export'] = 'Exportieren'; +$lang['del_confirm'] = 'Namen des Schema zur Bestätigung der Löschung eingeben'; +$lang['del_fail'] = 'Die Schemanamen stimmten nicht überein. Schema nicht gelöscht'; +$lang['del_ok'] = 'Schema wurde gelöscht'; +$lang['btn_delete'] = 'Löschen'; $lang['js']['confirmAssignmentsDelete'] = 'Wollen Sie wirklich die Zuweisung von Schma "{0}" zu Seite/Namensraum "{1}" löschen?'; + +$lang['clear_confirm'] = 'Namen des Schema zur Bestätigung der Entfernung aller Daten eingeben'; +$lang['clear_fail'] = 'Die Schemanamen stimmten nicht überein. Daten wurden nicht entfernt'; +$lang['clear_ok'] = 'Die Daten des Schemas wurden entfernt'; +$lang['btn_clear'] = 'Leeren'; + +$lang['tab_delete'] = 'Löschen/Leeren'; diff --git a/lang/en/clear_intro.txt b/lang/en/clear_intro.txt new file mode 100644 index 00000000..5abfe712 --- /dev/null +++ b/lang/en/clear_intro.txt @@ -0,0 +1 @@ +**WARNING:** This will clear **all** data that has ever been saved for this schema! There is no going back! diff --git a/lang/en/lang.php b/lang/en/lang.php index 5a30051b..f88bb40b 100644 --- a/lang/en/lang.php +++ b/lang/en/lang.php @@ -36,9 +36,14 @@ $lang['btn_delete'] = 'Delete'; $lang['js']['confirmAssignmentsDelete'] = 'Do you really want to delete the assignment of schema "{0}" to page/namespace "{1}"?'; +$lang['clear_confirm'] = 'Enter schema name to confirm clearing all data'; +$lang['clear_fail'] = 'Schema names did not match. Data not deleted'; +$lang['clear_ok'] = 'Data of schema has been deleted'; +$lang['btn_clear'] = 'Clear'; + $lang['tab_edit'] = 'Edit Schema'; $lang['tab_export'] = 'Import/Export'; -$lang['tab_delete'] = 'Delete'; +$lang['tab_delete'] = 'Delete/Clear'; $lang['editor_sort'] = 'Sort'; $lang['editor_label'] = 'Field Name'; diff --git a/meta/Schema.php b/meta/Schema.php index 0bf427cc..05888cdf 100644 --- a/meta/Schema.php +++ b/meta/Schema.php @@ -252,6 +252,21 @@ public function delete() { $this->ts = 0; } + + /** + * Clear all data of a schema, but retain the schema itself + */ + public function clear() { + if(!$this->id) throw new StructException('can not clear data of unsaved schema'); + + $this->sqlite->query('BEGIN TRANSACTION'); + $sql = 'DELETE FROM ?'; + $this->sqlite->query($sql, 'data_' . $this->table); + $this->sqlite->query($sql, 'multi_' . $this->table); + $this->sqlite->query('COMMIT TRANSACTION'); + $this->sqlite->query('VACUUM'); + } + /** * @return string */ diff --git a/style.less b/style.less index c5fd1b6a..3e79d9aa 100644 --- a/style.less +++ b/style.less @@ -144,6 +144,7 @@ fieldset { margin-bottom: 1em; + width: 500px; } } From 3cd05f0690e169efe5a6306d13a5d56a432d380c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Gro=C3=9Fe?= Date: Fri, 16 Jun 2017 14:18:00 +0200 Subject: [PATCH 2/2] More German translations --- lang/de/editor_edit.txt | 12 ++++++++++++ lang/de/lang.php | 8 ++++++++ lang/en/editor_edit.txt | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 lang/de/editor_edit.txt diff --git a/lang/de/editor_edit.txt b/lang/de/editor_edit.txt new file mode 100644 index 00000000..08c115ad --- /dev/null +++ b/lang/de/editor_edit.txt @@ -0,0 +1,12 @@ +====== Struct Schema Editor ====== + +Schemafelder können hier hinzugefügt oder bearbeitet werden. + +Feldnamen müssen einzigartig sein. +Es wird empfohlen kurze Bezeichner zu verwenden, die sich wahrscheinlich später nicht ändern werden, da später sie als Verweise auf die Felder in den Aggregationen genutzt werden. +Das Label-Konfigurations-Feld sollte für menschen-lesbare Namen verwendet werden. + +Der Typ des Feldes definiert welche Informationen darin gespeichert werden und beieinflusst wie diese später angezeigt werden. +Jeder Typ hat seine eigenen Konfigurationsoptionen. + +Weitere Informationen finden sich in der [[doku>plugin:struct:type|Dokumentation des Plugins]]. diff --git a/lang/de/lang.php b/lang/de/lang.php index 60eca3a2..de29f6d2 100644 --- a/lang/de/lang.php +++ b/lang/de/lang.php @@ -17,6 +17,9 @@ $lang['summary'] = 'Struct-Daten geändert'; $lang['export'] = 'Schema als JSON exportieren'; $lang['btn_export'] = 'Exportieren'; +$lang['import'] = 'Importieren eines Schemas aus JSON'; +$lang['btn_import'] = 'Importieren'; +$lang['import_warning'] = 'Achtung: dies überschriebt bereits definierte Felder!'; $lang['del_confirm'] = 'Namen des Schema zur Bestätigung der Löschung eingeben'; $lang['del_fail'] = 'Die Schemanamen stimmten nicht überein. Schema nicht gelöscht'; @@ -30,3 +33,8 @@ $lang['btn_clear'] = 'Leeren'; $lang['tab_delete'] = 'Löschen/Leeren'; + +$lang['admin_csvexport'] = 'Exportieren von Rohdaten in einer CSV-Datei'; +$lang['admin_csvimport'] = 'Importieren von Rohdaten aus einer CSV-Datei'; +$lang['admin_csvdone'] = 'CSV-Datei importiert'; +$lang['admin_csvhelp'] = 'Bitte konsultieren Sie das Handbuch zum CSV-Import (engl.) für Formatierungsdetails.'; diff --git a/lang/en/editor_edit.txt b/lang/en/editor_edit.txt index 4cc41d6d..83d0bf39 100644 --- a/lang/en/editor_edit.txt +++ b/lang/en/editor_edit.txt @@ -2,7 +2,7 @@ Add or modify fields of the schema here. -Field names have to be unique. It is recommended to use short identifiers that unlikely change later as they will beused to reference the fields in aggregations later. Use the translation labels in the field's configuration for more human readable names. +Field names have to be unique. It is recommended to use short identifiers that unlikely change later as they will be used to reference the fields in aggregations later. Use the translation labels in the field's configuration for more human readable names. The type of a field defines what kind of data can be stored in the field and influences how it will be displayed later. Each type has its own specific configuration options.