CI / build (push) Failing after 6m2s
Introduce a Node build system for minified CSS/JS with content hashes, add PWA support, i18n helpers, accessibility improvements, and more translatable strings. Move theme configuration from bookmarks to localStorage, add Playwright tests, and set up CI workflows.
78 lines
3.3 KiB
HTML
78 lines
3.3 KiB
HTML
<!DOCTYPE html>
|
|
<html{if="$language !== 'auto'"} lang="{$language}"{/if}>
|
|
<head>
|
|
{$pageName="import"}
|
|
{include="includes"}
|
|
</head>
|
|
<body>
|
|
{include="page.header"}
|
|
<div id="uploaddiv" class="container page-import">
|
|
<div class="row">
|
|
<div class="col-md-8 col-md-offset-2">
|
|
<form method="post" action="{$base_path}/admin/import" enctype="multipart/form-data" name="uploadform" id="uploadform">
|
|
<input type="hidden" name="token" value="{$token}">
|
|
<input type="hidden" name="MAX_FILE_SIZE" value="{$maxfilesize}">
|
|
|
|
<div class="card">
|
|
<div class="card-header">{"Import Database"|t}</div>
|
|
<div class="card-body">
|
|
<p class="text-muted" style="margin-bottom: 1.5rem;">
|
|
{'Import Netscape HTML bookmarks (as exported from Firefox/Chrome/Opera/Delicious/Diigo...).'|t}
|
|
</p>
|
|
|
|
<div class="form-group">
|
|
<label class="form-label" for="filetoupload">{'File to upload'|t}</label>
|
|
<input type="file" id="filetoupload" name="filetoupload" class="form-control" style="height: auto; padding: 0.5rem;"/>
|
|
<div class="sublabel">{'Maximum size allowed:'|t} <strong>{$maxfilesizeHuman}</strong></div>
|
|
</div>
|
|
|
|
<div class="form-group checkbox-wrapper">
|
|
<input type="checkbox" name="overwrite" id="overwrite" style="width: auto;">
|
|
<label for="overwrite" style="margin: 0;">{'Overwrite existing bookmarks'|t}</label>
|
|
</div>
|
|
|
|
<hr style="margin: 1.5rem 0; border-top: 1px solid var(--border);">
|
|
|
|
<h3 style="font-size: 1.1rem; font-weight: 600; color: var(--text-main); margin-bottom: 1rem;">{'Privacy Settings'|t}</h3>
|
|
|
|
<div class="form-group">
|
|
<div class="radio-group">
|
|
<div class="form-group checkbox-wrapper" style="margin-bottom: 0.5rem;">
|
|
<input name="privacy" type="radio" value="default" id="privacy-default" checked style="width: auto;" />
|
|
<label for="privacy-default" style="margin: 0;">
|
|
<strong>{'Default'|t}</strong> <span class="text-muted">- {'Use values from the imported file, default to public'|t}</span>
|
|
</label>
|
|
</div>
|
|
<div class="form-group checkbox-wrapper" style="margin-bottom: 0.5rem;">
|
|
<input name="privacy" type="radio" value="private" id="privacy-private" style="width: auto;" />
|
|
<label for="privacy-private" style="margin: 0;">
|
|
<strong>{'Private'|t}</strong> <span class="text-muted">- {'Import all bookmarks as private'|t}</span>
|
|
</label>
|
|
</div>
|
|
<div class="form-group checkbox-wrapper">
|
|
<input name="privacy" type="radio" value="public" id="privacy-public" style="width: auto;" />
|
|
<label for="privacy-public" style="margin: 0;">
|
|
<strong>{'Public'|t}</strong> <span class="text-muted">- {'Import all bookmarks as public'|t}</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="form-label" for="default-tags">{'Add default tags'|t}</label>
|
|
<input type="text" name="default_tags" id="default-tags" class="form-control" placeholder="{'Separate tags with comma...'|t}">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card-footer">
|
|
<button type="submit" name="import_file" class="btn btn-primary">{'Import'|t}</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{include="page.footer"}
|
|
</body>
|
|
</html>
|