Files
jbergner 33e971bab7
All checks were successful
release-tag / release-image (push) Successful in 1m57s
Branding aktualisiert
2026-07-26 20:19:01 +02:00

175 lines
11 KiB
HTML

{{define "bulk.html"}}
<!doctype html>
<html lang="{{.Lang}}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>{{.Name}} · {{index .Text "bulk_title"}}</title>
<meta name="description" content="{{index .Text "bulk_meta_description"}}">
<meta name="robots" content="noindex,nofollow">
{{if not .WhiteLabel}}
<meta name="theme-color" content="#F8FAFC">
<link rel="icon" href="/static/brand/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/static/brand/ucng-icon-32.png">
<link rel="icon" type="image/png" sizes="192x192" href="/static/brand/ucng-icon-192.png">
<link rel="icon" type="image/png" sizes="512x512" href="/static/brand/ucng-icon-512.png">
<link rel="apple-touch-icon" sizes="192x192" href="/static/brand/ucng-icon-192.png">
<meta property="og:image" content="{{.BaseURL}}/static/brand/ucng-open-graph.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
{{end}}
<link rel="stylesheet" href="/static/style.css">
</head>
<body class="bulk-page">
<header class="site-header bulk-header">
<a class="brand" href="/?lang={{.Lang}}">{{if .WhiteLabel}}<span class="brand-text">{{.Name}}</span>{{else}}<img src="/static/brand/ucng-logo.png" width="800" height="233" alt="UCNG — Universal Content Notation Guidelines">{{end}}</a>
<nav>
<a href="#workspace">{{index .Text "bulk_nav_workspace"}}</a>
<a href="#advanced">{{index .Text "bulk_nav_advanced"}}</a>
<a href="#results">{{index .Text "bulk_nav_results"}}</a>
</nav>
<label class="language-switch"><span class="sr-only">{{index .Text "field_language"}}</span><select id="bulk-language">
{{range .Languages}}<option value="{{.Code}}" {{if eq $.Lang .Code}}selected{{end}}>{{.Name}}</option>{{end}}
</select></label>
</header>
<main class="bulk-main">
<section class="bulk-hero">
<div>
<p class="eyebrow">{{index .Text "bulk_eyebrow"}}</p>
<h1>{{index .Text "bulk_title"}}</h1>
<p class="lead">{{index .Text "bulk_intro"}}</p>
</div>
<div class="bulk-status-grid" aria-label="{{index .Text "bulk_status"}}">
<div class="bulk-status-card"><span>{{index .Text "bulk_license"}}</span><strong>{{if .BulkAPI}}{{index .Text "bulk_active"}}{{else}}{{index .Text "bulk_inactive"}}{{end}}</strong></div>
<div class="bulk-status-card"><span>{{index .Text "bulk_limit"}}</span><strong>{{.BulkMaxItems}}</strong></div>
<div class="bulk-status-card"><span>{{index .Text "bulk_auth"}}</span><strong>{{if .BulkRequireAPIKey}}{{index .Text "bulk_api_key"}}{{else}}{{index .Text "bulk_no_api_key"}}{{end}}</strong></div>
</div>
</section>
{{if not .BulkAPI}}
<section class="notice bulk-license-warning">
<strong>{{index .Text "bulk_inactive_title"}}</strong>
<p>{{index .Text "bulk_inactive_help"}}</p>
</section>
{{end}}
<section id="workspace" class="panel bulk-workspace">
<div class="section-heading-row bulk-section-heading">
<div>
<p class="eyebrow">{{index .Text "bulk_workspace_eyebrow"}}</p>
<h2>{{index .Text "bulk_workspace_title"}}</h2>
<p>{{index .Text "bulk_workspace_intro"}}</p>
</div>
</div>
{{if .BulkRequireAPIKey}}
<div class="bulk-auth-box">
<label>{{index .Text "bulk_api_key_label"}}
<input id="bulk-api-key" type="password" autocomplete="off" placeholder="{{index .Text "bulk_api_key_placeholder"}}">
<small>{{index .Text "bulk_api_key_help"}}</small>
</label>
</div>
{{end}}
<div class="bulk-two-column">
<div class="bulk-source-panel">
<label>{{index .Text "bulk_items_label"}}
<textarea id="bulk-items" rows="12" placeholder="{{index .Text "bulk_items_placeholder"}}"></textarea>
<small>{{index .Text "bulk_items_help"}}</small>
</label>
<div class="bulk-inline-actions">
<button type="button" class="button secondary" id="bulk-sample-items">{{index .Text "bulk_sample"}}</button>
<span id="bulk-item-count" class="bulk-counter">0 / {{.BulkMaxItems}}</span>
</div>
</div>
<div class="bulk-profile-panel">
<h3>{{index .Text "bulk_profile_title"}}</h3>
<p>{{index .Text "bulk_profile_intro"}}</p>
<div class="bulk-profile-grid">
<label>{{index .Text "field_language"}}
<select id="bulk-output-language">{{range .Languages}}<option value="{{.Code}}" {{if eq $.Lang .Code}}selected{{end}}>{{.Name}}</option>{{end}}</select>
</label>
<label>{{index .Text "field_assurance"}}
<select id="bulk-assurance">{{range .Assurances}}<option value="{{.Value}}">{{.Label}}</option>{{end}}</select>
</label>
<div class="bulk-component-row"><strong>Text</strong><select id="bulk-text-extent">{{range .Extents}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select><select id="bulk-text-review">{{range .Reviews}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select></div>
<div class="bulk-component-row"><strong>{{index .Text "bulk_cover_image"}}</strong><select id="bulk-cover-extent">{{range .Extents}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select><select id="bulk-cover-review">{{range .Reviews}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select></div>
<div class="bulk-component-row"><strong>{{index .Text "bulk_images"}}</strong><select id="bulk-image-extent">{{range .Extents}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select><select id="bulk-image-review">{{range .Reviews}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select></div>
<div class="bulk-component-row"><strong>{{index .Text "bulk_research"}}</strong><select id="bulk-research-extent">{{range .Extents}}<option value="{{.Value}}" {{if eq .Value "assisted"}}selected{{end}}>{{.Label}}</option>{{end}}</select><select id="bulk-research-review">{{range .Reviews}}<option value="{{.Value}}" {{if eq .Value "editorial"}}selected{{end}}>{{.Label}}</option>{{end}}</select></div>
<div class="bulk-component-row"><strong>{{index .Text "bulk_translation"}}</strong><select id="bulk-translation-extent">{{range .Extents}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select><select id="bulk-translation-review">{{range .Reviews}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select></div>
<div class="bulk-component-row"><strong>Code</strong><select id="bulk-code-extent">{{range .Extents}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select><select id="bulk-code-review">{{range .Reviews}}<option value="{{.Value}}" {{if eq .Value "none"}}selected{{end}}>{{.Label}}</option>{{end}}</select></div>
</div>
</div>
</div>
<details class="bulk-legal-details">
<summary>{{index .Text "bulk_article50_title"}}</summary>
<div class="legal-check-grid bulk-legal-grid">
<label class="check-card"><input id="bulk-public-interest" type="checkbox"><span><strong>{{index .Text "field_public_interest_text"}}</strong></span></label>
<label class="check-card"><input id="bulk-deepfake" type="checkbox"><span><strong>{{index .Text "field_deepfake"}}</strong></span></label>
<label class="check-card"><input id="bulk-substantial-review" type="checkbox"><span><strong>{{index .Text "field_substantial_review"}}</strong></span></label>
<label class="check-card"><input id="bulk-editorial-responsibility" type="checkbox"><span><strong>{{index .Text "field_editorial_responsibility_confirmed"}}</strong></span></label>
<label class="check-card"><input id="bulk-first-exposure" type="checkbox"><span><strong>{{index .Text "field_first_exposure"}}</strong></span></label>
<label class="check-card"><input id="bulk-accessibility" type="checkbox"><span><strong>{{index .Text "field_accessibility"}}</strong></span></label>
</div>
<div class="bulk-profile-grid bulk-responsibility-grid">
<label>{{index .Text "field_responsible_name"}}<input id="bulk-responsible" type="text"></label>
<label>{{index .Text "field_responsible_url"}}<input id="bulk-responsible-url" type="url"></label>
</div>
</details>
<div class="bulk-primary-actions">
<button type="button" id="bulk-run" {{if not .BulkAPI}}disabled{{end}}>{{index .Text "bulk_run"}}</button>
<span id="bulk-run-status" role="status" aria-live="polite"></span>
</div>
</section>
<section id="advanced" class="panel bulk-advanced">
<p class="eyebrow">{{index .Text "bulk_advanced_eyebrow"}}</p>
<h2>{{index .Text "bulk_advanced_title"}}</h2>
<p>{{index .Text "bulk_advanced_intro"}}</p>
<label>{{index .Text "bulk_json_label"}}
<textarea id="bulk-json" class="bulk-json-editor" rows="16"></textarea>
</label>
<div class="bulk-inline-actions">
<button type="button" class="button secondary" id="bulk-json-sample">{{index .Text "bulk_json_sample"}}</button>
<button type="button" id="bulk-json-run" {{if not .BulkAPI}}disabled{{end}}>{{index .Text "bulk_json_run"}}</button>
</div>
</section>
<section id="results" class="panel bulk-results" hidden>
<div class="section-heading-row bulk-section-heading">
<div>
<p class="eyebrow">{{index .Text "bulk_results_eyebrow"}}</p>
<h2>{{index .Text "bulk_results_title"}}</h2>
</div>
<div class="bulk-inline-actions">
<button type="button" class="button secondary" id="bulk-copy-json">{{index .Text "bulk_copy_json"}}</button>
<button type="button" class="button secondary" id="bulk-download-json">{{index .Text "bulk_download_json"}}</button>
<button type="button" class="button secondary" id="bulk-download-csv">{{index .Text "bulk_download_csv"}}</button>
</div>
</div>
<div id="bulk-result-summary" class="bulk-result-summary"></div>
<div class="bulk-table-wrap">
<table class="bulk-result-table">
<thead><tr><th>{{index .Text "bulk_col_id"}}</th><th>{{index .Text "bulk_col_status"}}</th><th>{{index .Text "bulk_col_assessment"}}</th><th>{{index .Text "bulk_col_links"}}</th></tr></thead>
<tbody id="bulk-result-body"></tbody>
</table>
</div>
<details class="bulk-raw-result"><summary>{{index .Text "bulk_raw_result"}}</summary><pre id="bulk-result-json"></pre></details>
</section>
</main>
<footer>
<span>{{if .WhiteLabel}}{{.Name}}{{else}}UCNG{{end}} · {{index .Text "bulk_footer_note"}}</span>
<span><a href="/legal?lang={{.Lang}}">{{legalLabel .Lang "legal"}}</a> · <a href="/privacy?lang={{.Lang}}">{{legalLabel .Lang "privacy"}}</a> · <a href="/accessibility?lang={{.Lang}}">{{legalLabel .Lang "accessibility"}}</a></span>
</footer>
<script>window.BULK_CONFIG={{.AppConfig}};</script>
<script src="/static/bulk.js" defer></script>
</body>
</html>
{{end}}