diff --git a/db/minimal.sql b/db/minimal.sql
index aa03fda..0f020c5 100644
--- a/db/minimal.sql
+++ b/db/minimal.sql
@@ -22,6 +22,7 @@ INSERT INTO settings (userid, sno, valint) VALUES
INSERT INTO settings (userid, sno, valstr) VALUES
(-1, 1, 'vessel id'),
(-1, 2, 'date format'),
+(-1, 3, 'user menu'),
(-1, 10, 'rows in table'),
(-1, 20, 'maximum image width'),
(-1, 21, 'maximum image height'),
diff --git a/webgui/globals.inc b/webgui/globals.inc
index 12f55f6..49d8ddc 100644
--- a/webgui/globals.inc
+++ b/webgui/globals.inc
@@ -235,6 +235,7 @@ class User {
public $vessel; // name of current vessel
public $datefmt;
public $rows_pp;
+ public $menu;
private function __construct() {
global $g_rows_pp;
@@ -245,6 +246,7 @@ class User {
$this->vessel = 'Yacht';
$this->datefmt = 'Y-m-d';
$this->rows_pp = $g_rows_pp;
+ $this->menu = [1, 2, 3, 4, 5, 6];
}
public static function getInstance() {
@@ -350,6 +352,18 @@ class User {
if ($user_rows_pp) {
$this->rows_pp = $user_rows_pp;
}
+ // user defined menu
+ $sql = "SELECT valstr FROM settings WHERE userid=? AND sno=3";
+ $sth = $pdo->prepare($sql);
+ $sth->execute([$this->id]);
+ $res = $sth->fetchColumn();
+ if ($res === false) {
+ $sql = "INSERT INTO settings (userid, sno, valstr) VALUES (?, 3, ?)";
+ $sth = $pdo->prepare($sql);
+ $sth->execute([$this->id, implode(',', $this->menu)]);
+ } else {
+ $this->menu = array_map('intval', explode(',', $res));
+ }
}
function get_last_error() {
@@ -1455,13 +1469,72 @@ function normalize_phone_e164($phone) {
// ========== MENU FUNCTIONS ==================================================
-$g_menu = Array (
- 'equipment.php' => [_('Equipment')],
- 'inventory.php' => [_('Inventory')],
- 'provisions.php' => [_('Provisions')],
- 'maintenance.php' => [_('Maintenance')],
- 'projects.php' => [_('Projects')],
- 'documents.php' => [_('Documents')],
- 'manual.php' => [''],
- 'logout.php' => ['']
-);
+$g_modules = Array(
+ 1 => ['file' => 'equipment.php',
+ 'title' => _('Equipment'),
+ 'type' => 'primary',
+ 'group' => 'main'],
+ 2 => ['file' => 'inventory.php',
+ 'title' => _('Inventory'),
+ 'type' => 'primary',
+ 'group' => 'main'],
+ 3 => ['file' => 'provisions.php',
+ 'title' => _('Provisions'),
+ 'type' => 'primary',
+ 'group' => 'main'],
+ 4 => ['file' => 'maintenance.php',
+ 'title' => _('Maintenance'),
+ 'type' => 'primary',
+ 'group' => 'main'],
+ 5 => ['file' => 'projects.php',
+ 'title' => _('Projects'),
+ 'type' => 'primary',
+ 'group' => 'main'],
+ 6 => ['file' => 'documents.php',
+ 'title' => _('Documents'),
+ 'type' => 'primary',
+ 'group' => 'main'],
+ 7 => ['file' => 'company.php',
+ 'title' => _('Companies'),
+ 'type' => 'primary',
+ 'group' => 'base'],
+ 8 => ['file' => 'task.php',
+ 'title' => _('Task'),
+ 'type' => 'primary',
+ 'group' => 'extra'],
+ 9 => ['file' => 'measurement.php',
+ 'title' => _('Measurement'),
+ 'type' => 'primary',
+ 'group' => 'extra'],
+ 10 => ['file' => 'storage.php',
+ 'title' => _('Storage'),
+ 'type' => 'primary',
+ 'group' => 'base'],
+ 11 => ['file' => 'box.php',
+ 'title' => _('Boxes'),
+ 'type' => 'primary',
+ 'group' => 'extra'],
+ 12 => ['file' => 'cable.php',
+ 'title' => _('Cables'),
+ 'type' => 'primary',
+ 'group' => 'extra'],
+ 13 => ['file' => 'fuse.php',
+ 'title' => _('Fuses'),
+ 'type' => 'primary',
+ 'group' => 'extra'],
+ 14 => ['file' => 'checklist.php',
+ 'title' => _('Checklists'),
+ 'type' => 'primary',
+ 'group' => 'extra'],
+ 15 => ['file' => 'tag.php',
+ 'title' => _('Tags'),
+ 'type' => 'secondary',
+ 'group' => 'base'],
+ 16 => ['file' => 'settings.php',
+ 'title' => _('Settings'),
+ 'type' => 'secondary',
+ 'group' => 'extra'],
+ 17 => ['file' => 'dropdown.php',
+ 'title' => _('Selection lists'),
+ 'type' => 'secondary',
+ 'group' => 'base']);
diff --git a/webgui/header.php b/webgui/header.php
index 628439e..9110097 100644
--- a/webgui/header.php
+++ b/webgui/header.php
@@ -31,14 +31,17 @@ if (isset($GLOBALS['local_script'])) {
$value) {
+for ($i = 0; $i < 6; $i++) {
echo str_repeat(' ', 4);
echo '- ';
- $active = ($g_scriptname == $key) ? ' active' : '';
- echo '', $value[0], "";
+ $module = $g_modules[$user->menu[$i]];
+ $active = ($g_scriptname == $module['file']) ? ' active' : '';;
+ echo '', $module['title'], "";
echo "
\n";
}
?>
+
+
diff --git a/webgui/index.php b/webgui/index.php
index 54efd45..1767ded 100644
--- a/webgui/index.php
+++ b/webgui/index.php
@@ -8,6 +8,7 @@
require 'globals.inc';
require 'lib/gpc.inc';
+require 'lib/svg.inc';
$pagetitle = _('Start');
@@ -395,20 +396,26 @@ echo "\n";
=_('Base data')?>
=_('Additional modules')?>
@@ -451,30 +458,20 @@ elseif ($action == ACT_EDIT):
// check if there is a shapefile-index
$shapeindexfile = $g_doc_basepath . '/shapeindex.json';
-$shapeindex = [];
if (!file_exists($shapeindexfile)) {
- // try to read metadata from top of svg file
- foreach (glob($g_shapedir.'/*.svg') as $f) {
- $fh = fopen($f, 'r');
- $fname = basename($f);
- $header = fread($fh, 1024);
- if (preg_match('/]*>(.*?)<\/title>/is', $header, $match)) {
- $title = trim($match[1]);
- } else {
- $title = $fname;
- }
- $shapeindex[$fname] = $title;
- fclose($fh);
- }
- $json = json_encode($shapeindex, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
- file_put_contents($shapeindexfile, $json);
+ $shapeindex = create_shapeindex($shapeindexfile);
} else {
- // read svg metadata from existing file
- $json = file_get_contents($shapeindexfile);
- $shapeindex = json_decode($json, true);
- if (json_last_error() !== JSON_ERROR_NONE) {
- // TODO some kind of error and fallback
- // perhaps regenerate index file?
+ // check if shapeindex needs refresh (older than one day)
+ if (time() - filemtime($shapeindexfile) > 86400) {
+ $shapeindex = create_shapeindex($shapeindexfile);
+ } else {
+ // read svg metadata from existing file
+ $json = file_get_contents($shapeindexfile);
+ $shapeindex = json_decode($json, true);
+ if (json_last_error() !== JSON_ERROR_NONE) {
+ // TODO some kind of error and fallback
+ // perhaps regenerate index file?
+ }
}
}
$opt_shapefiles = $g_opt_none + $shapeindex;
diff --git a/webgui/lib/svg.inc b/webgui/lib/svg.inc
index 0b722b2..49b8c60 100644
--- a/webgui/lib/svg.inc
+++ b/webgui/lib/svg.inc
@@ -1,7 +1,7 @@
]*>(.*?)<\/title>/is', $header, $match)) {
+ $title = trim($match[1]);
+ } else {
+ $title = $fname;
+ }
+ $shapeindex[$fname] = $title;
+ fclose($fh);
+ }
+ $json = json_encode($shapeindex, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+ file_put_contents($shapeindexfile, $json);
+ return $shapeindex;
+}
+
+function get_shapeindex() {
+ global $g_doc_basepath;
+ $shapeindex = [];
+ $shapeindexfile = $g_doc_basepath . '/shapeindex.json';
+ if (!file_exists($shapeindexfile)) {
+ $shapeindex = create_shapeindex($shapeindexfile);
+ } else {
+ // check if shapeindex needs refresh (older than one day)
+ if (time() - filemtime($shapeindexfile) > 86400) {
+ $shapeindex = create_shapeindex($shapeindexfile);
+ } else {
+ // read svg metadata from existing file
+ $json = file_get_contents($shapeindexfile);
+ $shapeindex = json_decode($json, true);
+ if (json_last_error() !== JSON_ERROR_NONE) {
+ // some kind of error: just recreate
+ $shapeindex = create_shapeindex($shapeindexfile);
+ }
+ }
+ }
+ return $shapeindex;
+}
+
function svg_create_box($cx, $cy, $w, $h, $fg, $bg) {
-
-
-
-}
\ No newline at end of file
+}
diff --git a/webgui/locale/de_DE.po b/webgui/locale/de_DE.po
index 939454c..9e0c893 100644
--- a/webgui/locale/de_DE.po
+++ b/webgui/locale/de_DE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: YMS 0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2026-07-18 09:14+0200\n"
+"POT-Creation-Date: 2026-07-20 13:18+0200\n"
"PO-Revision-Date: 2024-03-15 13:50+0100\n"
"Last-Translator: Thomas Hooge \n"
"Language-Team: LANGUAGE \n"
@@ -16,198 +16,199 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: box.php:19 index.php:351
+#: box.php:19 index.php:352
msgid "Boxes"
msgstr "Kisten"
-#: box.php:68 checklist.php:59 maintenance.php:66 note.php:71 projects.php:94
-#: settings.php:45 storage.php:87 task.php:110
+#: box.php:70 checklist.php:59 maintenance.php:66 note.php:71 projects.php:96
+#: settings.php:45 storage.php:92 task.php:110
#, php-format
msgid "Unknown function '%s'!"
msgstr "Unbekannte Funktion '%s'!"
-#: box.php:92 box.php:132 box.php:248 storage.php:160
+#: box.php:94 box.php:134 box.php:250 storage.php:165
msgid "Label"
msgstr "Etikett"
-#: box.php:93 cable.php:177 cable.php:206 cable.php:239 company.php:203
+#: box.php:95 cable.php:177 cable.php:206 cable.php:239 company.php:203
#: company.php:266 documents.php:374 documents.php:589 fuse.php:156
-#: fuse.php:207 fuse.php:232 note.php:104 note.php:179 storage.php:201
-#: storage.php:295
+#: fuse.php:207 fuse.php:232 note.php:104 note.php:179 storage.php:206
+#: storage.php:300
msgid "Type"
msgstr "Typ"
-#: box.php:94 box.php:175 box.php:257 cable.php:131 cable.php:212 cable.php:262
-#: dropdown.php:44 dropdown.php:187 dropdown.php:235 storage.php:161
-#: storage.php:228 tag.php:119 tag.php:181 tag.php:265
+#: box.php:96 box.php:177 box.php:259 cable.php:131 cable.php:212 cable.php:262
+#: dropdown.php:44 dropdown.php:187 dropdown.php:235 storage.php:166
+#: storage.php:233 tag.php:119 tag.php:181 tag.php:265
msgid "Color"
msgstr "Farbe"
-#: box.php:95 box.php:146 box.php:174 box.php:253 storage.php:162
+#: box.php:97 box.php:148 box.php:176 box.php:255 storage.php:167
msgid "Content"
msgstr "Inhalt"
-#: box.php:96 box.php:176 box.php:201 cable.php:211 equipment.php:451
-#: index.php:359 index.php:375 inventory.php:359 provisions.php:272
+#: box.php:98 box.php:178 box.php:203 cable.php:211 equipment.php:451
+#: index.php:360 index.php:376 inventory.php:379 provisions.php:272
msgid "Weight"
msgstr "Gewicht"
-#: box.php:104 box.php:178 box.php:208 cable.php:141 company.php:214
+#: box.php:106 box.php:180 box.php:210 cable.php:141 company.php:214
#: company.php:299 documents.php:388 documents.php:600 documents.php:602
#: dropdown.php:156 equipment.php:376 equipment.php:447 equipment.php:545
-#: equipment.php:568 equipment.php:590 fuse.php:167 inventory.php:255
-#: maintenance.php:190 measurement.php:227 projects.php:208 projects.php:256
-#: provisions.php:195 storage.php:126 storage.php:170 storage.php:247
-#: tag.php:128 task.php:231 globals.inc:1014
+#: equipment.php:568 equipment.php:590 fuse.php:167 inventory.php:273
+#: maintenance.php:190 measurement.php:227 projects.php:210 projects.php:258
+#: projects.php:346 provisions.php:195 storage.php:131 storage.php:175
+#: storage.php:252 tag.php:128 task.php:231 globals.inc:1049
msgid "View"
msgstr "Ansehen"
-#: box.php:113 cable.php:151 company.php:221 documents.php:396 dropdown.php:162
-#: equipment.php:386 equipment_js.php:247 fuse.php:176 index.php:316
-#: inventory.php:266 maintenance.php:197 maintenance.php:318
-#: measurement.php:235 projects.php:217 projects.php:262 provisions.php:214
-#: storage.php:138 storage.php:177 tag.php:136 task.php:239 task.php:315
-#: globals.inc:1015 globals.inc:1031
+#: box.php:115 cable.php:151 company.php:221 documents.php:396 dropdown.php:162
+#: equipment.php:386 equipment_js.php:247 fuse.php:176 index.php:317
+#: inventory.php:284 maintenance.php:197 maintenance.php:318
+#: measurement.php:235 projects.php:219 projects.php:264 projects.php:351
+#: provisions.php:214 storage.php:143 storage.php:182 tag.php:136 task.php:239
+#: task.php:315 globals.inc:1050 globals.inc:1066
msgid "Edit"
msgstr "Bearbeiten"
-#: box.php:128
+#: box.php:130
msgid "Add Box"
msgstr "Kiste hinzufügen"
-#: box.php:136 box.php:177 index.php:399 inventory.php:190 inventory.php:296
-#: inventory.php:300 inventory.php:402 provisions.php:250 provisions.php:278
-#: provisions.php:326 storage.php:12 globals.inc:540
+#: box.php:138 box.php:179 box.php:266 index.php:400 inventory.php:208
+#: inventory.php:314 inventory.php:318 inventory.php:372 inventory.php:422
+#: provisions.php:250 provisions.php:278 provisions.php:326 storage.php:12
+#: globals.inc:542
msgid "Storage"
msgstr "Stauraum"
-#: box.php:150 box.php:180 box.php:265 cable.php:214 cable.php:269
+#: box.php:152 box.php:182 box.php:268 cable.php:214 cable.php:269
#: company.php:204 company.php:285 company.php:409 documents.php:419
#: documents.php:527 documents.php:744 equipment.php:358 equipment.php:418
#: equipment.php:456 equipment.php:671 equipment_js.php:69 fuse.php:237
-#: index.php:437 index.php:531 inventory.php:363 inventory.php:430
-#: maintenance.php:180 maintenance.php:280 maintenance.php:350 projects.php:174
-#: projects.php:198 projects.php:288 projects.php:312 projects.php:383
-#: storage.php:117 storage.php:229 storage.php:326
+#: index.php:438 index.php:558 inventory.php:383 inventory.php:450
+#: maintenance.php:180 maintenance.php:280 maintenance.php:350 projects.php:176
+#: projects.php:200 projects.php:290 projects.php:317 projects.php:403
+#: storage.php:122 storage.php:234 storage.php:340
msgid "Remarks"
msgstr "Bemerkungen"
-#: box.php:154 company.php:245 company.php:412 documents.php:444
+#: box.php:156 company.php:245 company.php:412 documents.php:444
#: documents.php:747 equipment.php:422 equipment.php:674 equipment_js.php:116
-#: equipment_js.php:283 index.php:441 inventory.php:304 maintenance.php:238
-#: measurement.php:284 note.php:158 projects.php:291 projects.php:386
-#: provisions.php:252 settings.php:125 storage.php:203 storage.php:329
-#: task.php:269 globals.inc:1041 globals.inc:1048
+#: equipment_js.php:283 index.php:442 inventory.php:322 maintenance.php:238
+#: measurement.php:284 note.php:158 projects.php:293 projects.php:406
+#: provisions.php:252 settings.php:125 storage.php:208 storage.php:343
+#: task.php:269 globals.inc:1076 globals.inc:1083
msgid "Save"
msgstr "Speichern"
-#: box.php:155 company.php:246 company.php:413 company.php:439
+#: box.php:157 company.php:246 company.php:413 company.php:439
#: documents.php:445 documents.php:748 dropdown.php:214 dropdown.php:281
#: equipment.php:423 equipment.php:675 equipment_js.php:117
-#: equipment_js.php:251 equipment_js.php:284 index.php:442 inventory.php:305
-#: maintenance.php:239 measurement.php:285 note.php:159 projects.php:292
-#: projects.php:387 provisions.php:253 search.php:36 settings.php:126
-#: storage.php:204 storage.php:330 task.php:270 globals.inc:1035
-#: globals.inc:1042 globals.inc:1049 globals.inc:1059
+#: equipment_js.php:251 equipment_js.php:284 index.php:443 inventory.php:323
+#: maintenance.php:239 measurement.php:285 note.php:159 projects.php:294
+#: projects.php:407 provisions.php:253 search.php:36 settings.php:126
+#: storage.php:209 storage.php:344 task.php:270 globals.inc:1070
+#: globals.inc:1077 globals.inc:1084 globals.inc:1094
msgid "Back"
msgstr "Zurück"
-#: box.php:173 box.php:251 inventory.php:351
+#: box.php:175 box.php:253 inventory.php:369
msgid "Box type"
msgstr "Kistentyp"
-#: box.php:192
+#: box.php:194
msgid "Inventory in box"
msgstr "Inventar in der Kiste"
-#: box.php:199 index.php:373 inventory.php:12 search.php:80 globals.inc:1425
+#: box.php:201 index.php:374 inventory.php:12 search.php:80 globals.inc:1460
msgid "Inventory"
msgstr "Inventar"
-#: box.php:200 dropdown.php:150 inventory.php:243 inventory.php:289
-#: inventory.php:358 inventory.php:392 provisions.php:180 provisions.php:238
+#: box.php:202 dropdown.php:150 inventory.php:261 inventory.php:307
+#: inventory.php:378 inventory.php:412 provisions.php:180 provisions.php:238
#: provisions.php:271 provisions.php:302
msgid "Number"
msgstr "Anzahl"
-#: box.php:228
+#: box.php:230
msgid "Box is empty"
msgstr "Kiste ist leer"
-#: box.php:241 documents.php:337 inventory.php:19 inventory.php:176
-#: maintenance.php:87 measurement.php:174 globals.inc:130
+#: box.php:243 documents.php:337 inventory.php:19 inventory.php:194
+#: maintenance.php:87 measurement.php:174 globals.inc:130 globals.inc:131
msgid "― none ―"
msgstr "― keine ―"
-#: box.php:243
+#: box.php:245
msgid "Edit Box"
msgstr "Kiste bearbeiten"
-#: box.php:261 equipment.php:655 inventory.php:396 provisions.php:306
+#: box.php:263 equipment.php:655 inventory.php:416 provisions.php:306
msgid "Weight, kg"
msgstr "Gewicht, kg"
-#: box.php:279 cable.php:298 checklist.php:170 company.php:450
+#: box.php:282 cable.php:298 checklist.php:170 company.php:450
#: documents.php:781 dropdown.php:287 equipment.php:701 equipment_js.php:293
-#: fuse.php:290 index.php:542 inventory.php:458 maintenance.php:371
-#: measurement.php:369 note.php:226 projects.php:399 provisions.php:340
-#: settings.php:132 storage.php:356 tag.php:294 task.php:398
+#: fuse.php:290 index.php:569 inventory.php:478 maintenance.php:371
+#: measurement.php:369 note.php:226 projects.php:419 provisions.php:340
+#: settings.php:132 storage.php:370 tag.php:294 task.php:398
msgid "Unknown function call: Please report to system development!"
msgstr "Unbekannter Funktionsaufruf: Bitte der Systementwickelung melden!"
-#: cable.php:12 index.php:408
+#: cable.php:12 index.php:409
msgid "Cables"
msgstr "Kabel"
#: cable.php:70 company.php:73 documents.php:148 equipment.php:84 fuse.php:71
-#: inventory.php:78 measurement.php:116 note.php:49 projects.php:84
-#: provisions.php:73 storage.php:55 tag.php:57 task.php:87
+#: inventory.php:96 measurement.php:116 note.php:49 projects.php:86
+#: provisions.php:73 storage.php:60 tag.php:57 task.php:87
msgid "Delete prohibited, invalid security token!"
msgstr "Löschen verboten, ungültiger Sicherheitstoken!"
#: cable.php:79 company.php:85 documents.php:216 dropdown.php:113
-#: equipment.php:219 fuse.php:82 index.php:88 inventory.php:90
+#: equipment.php:219 fuse.php:82 index.php:89 inventory.php:108
#: measurement.php:125 provisions.php:82 tag.php:68
#, php-format
msgid "Unknown function!"
msgstr "Unbekannte Funktion!"
#: cable.php:110 company.php:186 documents.php:357 equipment.php:337
-#: fuse.php:135 inventory.php:226 maintenance.php:114 measurement.php:187
-#: projects.php:179 provisions.php:164 tag.php:101 task.php:201
+#: fuse.php:135 inventory.php:244 maintenance.php:114 measurement.php:187
+#: projects.php:181 provisions.php:164 tag.php:101 task.php:201
msgid "Apply"
msgstr "Anwenden"
#: cable.php:110 company.php:186 documents.php:357 equipment.php:337
-#: fuse.php:135 inventory.php:226 maintenance.php:114 measurement.php:187
-#: projects.php:179 provisions.php:164 tag.php:101 task.php:201
+#: fuse.php:135 inventory.php:244 maintenance.php:114 measurement.php:187
+#: projects.php:181 provisions.php:164 tag.php:101 task.php:201
msgid "Go"
msgstr "Start"
#: cable.php:111 company.php:187 documents.php:358 equipment.php:338
-#: fuse.php:136 inventory.php:227 maintenance.php:115 measurement.php:188
-#: projects.php:180 provisions.php:165 tag.php:102 task.php:202
+#: fuse.php:136 inventory.php:245 maintenance.php:115 measurement.php:188
+#: projects.php:182 provisions.php:165 tag.php:102 task.php:202
msgid "Reset filter to defaults"
msgstr "Filter auf Standard zurücksetzen"
#: cable.php:111 company.php:187 documents.php:358 equipment.php:338
-#: fuse.php:136 inventory.php:227 maintenance.php:115 measurement.php:188
-#: projects.php:180 provisions.php:165 tag.php:102 task.php:202
+#: fuse.php:136 inventory.php:245 maintenance.php:115 measurement.php:188
+#: projects.php:182 provisions.php:165 tag.php:102 task.php:202
msgid "Clear"
msgstr "Löschen"
-#: cable.php:126 cable.php:205 fuse.php:235 globals.inc:502
+#: cable.php:126 cable.php:205 fuse.php:235 globals.inc:504
msgid "Cable"
msgstr "Kabel"
#: cable.php:127 cable.php:169 cable.php:235 checklist.php:153 company.php:202
#: company.php:241 company.php:264 company.php:344 dropdown.php:185
#: dropdown.php:233 equipment.php:406 equipment.php:638 equipment_js.php:101
-#: equipment_js.php:268 index.php:429 inventory.php:241 inventory.php:285
-#: inventory.php:388 measurement.php:256 measurement.php:303
-#: measurement.php:333 projects.php:167 projects.php:194 projects.php:243
-#: projects.php:281 projects.php:307 projects.php:365 provisions.php:234
-#: provisions.php:298 storage.php:115 storage.php:197 storage.php:291
+#: equipment_js.php:268 index.php:430 inventory.php:259 inventory.php:303
+#: inventory.php:408 measurement.php:256 measurement.php:303
+#: measurement.php:333 projects.php:169 projects.php:196 projects.php:245
+#: projects.php:283 projects.php:310 projects.php:377 provisions.php:234
+#: provisions.php:298 storage.php:120 storage.php:202 storage.php:296
#: tag.php:156 task.php:348
msgid "Name"
msgstr "Name"
@@ -224,8 +225,8 @@ msgstr "Länge"
msgid "Cross section"
msgstr "Querschnitt"
-#: cable.php:132 cable.php:213 cable.php:266 inventory.php:204
-#: inventory.php:244 inventory.php:362 inventory.php:414
+#: cable.php:132 cable.php:213 cable.php:266 inventory.php:222
+#: inventory.php:262 inventory.php:382 inventory.php:434
msgid "Condition"
msgstr "Zustand"
@@ -269,7 +270,7 @@ msgstr "Kabel löschen"
msgid "Tag is not used anywhere"
msgstr "Unbenutzte Tags"
-#: checklist.php:12 index.php:410
+#: checklist.php:12 index.php:411
msgid "Checklists"
msgstr "Checklisten"
@@ -279,7 +280,7 @@ msgid "Title"
msgstr "Titel"
#: checklist.php:82 checklist.php:126 checklist.php:157 maintenance.php:282
-#: projects.php:171 projects.php:197 projects.php:244 projects.php:311
+#: projects.php:173 projects.php:199 projects.php:246 projects.php:316
#: task.php:193
msgid "State"
msgstr "Status"
@@ -300,7 +301,7 @@ msgstr "Checkliste bearbeiten"
msgid "Delete checklist"
msgstr "Lösche Checkliste"
-#: company.php:12 documents.php:665 globals.inc:506
+#: company.php:12 documents.php:665 globals.inc:508
msgid "Company"
msgstr "Firma"
@@ -309,7 +310,7 @@ msgstr "Firma"
msgid "Deleted company no. %d"
msgstr "Firma Nr. %d gelöscht"
-#: company.php:159 documents.php:310 inventory.php:175 inventory.php:208
+#: company.php:159 documents.php:310 inventory.php:193 inventory.php:226
#: maintenance.php:86 measurement.php:173 globals.inc:129
msgid "― all ―"
msgstr "― alle ―"
@@ -398,8 +399,8 @@ msgstr "Stadt"
msgid "Delete Company"
msgstr "Firma löschen"
-#: company.php:426 documents.php:768 equipment.php:690 inventory.php:448
-#: note.php:217 storage.php:345
+#: company.php:426 documents.php:768 equipment.php:690 inventory.php:468
+#: note.php:217 storage.php:359
#, php-format
msgid "Record no. %d"
msgstr "Datensatz Nr. %d"
@@ -424,7 +425,7 @@ msgstr "Neuer GD Imagestream kann nicht initialisiert werden"
msgid "Resource not found!"
msgstr "Resource nicht gefunden!"
-#: documents.php:13 index.php:379 task.php:326 globals.inc:1429
+#: documents.php:13 index.php:380 task.php:326 globals.inc:1464
msgid "Documents"
msgstr "Dokumente"
@@ -516,7 +517,7 @@ msgstr "Dokumentenart"
msgid "Preview"
msgstr "Vorschau"
-#: documents.php:504 globals.inc:510
+#: documents.php:504 globals.inc:512
msgid "Drawing"
msgstr "Zeichnung"
@@ -562,14 +563,14 @@ msgid "Add new reference"
msgstr "Neue Referenz hinzufügen"
#: documents.php:635 equipment.php:13 equipment_js.php:14 fuse.php:236
-#: index.php:357 inventory.php:428 maintenance.php:95 maintenance.php:179
+#: index.php:358 inventory.php:448 maintenance.php:95 maintenance.php:179
#: maintenance.php:225 maintenance.php:274 maintenance.php:348
#: measurement.php:281 measurement.php:312 measurement.php:358 search.php:52
-#: globals.inc:511 globals.inc:1424
+#: globals.inc:513 globals.inc:1459
msgid "Equipment"
msgstr "Ausrüstung"
-#: documents.php:691 globals.inc:545
+#: documents.php:691 globals.inc:547
msgid "Vessel"
msgstr "Yacht"
@@ -577,15 +578,15 @@ msgstr "Yacht"
msgid "Edit Document"
msgstr "Dokument bearbeiten"
-#: documents.php:733 globals.inc:516
+#: documents.php:733 globals.inc:518
msgid "Generic"
msgstr "Allgemein"
-#: documents.php:734 manual.php:10 globals.inc:522
+#: documents.php:734 manual.php:10 globals.inc:524
msgid "Manual"
msgstr "Handbuch"
-#: documents.php:735 globals.inc:519
+#: documents.php:735 globals.inc:521
msgid "Invoice"
msgstr "Rechnung"
@@ -653,7 +654,7 @@ msgstr ""
msgid "Edit List: %s"
msgstr "Liste bearbeiten: %s"
-#: dropdown.php:280 equipment_js.php:93 globals.inc:1025
+#: dropdown.php:280 equipment_js.php:93 globals.inc:1060
msgid "Add"
msgstr "Hinzufügen"
@@ -714,7 +715,7 @@ msgstr ""
#: equipment.php:355 equipment.php:414 equipment.php:449 equipment.php:647
#: equipment_js.php:67 equipment_js.php:109 equipment_js.php:138
-#: equipment_js.php:276 index.php:433 index.php:483
+#: equipment_js.php:276 index.php:434 index.php:508
msgid "Model"
msgstr "Modell"
@@ -741,11 +742,11 @@ msgstr ""
msgid "Add Equipment"
msgstr "Ausrüstung hinzufügen"
-#: equipment.php:452 inventory.php:360
+#: equipment.php:452 inventory.php:380
msgid "Price"
msgstr "Preis"
-#: equipment.php:453 equipment.php:663 inventory.php:361 inventory.php:410
+#: equipment.php:453 equipment.php:663 inventory.php:381 inventory.php:430
msgid "Purchase date"
msgstr "Kaufdatum"
@@ -773,7 +774,7 @@ msgstr "Keine Wartungsdatensätze gefunden."
msgid "Add maintenance"
msgstr "Wartung hinzufügen"
-#: equipment.php:558 index.php:407 measurement.php:23
+#: equipment.php:558 index.php:408 measurement.php:23
msgid "Measurements"
msgstr "Maße/Messungen"
@@ -797,7 +798,7 @@ msgstr "Keine Ersatzteile gefunden."
msgid "Edit Equipment"
msgstr "Ausrüstung bearbeiten"
-#: equipment.php:659 inventory.php:406
+#: equipment.php:659 inventory.php:426
#, php-format
msgid "Price, %s"
msgstr "Preis, %s"
@@ -824,11 +825,11 @@ msgstr "Marke"
msgid "%d records"
msgstr "%d Datensätze"
-#: equipment_js.php:249 globals.inc:1033 globals.inc:1058
+#: equipment_js.php:249 globals.inc:1068 globals.inc:1093
msgid "Delete"
msgstr "Löschen"
-#: fuse.php:12 index.php:409
+#: fuse.php:12 index.php:410
msgid "Fuses"
msgstr "Sicherungen"
@@ -861,7 +862,7 @@ msgstr "Stromstärke, Ampere"
msgid "View fuse"
msgstr "Sicherung ansehen"
-#: fuse.php:230 globals.inc:515
+#: fuse.php:230 globals.inc:517
msgid "Fuse"
msgstr "Sicherung"
@@ -899,187 +900,191 @@ msgstr "Zugriff verweigert. Sie sind nicht der Kapitän."
msgid "Selected new vessel %d"
msgstr "Neues Boot %d ausgewählt"
-#: index.php:102
+#: index.php:103
msgid "Yacht data"
msgstr "Yachtdaten"
-#: index.php:104 globals.inc:544
+#: index.php:105 globals.inc:546
msgid "User"
msgstr "Benutzer"
-#: index.php:149
+#: index.php:150
msgid "Select"
msgstr "Auswählen"
-#: index.php:150
+#: index.php:151
msgid "Add yacht"
msgstr "Yacht hinzufügen"
-#: index.php:162
+#: index.php:163
msgid "Custom-build"
msgstr "Eigenbau"
-#: index.php:167
+#: index.php:168
#, php-format
msgid "Built by %s"
msgstr "Gebaut von %s"
-#: index.php:301
+#: index.php:302
msgid "Boat data"
msgstr "Bootsdaten"
-#: index.php:303
+#: index.php:304
msgid "Loa"
msgstr "LüA"
-#: index.php:304
+#: index.php:305
msgid "Lwl"
msgstr "LWL"
-#: index.php:305 index.php:495
+#: index.php:306 index.php:520
msgid "Beam"
msgstr "Breite"
-#: index.php:306 index.php:499
+#: index.php:307 index.php:524
msgid "Draught"
msgstr "Tiefgang"
-#: index.php:307 index.php:503
+#: index.php:308 index.php:528
msgid "Draught, min."
msgstr "Tiefgang, min."
-#: index.php:308 index.php:507
+#: index.php:309 index.php:532
msgid "Displacement"
msgstr "Verdrängung"
-#: index.php:309 index.php:511
+#: index.php:310 index.php:536
msgid "Ballast"
msgstr "Ballast"
-#: index.php:310 index.php:515
+#: index.php:311 index.php:540
msgid "Belt position aft"
msgstr "Gurtposition achtern"
-#: index.php:311 index.php:519
+#: index.php:312 index.php:544
msgid "Belt position bow"
msgstr "Gurtposition vorne"
-#: index.php:327
+#: index.php:328
msgid "Statistics"
msgstr "Statistik"
-#: index.php:343
+#: index.php:344
msgid "Storage type"
msgstr "Stauraumart"
-#: index.php:358 index.php:374 index.php:380
+#: index.php:359 index.php:375 index.php:381
msgid "Count"
msgstr "Anzahl"
-#: index.php:395
+#: index.php:396
msgid "Base data"
msgstr "Stammdaten"
-#: index.php:397
+#: index.php:398
msgid "Selection lists"
msgstr "Auswahllisten"
-#: index.php:398 inventory.php:245 tag.php:12 globals.inc:1066
+#: index.php:399 inventory.php:263 tag.php:12 globals.inc:1101
msgid "Tags"
msgstr ""
-#: index.php:400
+#: index.php:401
msgid "Companies"
msgstr "Firmen"
-#: index.php:403
+#: index.php:404
msgid "Additional modules"
msgstr "Zusatzmodule"
-#: index.php:405 settings.php:12
+#: index.php:406 settings.php:12
msgid "Settings"
msgstr "Einstellungen"
-#: index.php:406 search.php:102
+#: index.php:407 search.php:102
msgid "Tasks"
msgstr "Aufgaben"
-#: index.php:424
+#: index.php:425
msgid "Add additional yacht"
msgstr "Zusätzliche Yacht hinzufügen"
-#: index.php:459
+#: index.php:484
msgid "― Custom-built ―"
msgstr "― Eigenbau ―"
-#: index.php:475
+#: index.php:500
msgid "Edit Yacht"
msgstr "Yacht bearbeiten"
-#: index.php:479
+#: index.php:504
msgid "Vesselname"
msgstr "Yachtname"
-#: index.php:487
+#: index.php:512
msgid "LoA"
msgstr "LüA"
-#: index.php:491
+#: index.php:516
msgid "LwL"
msgstr "LWL"
-#: index.php:527
+#: index.php:552
msgid "Shape file"
msgstr "Rumpfform-Datei"
-#: index.php:528
+#: index.php:553
msgid "Shipyard"
msgstr "Werft"
-#: inventory.php:85
+#: index.php:554
+msgid "Default Storage"
+msgstr "Standard-Stauraum"
+
+#: inventory.php:103
#, php-format
msgid "Deleted inventory no. %d"
msgstr "Inventar Nr. %d gelöscht"
-#: inventory.php:242 inventory.php:354
+#: inventory.php:260 inventory.php:372
msgid "Container"
msgstr "Behälter"
-#: inventory.php:263
+#: inventory.php:281
msgid "No tags assigned"
msgstr "Keine Tags zugeordnet"
-#: inventory.php:281
+#: inventory.php:299
msgid "Add Inventory"
msgstr "Inventar hinzufügen"
-#: inventory.php:293 inventory.php:401
+#: inventory.php:311 inventory.php:421
msgid "Container type"
msgstr "Behälterart"
-#: inventory.php:295 inventory.php:301 inventory.php:403 storage.php:150
-#: globals.inc:501
+#: inventory.php:313 inventory.php:319 inventory.php:423 storage.php:155
+#: globals.inc:503
msgid "Box"
msgstr "Kiste"
-#: inventory.php:354
+#: inventory.php:373
#, php-format
msgid "%s in %s"
msgstr ""
-#: inventory.php:357
+#: inventory.php:377
msgid "Location ID"
msgstr "Position (x, y, z)"
-#: inventory.php:384
+#: inventory.php:404
msgid "Edit Inventory"
msgstr "Inventar bearbeiten"
-#: inventory.php:447
+#: inventory.php:467
msgid "Delete Inventory"
msgstr "Inventar löschen"
-#: inventory.php:451
+#: inventory.php:471
msgid ""
"Deleting an inventory item is final. There is no way back. Only delete if "
"you are absolute sure."
@@ -1100,7 +1105,7 @@ msgstr "Benutzername:"
msgid "Password:"
msgstr "Kennwort:"
-#: login.php:68 globals.inc:210
+#: login.php:68 globals.inc:211
msgid "Error"
msgstr "Fehler"
@@ -1140,7 +1145,7 @@ msgstr ""
msgid "New login"
msgstr "Neue Anmeldung"
-#: maintenance.php:12 globals.inc:1427
+#: maintenance.php:12 globals.inc:1462
msgid "Maintenance"
msgstr "Wartung"
@@ -1161,7 +1166,7 @@ msgstr "Wartung hinzufügen"
msgid "View Maintenance"
msgstr "Wartung anzeigen"
-#: maintenance.php:263 globals.inc:498
+#: maintenance.php:263 globals.inc:500
msgid "n/a"
msgstr ""
@@ -1189,7 +1194,7 @@ msgstr "Notiz hinzufügen"
msgid "Edit Maintenance"
msgstr "Wartung bearbeiten"
-#: maintenance.php:358 projects.php:380 task.php:219 task.php:297 task.php:373
+#: maintenance.php:358 projects.php:400 task.php:219 task.php:297 task.php:373
msgid "Status"
msgstr "Status"
@@ -1315,64 +1320,82 @@ msgstr ""
"Löschen einer Notiz ist endgültig. Es gibt keinen Weg zurück. Nur löschen "
"wenn Sie sich absolut sicher sind."
-#: projects.php:12 globals.inc:1428
+#: projects.php:12 globals.inc:1463
msgid "Projects"
msgstr "Projekte"
-#: projects.php:195 projects.php:309
+#: projects.php:197 projects.php:312
msgid "Start date"
msgstr "Startdatum"
-#: projects.php:196 projects.php:310
+#: projects.php:198 projects.php:313
msgid "Duration"
msgstr "Dauer"
-#: projects.php:230
+#: projects.php:232
msgid "Generic Tasks"
msgstr "Allgemeine Aufgaben"
-#: projects.php:231
+#: projects.php:233
msgid "Tasks not assigned to any project"
msgstr "Aufgaben die keinem Projekt zugeordnet sind"
-#: projects.php:277
+#: projects.php:279
msgid "Add Project"
msgstr "Projekt hinzufügen"
-#: projects.php:285 projects.php:308 projects.php:369 task.php:298 task.php:374
+#: projects.php:287 projects.php:311 projects.php:381 task.php:298 task.php:374
msgid "Responsible"
msgstr "Verantwortlich"
-#: projects.php:318
+#: projects.php:314
+msgid "Costs plan"
+msgstr "Kosten, geplant"
+
+#: projects.php:315
+msgid "Costs final"
+msgstr "Kosten, endgültig"
+
+#: projects.php:323
msgid "Assigned tasks"
msgstr "Zugeordnete Aufgaben"
-#: projects.php:325
+#: projects.php:330
msgid "No assigned tasks found."
msgstr "Keine zugeordneten Aufgaben gefunden."
-#: projects.php:332 task.php:12 task.php:216 task.php:265 task.php:290
-#: globals.inc:541
+#: projects.php:337 task.php:12 task.php:216 task.php:265 task.php:290
+#: globals.inc:543
msgid "Task"
msgstr "Aufgabe"
-#: projects.php:352
+#: projects.php:363
msgid "Edit Project"
msgstr "Projekt bearbeiten"
-#: projects.php:372
+#: projects.php:384
msgid "Startdate"
msgstr "Startdatum"
-#: projects.php:376
+#: projects.php:388
msgid "Duration, days"
msgstr "Dauer, Tage"
-#: projects.php:394
+#: projects.php:392
+#, php-format
+msgid "Costs planned, %s"
+msgstr "Kosten geplant, %s"
+
+#: projects.php:396
+#, php-format
+msgid "Costs final, %s"
+msgstr "Kosten endgültig, %s"
+
+#: projects.php:414
msgid "Delete Project"
msgstr "Lösche Projekt"
-#: provisions.php:12 globals.inc:1426
+#: provisions.php:12 globals.inc:1461
msgid "Provisions"
msgstr "Proviant"
@@ -1412,7 +1435,7 @@ msgstr "Nettogewicht, kg"
msgid "Delete provisions"
msgstr "Proviant löschen"
-#: search.php:12 search.php:32 globals.inc:1252
+#: search.php:12 search.php:32 globals.inc:1287
msgid "Search"
msgstr "Suche"
@@ -1460,80 +1483,88 @@ msgstr "Maximale Bildbreite"
msgid "Maximal image height"
msgstr "Maximale Bildhöhe"
-#: storage.php:65
+#: storage.php:70
msgid "Delete failed, assigned boxes detected!"
msgstr "Löschen fehlgeschlagen, zugeordnete Kisten vorhanden!"
-#: storage.php:73
+#: storage.php:78
msgid "Delete failed, assigned equipment detected!"
msgstr "Löschen fehlgeschlagen, zugeordnete Ausrüstug vorhanden!"
-#: storage.php:82
+#: storage.php:87
#, php-format
msgid "Deleted storage no. %d (%s)"
msgstr "Stauraum Nr. %d gelöscht"
-#: storage.php:116
+#: storage.php:121
msgid "Position"
msgstr "Position"
-#: storage.php:191
+#: storage.php:196
msgid "Add Storage"
msgstr "Stauraum hinzufügen"
-#: storage.php:223
+#: storage.php:228
msgid "Typ"
msgstr "Art"
-#: storage.php:224
+#: storage.php:229 storage.php:335
msgid "Capacity"
msgstr "Kapazität"
-#: storage.php:225
+#: storage.php:230
msgid "Location (x, y, z)"
msgstr "Position (x, y, z)"
-#: storage.php:226
+#: storage.php:231
msgid "Width (wx, wy, wz)"
msgstr "Maß (wx, wy, wz)"
-#: storage.php:227
+#: storage.php:232
msgid "Angle"
msgstr "Winkel"
-#: storage.php:235
+#: storage.php:240
msgid "Boxes in storage"
msgstr "Kisten im Stauraum"
-#: storage.php:252
+#: storage.php:257
msgid "No boxes contained"
msgstr "Keine Kisten enthalten"
-#: storage.php:255
+#: storage.php:260
msgid "Provisions in storage"
msgstr "Proviant im Stauraum"
-#: storage.php:272
+#: storage.php:277
msgid "No provisions contained"
msgstr "Kein Proviant enthalten"
-#: storage.php:278
+#: storage.php:283
msgid "Edit Storage"
msgstr "Stauraum bearbeiten"
-#: storage.php:298
+#: storage.php:303
msgid "Position (x, y, z) in mm"
msgstr "Position (x, y, z) in mm"
-#: storage.php:312
+#: storage.php:317
msgid "Width (x, y, z) in mm"
msgstr "Maße (x, y, z) in mm"
-#: storage.php:343
+#: storage.php:331
+msgid "Angle, deg."
+msgstr "Winkel, Grad"
+
+#: storage.php:338
+msgid "Capacity Unit"
+msgstr "Kapazitätseinheit"
+
+#: storage.php:357
msgid "Delete Storage"
msgstr "Stauraum löschen"
-#: storage.php:349
+#: storage.php:363
msgid ""
"Deleting a storage is final. There is no way back. Only delete if you are "
"absolute sure."
@@ -1581,7 +1612,7 @@ msgstr "Aufgabe gelöscht"
msgid "Priority"
msgstr "Priorität"
-#: task.php:217 task.php:262 task.php:291 task.php:353 globals.inc:536
+#: task.php:217 task.php:262 task.php:291 task.php:353 globals.inc:538
msgid "Project"
msgstr "Projekt"
@@ -1638,243 +1669,252 @@ msgstr ""
"Löschen einer Aufgabe ist endgültig. Es gibt keinen Weg zurück. Nur löschen "
"wenn Sie sich absolut sicher sind."
-#: globals.inc:131
+#: globals.inc:132
msgid "― unknown ―"
msgstr "― unbekannt ―"
-#: globals.inc:149
+#: globals.inc:150
msgid "Information"
msgstr ""
-#: globals.inc:188
+#: globals.inc:189
msgid "Success"
msgstr "Erfolg"
-#: globals.inc:199
+#: globals.inc:200
msgid "Warning"
msgstr "Warnung"
-#: globals.inc:260
+#: globals.inc:261
msgid "Username or password was empty"
msgstr "Benutzername oder Kennwort war leer"
-#: globals.inc:271
+#: globals.inc:272
msgid "User account does not exist"
msgstr "Benutzer existiert nicht"
-#: globals.inc:280
+#: globals.inc:281
msgid "Username or password invalid"
msgstr "Benutzername oder Kennwort ungültig"
-#: globals.inc:303
+#: globals.inc:304
msgid "User not logged in"
msgstr "Benutzer ist nicht angemeldet"
-#: globals.inc:499
+#: globals.inc:501
msgid "Active"
msgstr "Aktiv"
-#: globals.inc:500
+#: globals.inc:502
msgid "Bad"
msgstr "Schlecht"
-#: globals.inc:503
+#: globals.inc:505
msgid "Catamaran"
msgstr "Katamaran"
-#: globals.inc:504
+#: globals.inc:506
msgid "Completed"
msgstr "erledigt"
-#: globals.inc:505
+#: globals.inc:507
msgid "Closed"
msgstr "Geschlossen"
-#: globals.inc:507
+#: globals.inc:509
msgid "Defect"
msgstr "Defekt"
-#: globals.inc:508
+#: globals.inc:510
msgid "Deleted"
msgstr "Gelöscht"
-#: globals.inc:509
+#: globals.inc:511
msgid "Done"
msgstr "Fertig"
-#: globals.inc:512
+#: globals.inc:514
msgid "Estimated"
msgstr "Geschätzt"
-#: globals.inc:513
+#: globals.inc:515
msgid "Finished"
msgstr "Fertig"
-#: globals.inc:514
+#: globals.inc:516
msgid "Fixed"
msgstr "Fixiert"
-#: globals.inc:517
+#: globals.inc:519
msgid "Good"
msgstr "Gut"
-#: globals.inc:518
+#: globals.inc:520
msgid "High"
msgstr "Hoch"
-#: globals.inc:520
+#: globals.inc:522
msgid "Locked"
msgstr "Gesperrt"
-#: globals.inc:521
+#: globals.inc:523
msgid "Low"
msgstr "Niedrig"
-#: globals.inc:523
+#: globals.inc:525
msgid "Medium"
msgstr "Mittel"
-#: globals.inc:524
+#: globals.inc:526
msgid "Monohull"
msgstr ""
-#: globals.inc:525
+#: globals.inc:527
msgid "New"
msgstr "Neu"
-#: globals.inc:526
+#: globals.inc:528
msgid "None"
msgstr "Keine"
-#: globals.inc:527
+#: globals.inc:529
msgid "Normal"
msgstr "Normal"
-#: globals.inc:528
+#: globals.inc:530
msgid "Ongoing"
msgstr "Laufend"
-#: globals.inc:529
+#: globals.inc:531
msgid "Open"
msgstr "Offen"
-#: globals.inc:530
+#: globals.inc:532
msgid "Ordered"
msgstr "Bestellt"
-#: globals.inc:531
+#: globals.inc:533
msgid "Paused"
msgstr "Pausiert"
-#: globals.inc:532
+#: globals.inc:534
msgid "Pending"
msgstr "Ausstehend"
-#: globals.inc:533
+#: globals.inc:535
msgid "Picture"
msgstr "Bild"
-#: globals.inc:534
+#: globals.inc:536
msgid "Planned"
msgstr "Geplant"
-#: globals.inc:535
+#: globals.inc:537
msgid "Precise"
msgstr "Präzise"
-#: globals.inc:537
+#: globals.inc:539
msgid "Removed"
msgstr "Entfernt"
-#: globals.inc:538
+#: globals.inc:540
msgid "Repairable"
msgstr "Reparierbar"
-#: globals.inc:539
+#: globals.inc:541
msgid "Rough"
msgstr "Grob"
-#: globals.inc:542
+#: globals.inc:544
msgid "Trimaran"
msgstr ""
-#: globals.inc:543
+#: globals.inc:545
msgid "Unknown"
msgstr "Unbekannt"
-#: globals.inc:546
+#: globals.inc:548
msgid "waiting"
msgstr "wartend"
-#: globals.inc:1069
+#: globals.inc:945
+msgid "No default storage defined for current vessel"
+msgstr "Kein Standardstauraum für die aktuelle Yacht definiert"
+
+#: globals.inc:960
+#, php-format
+msgid "Selected fallback storage '%s'"
+msgstr "Ausgewählter Stauraum als Fallback '%s'"
+
+#: globals.inc:1104
msgid "Tag assignment"
msgstr "Tag-Zuordnung"
-#: globals.inc:1073
+#: globals.inc:1108
msgid "(Separate by comma)"
msgstr "(Getrennt mit Komma)"
-#: globals.inc:1155
+#: globals.inc:1190
#, php-format
msgid "%d B"
msgstr ""
-#: globals.inc:1157
+#: globals.inc:1192
#, php-format
msgid "%.1f kB"
msgstr ""
-#: globals.inc:1159
+#: globals.inc:1194
#, php-format
msgid "%.1f MB"
msgstr ""
-#: globals.inc:1164 globals.inc:1173
+#: globals.inc:1199 globals.inc:1208
#, php-format
msgid "%d Byte"
msgstr ""
-#: globals.inc:1166
+#: globals.inc:1201
#, php-format
msgid "%.1f kByte"
msgstr ""
-#: globals.inc:1168
+#: globals.inc:1203
#, php-format
msgid "%.1f MByte"
msgstr ""
-#: globals.inc:1175
+#: globals.inc:1210
#, php-format
msgid "approx. %.1f kByte"
msgstr "ca. %.1f kByte"
-#: globals.inc:1177
+#: globals.inc:1212
#, php-format
msgid "approx. %.1f MByte"
msgstr "ca. %.1f MByte"
-#: globals.inc:1280 globals.inc:1283
+#: globals.inc:1315 globals.inc:1318
msgid "First"
msgstr "Erster"
-#: globals.inc:1281 globals.inc:1284
+#: globals.inc:1316 globals.inc:1319
msgid "Previous"
msgstr "Zurück"
-#: globals.inc:1318 globals.inc:1321
+#: globals.inc:1353 globals.inc:1356
msgid "Next"
msgstr "Vor"
-#: globals.inc:1319 globals.inc:1322
+#: globals.inc:1354 globals.inc:1357
msgid "Last"
msgstr "Letzter"
-#: globals.inc:1336
+#: globals.inc:1371
#, php-format
msgid "Records %d to %d of %d"
msgstr "Datensätze %d bis %d von %d"
-#: globals.inc:1338
+#: globals.inc:1373
msgid "No records found"
msgstr "Keine Datensätze gefunden."
diff --git a/webgui/locale/de_DE/LC_MESSAGES/yms.mo b/webgui/locale/de_DE/LC_MESSAGES/yms.mo
index 8b5e967..3b86591 100644
Binary files a/webgui/locale/de_DE/LC_MESSAGES/yms.mo and b/webgui/locale/de_DE/LC_MESSAGES/yms.mo differ
diff --git a/webgui/maintenance.php b/webgui/maintenance.php
index 6a22b5d..52dda25 100644
--- a/webgui/maintenance.php
+++ b/webgui/maintenance.php
@@ -126,7 +126,7 @@ $sort = array(
$w = array('m.vid=:vid');
$p = array(':vid' => $user->vid);
-if ($flt->equip == -1 or $flt->equip == 0) {
+if (isset($flt->equip) and ($flt->equip == -1 or $flt->equip == 0)) {
$w[] = 'm.eid IS NULL';
} elseif ($flt->equip > 0) {
$w[] = 'm.eid=:eid';
diff --git a/webgui/projects.php b/webgui/projects.php
index e4e76e4..af07016 100644
--- a/webgui/projects.php
+++ b/webgui/projects.php
@@ -72,6 +72,8 @@ switch ($submit = form_get_action()) {
$p[':projname'] = gpc_get_string($_POST, 'projname');
$p[':startdate'] = gpc_get_date($_POST, 'startdate');
$p[':duration'] = gpc_get_int($_POST, 'duration');
+ $p[':costs_plan'] = gpc_get_currency($_POST, 'costs_plan');
+ $p[':costs_final'] = gpc_get_currency($_POST, 'costs_final');
$p[':projstate'] = gpc_get_string($_POST, 'projstate');
$p[':remarks'] = gpc_get_string($_POST, 'remarks', 150);
db_exec_update('project', $p, 'projid');
@@ -296,7 +298,8 @@ form_create_select('responsible', _('Responsible'), $opt_user, $project->respons
elseif ($action == ACT_VIEW):
// ========== VARIANT: view single record =====================================
-$sql = "SELECT projname, startdate, duration, responsible, projstate, remarks "
+$sql = "SELECT projname, startdate, duration, responsible, projstate, "
+ . " costs_plan, costs_final, remarks "
. "FROM project "
. "WHERE projid=?";
$sth = $pdo->prepare($sql);
@@ -308,6 +311,8 @@ echo '| ', _('Name')," | ", $project->
echo ' |
|---|
| ', _('Responsible')," | ", $opt_user[$project->responsible], " |
\n";
echo '| ', _('Start date')," | ", $project->startdate, " |
\n";
echo '| ', _('Duration')," | ", $project->duration, " |
\n";
+echo '| ', _('Costs plan')," | ", format_currency($project->costs_plan), " |
\n";
+echo '| ', _('Costs final')," | ", format_currency($project->costs_final), " |
\n";
echo '| ', _('State')," | ", get_enum($project->projstate), " |
\n";
echo '| ', _('Remarks')," | ", nl2br($project->remarks), " |
\n";
echo "\n";
@@ -357,7 +362,8 @@ elseif ($action == ACT_EDIT):
echo '', _('Edit Project'), "
\n";
-$sql = "SELECT projname, responsible, startdate, duration, projstate, remarks "
+$sql = "SELECT projname, responsible, startdate, duration, projstate,"
+ . " costs_plan, costs_final, remarks "
. "FROM project "
. "WHERE projid=?";
$sth = $pdo->prepare($sql);
@@ -382,6 +388,14 @@ form_create_select('responsible', _('Responsible'), $opt_user, $project->respons
+
+
+
+
+
+
+
+
projstate);
?>
diff --git a/webgui/settings.php b/webgui/settings.php
index 3236a82..0e07330 100644
--- a/webgui/settings.php
+++ b/webgui/settings.php
@@ -39,6 +39,15 @@ switch ($submit = form_get_action()) {
$p[':valstr'] = NULL;
$p[':valint'] = gpc_get_int($_POST, 'rowspp');
db_exec_update('settings', $p, $pk);
+ $menu = [];
+ for ($i = 1; $i <= 6; $i++) {
+ $menu[] = gpc_get_uint($_POST, "menu$i", $i);
+ }
+ $p[':sno'] = 3; // user menu
+ $p[':valint'] = NULL;
+ $p[':valstr'] = implode(',', $menu);
+ db_exec_update('settings', $p, $pk);
+ $user->menu = $menu;
break;
default:
@@ -99,6 +108,18 @@ $maximgy = $pdo->query("SELECT valint FROM settings WHERE userid=0 AND sno=21")-