<?PHP /** * Compiles the client-side application from PHP parts. * * @author Joshua Ramon Enslin <joshua@museum-digital.de> */ declare(strict_types = 1); require_once __DIR__ . "/../functions/functions.php"; /** * Generates the json for a translation file. * * @param string $lang Language. * * @return string */ function generateFieldsIndex(string $lang):string { $fieldsGetter = new CsvxmlAvailableFields($lang); $availableFields = $fieldsGetter->getFields(); return MD_STD::json_encode($availableFields); } /** * Generates the json for a translation file. * * @param string $lang Language. * * @return string */ function generateTranslationFile(string $lang):string { $tlLoader = new MDTlLoader("csvxml_tl_cache", $lang); return MD_STD::json_encode([ 'remarks' => $tlLoader->tl('basis', 'basis', 'remarks'), 'download' => $tlLoader->tl('export', 'export', 'download'), 'upload' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'upload'), 'select_csv_file_for_upload' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'select_csv_file_for_upload'), 'currently_approved_tags' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'currently_approved_tags'), 'download_csv_all' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'download_csv_all'), 'download_csv_by_selection' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'download_csv_by_selection'), 'select_required_fields' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'select_required_fields'), 'select_all_fields' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'select_all_fields'), 'unset_selection' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'unset_selection'), 'file_format' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'file_format'), 'validation_errors' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'validation_errors'), 'errors_parsing' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'errors_parsing'), 'errors_mandatoryTags' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'errors_mandatoryTags'), 'errors_duplicateInvNos' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'errors_duplicateInvNos'), 'errors_dependentColumns' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'errors_dependentColumns'), 'errors_controlledLists' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'errors_controlledLists'), 'errors_mainImageResource' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'errors_mainImageResource'), 'allowed_values' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'allowed_values'), 'privacy_policy' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'privacy_policy'), 'contact' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'contact'), 'news' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'news'), 'imprint' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'imprint'), 'about' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'about'), 'help_where_am_i' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'help_where_am_i'), 'help_where_am_i_content' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'help_where_am_i_content'), 'help_what_is_csv' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'help_what_is_csv'), 'help_what_is_csv_content' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'help_what_is_csv_content'), 'help_how_to_format_csv' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'help_how_to_format_csv'), 'help_how_to_format_csv_content' => $tlLoader->tl("csvxml-overview", "csvxml_overview", 'help_how_to_format_csv_content'), ]); } /** * Generate index.htm. * * @return string */ function generateAppShell():string { return '<!DOCTYPE HTML> <html data-allowed-langs="' . htmlspecialchars(implode(',', ALLOWED_LANGS)) . '"> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <link rel="stylesheet" type="text/css" href="assets/css/csvxml.min.css?v000005" /> <link rel="manifest" href="/manifest.json" /> <meta name="theme-color" content="#aa4400" /> <title>CSVXML :: museum-digital</title> <meta name="twitter:title" content="CSVXML :: museum-digital" /> <meta property="og:title" content="CSVXML :: museum-digital" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="@museumdigital" /> <meta name="description" content="Validate import CSV files for museum-digital" /> <meta name="keywords" content="Imports, museum-digital" /> <link rel="shortcut icon" sizes="128x128" href="assets/img/mdlogo-csvxml.svg" /> <link rel="apple-touch-icon" sizes="192x192" href="assets/img/mdlogo-csvxml-192px.png" /> <meta property="twitter:image" content="assets/img/mdlogo-csvxml.svg" /> <meta property="og:image" content="assets/img/mdlogo-csvxml.svg" /> </head> <body class="loading"> <script src="assets/js/csvxmlV2.min.js?v000005" type="text/javascript" async></script> </body> </html>'; } const SERVED_ROOT = __DIR__ . '/../public/'; const SERVED_JSON_ROOT = __DIR__ . '/../public/json/'; if (!is_dir(SERVED_JSON_ROOT)) { echo "Will generate JSON root directory (" . SERVED_JSON_ROOT . ")" . PHP_EOL; MD_STD::mkdir(SERVED_JSON_ROOT); } foreach (ALLOWED_LANGS as $lang) { echo "Will generate JSON list of fields for language: " . $lang . PHP_EOL; file_put_contents(SERVED_JSON_ROOT . 'fields.' . $lang . '.json', generateFieldsIndex($lang)); echo "Will generate JSON list of translations for language: " . $lang . PHP_EOL; file_put_contents(SERVED_JSON_ROOT . 'tls.' . $lang . '.json', generateTranslationFile($lang)); } echo "Will generate app shell" . PHP_EOL; file_put_contents(SERVED_ROOT . 'index.htm', generateAppShell()); echo "Will minify CSS" . PHP_EOL; exec("minify \\ -o " . escapeshellarg(__DIR__ . '/../public/assets/css/csvxml.min.css') . '\\ ' . escapeshellarg(__DIR__ . '/../public/assets/css/editMenu.css') . '\\ ' . escapeshellarg(__DIR__ . '/../public/assets/css/dialogue.css') . '\\ ' . escapeshellarg(__DIR__ . '/../public/assets/css/csvxml.css')); echo "Will minify JS" . PHP_EOL; exec("minify \\ -o " . escapeshellarg(__DIR__ . '/../public/assets/js/csvxmlV2.min.js') . '\ ' . escapeshellarg(__DIR__ . '/../public/assets/js/csvxmlV2.js'));