Files
Shaarli_bm_theme/shaarli-pro/includes.html
T
bruno f2c0f755f6
CI / build (push) Failing after 4m53s
Use version hash for asset cache busting
2026-08-09 10:37:25 -04:00

129 lines
6.8 KiB
HTML

<title>{$pagetitle}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="referrer" content="same-origin">
<link rel="icon" type="image/png" href="{$base_path}/{function="ltrim($asset_path, '/')"}/img/favicon.png">
<link rel="manifest" href="{$base_path}/{function="ltrim($asset_path, '/')"}/manifest.json">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="apple-mobile-web-app-title" content="Shaarli Pro">
<link rel="apple-touch-icon" href="{$base_path}/{function="ltrim($asset_path, '/')"}/img/icons/icon-192x192.png">
<link rel="alternate" type="application/rss+xml" href="{$feedurl}?do=rss{$searchcrits}#" title="RSS Feed" />
<link rel="alternate" type="application/atom+xml" href="{$feedurl}?do=atom{$searchcrits}#" title="ATOM Feed" />
<link rel="search" type="application/opensearchdescription+xml" href="{$base_path}/open-search#" title="Shaarli search - {$shaarlititle}" />
<!-- Prevent dark mode flash (FOUC) - must run before CSS loads -->
<script>
(function() {
// Load theme preferences from localStorage to prevent FOUC
var themeMode = localStorage.getItem('theme') ||
(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
var themeId = localStorage.getItem('shaarit_theme_id') || 'DEFAULT';
// Apply persisted theme config (saved by the theme picker)
var storedConfig = localStorage.getItem('shaarit_themes_config');
if (storedConfig) {
try {
var config = JSON.parse(storedConfig);
if (config.default) themeId = config.default;
if (config.mode) themeMode = config.mode;
} catch(e) {}
}
// Disable light mode for dark-only themes
var darkOnlyThemes = ['LINEAR', 'SPOTIFY', 'NOTION', 'DISCORD', 'DRACULA', 'ONE_DARK_PRO', 'TOKYO_NIGHT', 'NORD', 'NIGHT_OWL', 'ANTHRACITE', 'CYBERPUNK', 'NAVY_ELEGANCE', 'EARTHY'];
if (darkOnlyThemes.indexOf(themeId) !== -1) {
themeMode = 'dark';
}
if (themeMode === 'dark') {
document.documentElement.setAttribute('data-theme', 'dark');
} else {
document.documentElement.setAttribute('data-theme', 'light');
}
document.documentElement.setAttribute('data-theme-id', themeId);
if (themeMode === 'dark') {
document.addEventListener('DOMContentLoaded', function() {
var mc = document.querySelector('meta[name="theme-color"]');
if (mc) mc.setAttribute('content', '#1e293b');
});
}
})();
</script>
<!-- Professional Theme CSS (minified build) -->
<link type="text/css" rel="stylesheet" href="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/style.min.css?v={$version_hash}" />
<link type="text/css" rel="stylesheet" href="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/themes.min.css?v={$version_hash}" />
<link type="text/css" rel="stylesheet" href="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/custom_views.min.css?v={$version_hash}" />
{if="$pageName=='editlink' || $pageName=='addlink' || $pageName=='editlinkbatch'"}
<link type="text/css" rel="stylesheet" href="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/awesomplete.min.css?v={$version_hash}" />
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/awesomplete.min.js?v={$version_hash}" defer></script>
{/if}
{if="$pageName=='editlink' || $pageName=='editlinkbatch' || ($pageName=='linklist' && isset($search_tags) && preg_match('/(^|[\s,])note([\s,]|$)/i', (string) $search_tags))"}
<link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/toastui-editor.min.css" />
<link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/theme/toastui-editor-dark.min.css" />
<script src="https://uicdn.toast.com/editor/latest/toastui-editor-all.min.js" defer></script>
{/if}
<!-- Preconnect to external domains for performance -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
<!-- Google Fonts (loaded here instead of @import in CSS to avoid render block) -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<!-- Icons (Material Design Icons) -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/MaterialDesign-Webfont/7.2.96/css/materialdesignicons.min.css" crossorigin="anonymous">
<!-- Theme Color -->
<meta name="theme-color" content="#2563eb">
<!-- Plugins CSS -->
{loop="$plugins_includes.css_files"}
<link type="text/css" rel="stylesheet" href="{$base_path}/{function="ltrim($value, '/')"}?v={$version_hash}" />
{/loop}
{if="is_file('data/user.css')"}
<link type="text/css" rel="stylesheet" href="{$base_path}/data/user.css?v={$version_hash}" />
{/if}
<script>
var shaarli = {
basePath: '{$base_path}',
rootPath: '{$root_path}',
assetPath: '{$base_path}{$asset_path}',
token: '{$token}',
isAuth: (function(){/*{if="$is_logged_in"}*/return true;/*{else}*/return false;/*{/if}*/})(),
pageName: '{$pageName}',
visibility: '{$visibility}',
untaggedonly: (function(){/*{if="$untaggedonly"}*/return true;/*{else}*/return false;/*{/if}*/})()
};
</script>
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/i18n.min.js?v={$version_hash}" defer></script>
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/a11y.min.js?v={$version_hash}" defer></script>
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/shaarit-rules.min.js?v={$version_hash}" defer></script>
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/theme.min.js?v={$version_hash}" defer></script>
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/navigation.min.js?v={$version_hash}" defer></script>
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/search.min.js?v={$version_hash}" defer></script>
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/bulk-actions.min.js?v={$version_hash}" defer></script>
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/script.min.js?v={$version_hash}" defer></script>
<script src="{$base_path}/{function="ltrim($asset_path, '/')"}/dist/custom_views.min.js?v={$version_hash}" defer></script>
<!-- Register PWA service worker -->
<script>
(function() {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('{$base_path}/{function="ltrim($asset_path, '/')"}/service-worker.js')
.then(function() { /* service worker registered */ })
.catch(function() { /* registration failed, continue normally */ });
}
})();
</script>
{if="file_exists('tpl/shaarli-pro/extra.html')"}
{include="extra"}
{/if}