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'])) { 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";

@@ -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")-

$module) { + if ($module['type'] === 'primary') { + $opt_modules[$mid] = $module['title']; + } +} +for ($i = 1; $i <= 6; $i++) { + form_create_select("menu$i", sprintf(_('Menu %d'), $i), $opt_modules, $user->menu[$i-1]); +} + form_create_select('datefmt', _('Date format'), $opt_datefmt, $datefmt); ?>