Skip to content

Commit d77f510

Browse files
authored
Merge pull request #310 from cosmocode/addSchemaClearButton
Add schema clear button and improve translation
2 parents 67ddf0d + aa413da commit d77f510

File tree

10 files changed

+84
-5
lines changed

10 files changed

+84
-5
lines changed

admin/schemas.php

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,23 @@ public function handle() {
120120
}
121121
}
122122

123+
// clear
124+
if($table && $INPUT->bool('clear')) {
125+
if($table != $INPUT->str('confirm_clear')) {
126+
msg($this->getLang('clear_fail'), -1);
127+
} else {
128+
try {
129+
$schema = new Schema($table);
130+
$schema->clear();
131+
msg($this->getLang('clear_ok'), 1);
132+
touch(action_plugin_struct_cache::getSchemaRefreshFile());
133+
send_redirect(wl($ID, array('do' => 'admin', 'page' => 'struct_schemas'), true, '&'));
134+
} catch(StructException $e) {
135+
msg(hsc($e->getMessage()), -1);
136+
}
137+
}
138+
}
139+
123140
}
124141

125142
/**
@@ -209,12 +226,18 @@ protected function html_delete(Schema $schema) {
209226
$form->setHiddenField('page', 'struct_schemas');
210227
$form->setHiddenField('table', $schema->getTable());
211228

229+
$form->addFieldsetOpen($this->getLang('btn_delete'));
212230
$form->addHTML($this->locale_xhtml('delete_intro'));
213-
214-
$form->addFieldsetOpen($this->getLang('tab_delete'));
215231
$form->addTextInput('confirm', $this->getLang('del_confirm'));
216232
$form->addButton('delete', $this->getLang('btn_delete'));
217233
$form->addFieldsetClose();
234+
235+
$form->addFieldsetOpen($this->getLang('btn_clear'));
236+
$form->addHTML($this->locale_xhtml('clear_intro'));
237+
$form->addTextInput('confirm_clear', $this->getLang('clear_confirm'));
238+
$form->addButton('clear', $this->getLang('btn_clear'));
239+
$form->addFieldsetClose();
240+
218241
return $form->toHTML();
219242
}
220243

lang/de/clear_intro.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
**ACHTUNG:** Hiermit werden **alle** Daten gelöscht, die jemals für dieses Schema gespeichert waren. Es gibt kein Zurück!

lang/de/delete_intro.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
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!

lang/de/editor_edit.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
====== Struct Schema Editor ======
2+
3+
Schemafelder können hier hinzugefügt oder bearbeitet werden.
4+
5+
Feldnamen müssen einzigartig sein.
6+
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.
7+
Das Label-Konfigurations-Feld sollte für menschen-lesbare Namen verwendet werden.
8+
9+
Der Typ des Feldes definiert welche Informationen darin gespeichert werden und beieinflusst wie diese später angezeigt werden.
10+
Jeder Typ hat seine eigenen Konfigurationsoptionen.
11+
12+
Weitere Informationen finden sich in der [[doku>plugin:struct:type|Dokumentation des Plugins]].

lang/de/lang.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,31 @@
2020
$lang['summary'] = 'Struct-Daten geändert';
2121
$lang['export'] = 'Schema als JSON exportieren';
2222
$lang['btn_export'] = 'Exportieren';
23+
$lang['import'] = 'Importieren eines Schemas aus JSON';
2324
$lang['btn_import'] = 'Importieren';
25+
$lang['import_warning'] = 'Achtung: dies überschriebt bereits definierte Felder!';
26+
27+
$lang['del_confirm'] = 'Namen des Schema zur Bestätigung der Löschung eingeben';
28+
$lang['del_fail'] = 'Die Schemanamen stimmten nicht überein. Schema nicht gelöscht';
29+
$lang['del_ok'] = 'Schema wurde gelöscht';
30+
$lang['btn_delete'] = 'Löschen';
31+
$lang['js']['confirmAssignmentsDelete'] = 'Wollen Sie wirklich die Zuweisung von Schma "{0}" zu Seite/Namensraum "{1}" löschen?';
32+
33+
$lang['clear_confirm'] = 'Namen des Schema zur Bestätigung der Entfernung aller Daten eingeben';
34+
$lang['clear_fail'] = 'Die Schemanamen stimmten nicht überein. Daten wurden nicht entfernt';
35+
$lang['clear_ok'] = 'Die Daten des Schemas wurden entfernt';
36+
$lang['btn_clear'] = 'Leeren';
37+
38+
$lang['tab_delete'] = 'Löschen/Leeren';
39+
40+
$lang['admin_csvexport'] = 'Exportieren von Rohdaten in einer CSV-Datei';
41+
$lang['admin_csvimport'] = 'Importieren von Rohdaten aus einer CSV-Datei';
42+
$lang['admin_csvdone'] = 'CSV-Datei importiert';
43+
$lang['admin_csvhelp'] = 'Bitte konsultieren Sie das Handbuch zum CSV-Import (engl.) für Formatierungsdetails.';
44+
2445
$lang['btn_delete'] = 'Löschen';
2546
$lang['js']['confirmAssignmentsDelete'] = 'Wollen Sie wirklich die Zuweisung von Schma "{0}" zu Seite/Namensraum "{1}" löschen?';
2647
$lang['tab_export'] = 'Importieren/Exportieren';
27-
$lang['tab_delete'] = 'Löschen';
2848
$lang['editor_sort'] = 'Sortieren';
2949
$lang['editor_conf'] = 'Konfiguration';
3050
$lang['editor_type'] = 'Eingeben';

lang/en/clear_intro.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
**WARNING:** This will clear **all** data that has ever been saved for this schema! There is no going back!

lang/en/editor_edit.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Add or modify fields of the schema here.
44

5-
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.
5+
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.
66

77
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.
88

lang/en/lang.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,14 @@
3636
$lang['btn_delete'] = 'Delete';
3737
$lang['js']['confirmAssignmentsDelete'] = 'Do you really want to delete the assignment of schema "{0}" to page/namespace "{1}"?';
3838

39+
$lang['clear_confirm'] = 'Enter schema name to confirm clearing all data';
40+
$lang['clear_fail'] = 'Schema names did not match. Data not deleted';
41+
$lang['clear_ok'] = 'Data of schema has been deleted';
42+
$lang['btn_clear'] = 'Clear';
43+
3944
$lang['tab_edit'] = 'Edit Schema';
4045
$lang['tab_export'] = 'Import/Export';
41-
$lang['tab_delete'] = 'Delete';
46+
$lang['tab_delete'] = 'Delete/Clear';
4247

4348
$lang['editor_sort'] = 'Sort';
4449
$lang['editor_label'] = 'Field Name';

meta/Schema.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,21 @@ public function delete() {
252252
$this->ts = 0;
253253
}
254254

255+
256+
/**
257+
* Clear all data of a schema, but retain the schema itself
258+
*/
259+
public function clear() {
260+
if(!$this->id) throw new StructException('can not clear data of unsaved schema');
261+
262+
$this->sqlite->query('BEGIN TRANSACTION');
263+
$sql = 'DELETE FROM ?';
264+
$this->sqlite->query($sql, 'data_' . $this->table);
265+
$this->sqlite->query($sql, 'multi_' . $this->table);
266+
$this->sqlite->query('COMMIT TRANSACTION');
267+
$this->sqlite->query('VACUUM');
268+
}
269+
255270
/**
256271
* @return string
257272
*/

style.less

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@
144144

145145
fieldset {
146146
margin-bottom: 1em;
147+
width: 500px;
147148
}
148149
}
149150

0 commit comments

Comments
 (0)