├── .gitignore
├── images
├── favicon.ico
├── search.png
├── button-css.png
├── button-dw.png
├── button-php.gif
├── button-rss.png
├── button-donate.gif
├── button-html5.png
├── transparency.gif
├── apple-touch-icon.png
├── editor
│ ├── edit-cancel.svg
│ ├── edit-save.svg
│ ├── edit-preview.svg
│ ├── browse-parent.svg
│ ├── close.svg
│ ├── browse-folder.svg
│ └── browse-link.svg
├── info.svg
├── home.svg
├── user.svg
├── edit.svg
├── delete.svg
└── search.svg
├── template.info.txt
├── lang
├── en
│ ├── style.txt
│ ├── settings.php
│ └── lang.php
├── fi
│ ├── style.txt
│ ├── settings.php
│ └── lang.php
├── fr
│ ├── style.txt
│ ├── settings.php
│ └── lang.php
├── es
│ ├── style.txt
│ ├── settings.php
│ └── lang.php
├── de
│ ├── style.txt
│ ├── settings.php
│ └── lang.php
└── de-informal
│ ├── style.txt
│ ├── settings.php
│ └── lang.php
├── conf
├── default.php
└── metadata.php
├── composer.json
├── css
├── _imgdetail.css
├── usertools.less
├── structure.less
├── links.less
├── _cookies.css
├── _toc.css
├── _tabs.css
├── plugins.less
├── _recent.css
├── _footnotes.css
├── geshi.less
├── _forms.css
├── pagetools.less
├── _sidebar.less
├── _search.less
├── _diff.css
├── _links.css
├── _languages.less
├── _media_popup.css
├── _fileuploader.css
├── _modal.css
├── design.less
├── _admin.less
├── _edit.css
├── content.less
├── print.less
└── _media_fullscreen.css
├── tpl_searchform.php
├── tpl_footer.php
├── README.md
├── rest
└── pageinfo.php
├── main.php
├── detail.php
├── style.ini
└── script.js
/.gitignore:
--------------------------------------------------------------------------------
1 | /composer.lock
2 | /vendor
3 | rest/php_errors.log
4 |
--------------------------------------------------------------------------------
/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/favicon.ico
--------------------------------------------------------------------------------
/images/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/search.png
--------------------------------------------------------------------------------
/images/button-css.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/button-css.png
--------------------------------------------------------------------------------
/images/button-dw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/button-dw.png
--------------------------------------------------------------------------------
/images/button-php.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/button-php.gif
--------------------------------------------------------------------------------
/images/button-rss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/button-rss.png
--------------------------------------------------------------------------------
/images/button-donate.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/button-donate.gif
--------------------------------------------------------------------------------
/images/button-html5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/button-html5.png
--------------------------------------------------------------------------------
/images/transparency.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/transparency.gif
--------------------------------------------------------------------------------
/images/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saschaleib/dokuwiki-template-ad-hominem/HEAD/images/apple-touch-icon.png
--------------------------------------------------------------------------------
/template.info.txt:
--------------------------------------------------------------------------------
1 | base ad-hominem
2 | author Sascha Leib
3 | email ad@hominem.info
4 | date 2025-09-12
5 | name Ad Hominem Template
6 | desc A flexible, lightweight and modernised revision of the DokuWiki default template
7 | url https://www.dokuwiki.org/template:ad-hominem
8 |
--------------------------------------------------------------------------------
/images/editor/edit-cancel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/editor/edit-save.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/info.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/editor/edit-preview.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lang/en/style.txt:
--------------------------------------------------------------------------------
1 | If you want to adjust the logo, simply use the Media Manager to upload a ''logo.png'' into the ''wiki'' or the root namespace and it
2 | will be automatically used. You can also upload a ''favicon.ico'' there. If you use a closed
3 | wiki it is recommended to make the ''wiki'' (or root) namespace world readable in the ACL settings or
4 | your logo is not shown to not logged in users.
5 |
--------------------------------------------------------------------------------
/lang/fi/style.txt:
--------------------------------------------------------------------------------
1 | If you want to adjust the logo, simply use the Media Manager to upload a ''logo.png'' into the ''wiki'' or the root namespace and it
2 | will be automatically used. You can also upload a ''favicon.ico'' there. If you use a closed
3 | wiki it is recommended to make the ''wiki'' (or root) namespace world readable in the ACL settings or
4 | your logo is not shown to not logged in users.
5 |
--------------------------------------------------------------------------------
/images/home.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lang/fr/style.txt:
--------------------------------------------------------------------------------
1 | Si vous souhaitez modifier le logo, utilisez simplement le gestionnaire de médias et envoyez un fichier nommé "logo.png" dans la catégorie "wiki" ou à la racine. Il sera automatiquement utilisé. Il en est de même pour le "favicon.ico". Si vous utilisez un wiki fermé, il est recommandé de régler les ACL de la racine ou de la catégorie "wiki" pour rendre ces images visibles aux utilisateurs non connectés.
--------------------------------------------------------------------------------
/images/editor/browse-parent.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lang/es/style.txt:
--------------------------------------------------------------------------------
1 | Si desea ajustar el logotipo, sólo tiene que utilizar el Administrador de Medios para cargar un ''logo.png'' dentro de "wiki'' o en el espacio de nombres de la raíz y se utilizará automáticamente. También puede cargar un ''favicon.ico'' allí. Si utiliza un wiki cerrado se recomienda hacer el ''wiki'' (o raíz) espacio de nombres legible por todo el mundo en la configuración de ACL o su logotipo no se mostrará para que los usuarios no registrados.
--------------------------------------------------------------------------------
/images/user.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lang/de/style.txt:
--------------------------------------------------------------------------------
1 | Wenn Sie das Logo anpassen wollen, benutzen Sie einfach den Medien-Manager, um ein ''logo.png'' in den ''wiki''- oder Wurzel-Namensraum hochzuladen. Es wird dann automatisch als Logo verwendet. Sie können dort auch ein ''favicon.ico'' hochladen. Falls Sie ein geschlossenes Wiki haben, ist es empfehlenswert, den ''wiki''- (oder Wurzel-)Namensraum für alle Nutzer in den ACL-Einstellungen als lesbar zu öffnen. Ansonsten wird das Logo nur für eingeloggte Nutzer angezeigt.
2 |
--------------------------------------------------------------------------------
/lang/de-informal/style.txt:
--------------------------------------------------------------------------------
1 | Benutze einfach den Medien-Manager, um ein ''logo.png'' in den ''wiki''- oder obersten Namensraum hochzuladen, wenn du das Logo anpassen willst. Es wird dann automatisch als Logo verwendet. Alternativ kannst du dort auch ein ''favicon.ico'' hochladen. Falls du ein geschlossenes Wiki betreibst, ist es empfehlenswert, den ''wiki''- (oder Wurzel-)Namensraum für alle Nutzer in den ACL-Einstellungen als lesbar zu öffnen. Ansonsten wird das Logo nur für eingeloggte Nutzer angezeigt.
2 |
--------------------------------------------------------------------------------
/images/editor/close.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/edit.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/delete.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/conf/default.php:
--------------------------------------------------------------------------------
1 |
6 | */
7 |
8 | $conf['darkmode'] = 'allow';
9 | $conf['navtrail'] = 'none';
10 | $conf['printstyle'] = 'basic';
11 | $conf['homelink'] = '';
12 |
13 | $conf['cookiepos'] = 'bottom';
14 | $conf['cookiemsg'] = 'This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.';
15 | $conf['cookielink'] = 'about:cookies';
16 |
17 | $conf['langmenu'] = 'sb';
18 | $conf['langfilter'] = 'existing';
19 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "saschaleib/dokuwiki-template-ad-hominem",
3 | "description": "Renewed template for DokuWiki, based on the original bundled template",
4 | "homepage": "https://www.dokuwiki.org/template:ad-hominem",
5 | "type": "project",
6 | "license": "GPL v2",
7 | "require": {
8 | "php": ">=8.0",
9 | "ext-json": "*"
10 | },
11 | "require-dev": {
12 | "dokuwiki/dokuwiki": ">=2020-07-29"
13 | },
14 | "repositories": [
15 | {
16 | "type": "vcs",
17 | "url": "https://github.com/dokuwiki/dokuwiki"
18 | }
19 | ],
20 | "config": {
21 | "platform": {
22 | "php": "8.0"
23 | }
24 | },
25 | "suggest": {},
26 | "minimum-stability": "dev",
27 | "prefer-stable": true
28 | }
29 |
--------------------------------------------------------------------------------
/images/editor/browse-folder.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/css/_imgdetail.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the image detail page (detail.php).
3 | */
4 |
5 | #dokuwiki__detail {
6 | padding: 1em;
7 | }
8 | #dokuwiki__detail h1 {
9 | }
10 |
11 | #dokuwiki__detail img {
12 | float: left;
13 | margin: 0 1.5em .5em 0;
14 | }
15 | [dir=rtl] #dokuwiki__detail div.content img {
16 | float: right;
17 | margin-right: 0;
18 | margin-left: 1.5em;
19 | }
20 | #dokuwiki__detail div.img_detail {
21 | float: left;
22 | }
23 | [dir=rtl] #dokuwiki__detail div.content div.img_detail {
24 | float: right
25 | }
26 |
27 | #dokuwiki__detail div.img_detail h2 {
28 | }
29 | #dokuwiki__detail div.img_detail dl {
30 | }
31 | #dokuwiki__detail div.img_detail dl dt {
32 | }
33 | #dokuwiki__detail div.img_detail dl dd {
34 | }
35 |
36 | #dokuwiki__detail p.back {
37 | clear: both;
38 | }
39 |
--------------------------------------------------------------------------------
/css/usertools.less:
--------------------------------------------------------------------------------
1 | #dokuwiki__usertools {
2 | position: absolute;
3 | top: .5em;
4 | right: 40px; // pagetool width
5 | text-align: right;
6 | width: 100%;
7 |
8 | ul {
9 | margin: 0 auto;
10 | padding: 0;
11 | max-width: @ini_site_width;
12 | }
13 |
14 | li.action a {
15 | display: inline-flex;
16 | flex-direction: row-reverse;
17 | flex-wrap: nowrap;
18 |
19 | svg {
20 | height: 1.4em;
21 | width: 1.4em;
22 | vertical-align: middle;
23 | fill: @ini_border;
24 | margin-right: 0.2em;
25 | }
26 | }
27 |
28 | li.action a:hover,
29 | li.action a:active {
30 | svg {
31 | fill: @ini_link;
32 | }
33 | }
34 |
35 | }
36 |
37 | [dir=rtl] #dokuwiki__usertools {
38 | text-align: left;
39 | left: 40px; // pagetool width
40 | right: auto;
41 |
42 |
43 | li.action a {
44 |
45 | svg {
46 | margin-right: 0;
47 | margin-left: 0.2em;
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/conf/metadata.php:
--------------------------------------------------------------------------------
1 |
6 | */
7 |
8 | $meta['darkmode'] = array('multichoice',
9 | '_choices' => array ('allow', 'disable'));
10 |
11 | $meta['navtrail'] = array('multichoice',
12 | '_choices' => array ('none', 'text', 'link'));
13 |
14 | $meta['printstyle'] = array('multichoice',
15 | '_choices' => array ('basic', 'compact'));
16 |
17 | $meta['cookiepos'] = array('multichoice',
18 | '_choices' => array ('hide', 'top', 'bottom'));
19 |
20 | $meta['cookiemsg'] = array('string');
21 |
22 | $meta['cookielink'] = array('string');
23 |
24 | $meta['homelink'] = array('string');
25 |
26 | $meta['langmenu'] = array('multichoice',
27 | '_choices' => array ('tb', 'sb'));
28 |
29 | $meta['langfilter'] = array('multichoice',
30 | '_choices' => array ('all', 'existing'));
31 |
--------------------------------------------------------------------------------
/images/editor/browse-link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tpl_searchform.php:
--------------------------------------------------------------------------------
1 |
19 |
--------------------------------------------------------------------------------
/css/structure.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the general layout structure.
3 | *
4 | * @author Anika Henke
5 | */
6 | body {
7 | margin: 0 auto;
8 | }
9 |
10 | #dokuwiki__site {
11 | margin: 0 auto;
12 | max-width: @ini_site_width;
13 | }
14 |
15 | #dokuwiki__site > .site {
16 | padding: 0 .5em;
17 | }
18 |
19 | #dokuwiki__header {
20 | width: 100%;
21 |
22 | .headings {
23 | float: left;
24 | }
25 |
26 | .tools {
27 | float: right;
28 | text-align: right;
29 | }
30 | }
31 |
32 | [dir=rtl] #dokuwiki__header {
33 | .headings {
34 | float: right;
35 | text-align: right;
36 | }
37 |
38 | .tools {
39 | float: left;
40 | text-align: left;
41 | }
42 | }
43 |
44 | #dokuwiki__site .wrapper {
45 | position: relative;
46 | }
47 |
48 | #dokuwiki__aside {
49 | width: @ini_sidebar_width;
50 | float: left;
51 | position: relative;
52 | display: block;
53 |
54 | > .pad {
55 | margin: 0 1.5em 0 0;
56 | }
57 | }
58 |
59 | [dir=rtl] #dokuwiki__aside {
60 | float: right;
61 | > .pad {
62 | margin: 0 0 0 1.5em;
63 | }
64 | }
65 |
66 | .showSidebar #dokuwiki__content {
67 | float: right;
68 | margin-left: (-1 * @ini_sidebar_width);
69 | width: 100%;
70 |
71 | > .pad {
72 | margin-left: @ini_sidebar_width;
73 | }
74 | }
75 |
76 | [dir=rtl] .showSidebar #dokuwiki__content {
77 | float: left;
78 | margin-left: 0;
79 | margin-right: (-1 * @ini_sidebar_width);
80 |
81 | > .pad {
82 | margin-left: 0;
83 | margin-right: @ini_sidebar_width;
84 | }
85 | }
86 |
87 | #dokuwiki__footer {
88 | clear: both;
89 | }
90 |
--------------------------------------------------------------------------------
/lang/de-informal/settings.php:
--------------------------------------------------------------------------------
1 |
6 | */
7 |
8 | $lang['darkmode'] = 'Benutzerseitigen Nachtmodus zulassen';
9 | $lang['darkmode_o_allow'] = 'Zulassen';
10 | $lang['darkmode_o_disable'] = 'Deaktivieren';
11 |
12 | $lang['navtrail'] = 'Aktuelle Seite in hierarchischen Breadcrumbs anzeigen';
13 | $lang['navtrail_o_none'] = 'Nicht anzeigen';
14 | $lang['navtrail_o_text'] = 'Als Text anzeigen';
15 | $lang['navtrail_o_link'] = 'Als Link anzeigen';
16 |
17 | $lang['cookiepos'] = 'Cookie-Banner auf der Seite anzeigen';
18 | $lang['cookiepos_o_hide'] = 'Kein Cookie-Banner anzeigen';
19 | $lang['cookiepos_o_top'] = 'Oben auf der Seite anzeigen';
20 | $lang['cookiepos_o_bottom'] = 'Unten auf der Seite anzeigen';
21 |
22 | $lang['cookiemsg'] = 'Die Nachricht, die auf dem Banner angezeigt werden soll (kann HTML enthalten)';
23 | $lang['cookielink'] = 'Link zu weiteren Informationen (interner oder externer Link)';
24 | $lang['homelink'] = 'Link zu übergeordneter Homepage (leer für Standardverhalten)';
25 |
26 | $lang['printstyle'] = 'Druckstil-Variante';
27 | $lang['printstyle_o_basic'] = 'Einfach';
28 | $lang['printstyle_o_compact'] = 'Kompakt';
29 |
30 | $lang['langmenu'] = 'Zeige das Sprachen-Menü (benötigt das Translation-Plugin)';
31 | $lang['langmenu_o_tb'] = 'Als Menü in der Werkzeugleiste';
32 | $lang['langmenu_o_sb'] = 'Als Liste in der Seitenleiste';
33 |
--------------------------------------------------------------------------------
/lang/de/settings.php:
--------------------------------------------------------------------------------
1 |
6 | */
7 |
8 | $lang['darkmode'] = 'Benutzerseitigen Nachtmodus zulassen';
9 | $lang['darkmode_o_allow'] = 'Zulassen';
10 | $lang['darkmode_o_disable'] = 'Deaktivieren';
11 |
12 | $lang['navtrail'] = 'Aktuelle Seite in hierarchischen Breadcrumbs anzeigen';
13 | $lang['navtrail_o_none'] = 'Nicht anzeigen';
14 | $lang['navtrail_o_text'] = 'Als Text anzeigen';
15 | $lang['navtrail_o_link'] = 'Als Link anzeigen';
16 |
17 | $lang['cookiepos'] = 'Cookie-Banner auf der Seite anzeigen';
18 | $lang['cookiepos_o_hide'] = 'Kein Cookie-Banner anzeigen';
19 | $lang['cookiepos_o_top'] = 'Oben auf der Seite anzeigen';
20 | $lang['cookiepos_o_bottom'] = 'Unten auf der Seite anzeigen';
21 |
22 | $lang['cookiemsg'] = 'Die Nachricht, die auf dem Banner angezeigt werden soll (kann HTML enthalten)';
23 | $lang['cookielink'] = 'Link zu weiteren Informationen (interner oder externer Link)';
24 | $lang['homelink'] = 'Link zu übergeordneter Homepage (leer für Standardverhalten)';
25 |
26 | $lang['printstyle'] = 'Druckstil-Variante';
27 | $lang['printstyle_o_basic'] = 'Einfach';
28 | $lang['printstyle_o_compact'] = 'Kompakt';
29 |
30 | $lang['langmenu'] = 'Zeige das Sprachen-Menü (benötigt das Translation-Plugin)';
31 | $lang['langmenu_o_tb'] = 'Als Menü in der Werkzeugleiste';
32 | $lang['langmenu_o_sb'] = 'Als Liste in der Seitenleiste';
33 |
--------------------------------------------------------------------------------
/css/links.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This contains the content styling
3 | * @author Sascha Leib
4 | */
5 |
6 | /* general link styles */
7 | a:link {
8 | color: @ini_link;
9 | text-decoration: none;
10 | border-radius: 2px;
11 | }
12 | a:visited {
13 | color: @ini_link;
14 | }
15 | a:hover {
16 | text-decoration: underline;
17 | }
18 | a:focus {
19 | outline: @ini_focus_color solid 2px;
20 | }
21 | a.wikilink1:link,
22 | a.wikilink1:visited {
23 | color: @ini_existing;
24 | }
25 | a.wikilink2:link,
26 | a.wikilink2:visited {
27 | color: @ini_missing;
28 | }
29 |
30 | a.media:link,
31 | a.media:visited {
32 | display: block;
33 | line-height: initial;
34 | }
35 |
36 | /* in-page links */
37 | a[href^='#'].wikilink1:link,
38 | a[href^='#'].wikilink1:visited {
39 | color: @ini_inpage;
40 | text-decoration: underline;
41 | text-decoration-style: dotted;
42 |
43 | }
44 |
45 | /* special cases: included section in footer: */
46 | footer #ftInclude a.wikilink1:link,
47 | footer #ftInclude a.wikilink1:visited {
48 | color: @ini_link;
49 | }
50 |
51 | /* dark mode overrides */
52 | @media (prefers-color-scheme: dark) {
53 |
54 | body.darkmode a:link, body.darkmode a:visited { color: @ini_link_dark; }
55 | body.darkmode a.wikilink1:link, body.darkmode a.wikilink1:visited { color: @ini_existing_dark; }
56 | body.darkmode a.wikilink2:link, body.darkmode a.wikilink2:visited { color: @ini_missing_dark; }
57 | body.darkmode #ftInclude a.wikilink1:link, body.darkmode #ftInclude a.wikilink1:visited { color: @ini_link_dark; }
58 | body.darkmode a[href^='#'].wikilink1:link, body.darkmode a[href^='#'].wikilink1:visited { color: @ini_inpage_dark; }
59 | }
60 |
--------------------------------------------------------------------------------
/tpl_footer.php:
--------------------------------------------------------------------------------
1 |
27 |
--------------------------------------------------------------------------------
/lang/en/settings.php:
--------------------------------------------------------------------------------
1 |
6 | */
7 |
8 | $lang['darkmode'] = 'Allow a client-side dark mode';
9 | $lang['darkmode_o_allow'] = 'Allow';
10 | $lang['darkmode_o_disable'] = 'Disable';
11 |
12 | $lang['navtrail'] = 'Show current page in hierarchical breadcrumbs';
13 | $lang['navtrail_o_none'] = 'Don’t show';
14 | $lang['navtrail_o_text'] = 'Show as text';
15 | $lang['navtrail_o_link'] = 'Show as link';
16 |
17 | $lang['cookiepos'] = 'Display the Cookie message banner';
18 | $lang['cookiepos_o_hide'] = 'Don’t show';
19 | $lang['cookiepos_o_top'] = 'Show on top of page';
20 | $lang['cookiepos_o_bottom'] = 'Show on bottom of page';
21 |
22 | $lang['cookiemsg'] = 'The message to display on the Cookie banner (may contain HTML tags)';
23 | $lang['cookielink'] = 'Link to the “More information” page (internal or external)';
24 | $lang['homelink'] = 'Override the homepage link (empty for default behaviour)';
25 |
26 | $lang['printstyle'] = 'Print style variant';
27 | $lang['printstyle_o_basic'] = 'Basic';
28 | $lang['printstyle_o_compact'] = 'Compact';
29 |
30 | $lang['langmenu'] = 'Display the Languages menu (requires the Translation plugin)';
31 | $lang['langmenu_o_tb'] = 'As a menu in toolbar';
32 | $lang['langmenu_o_sb'] = 'As a list in sidebar';
33 |
34 | $lang['langfilter'] = 'Filter which translations to show in the menu or list';
35 | $lang['langfilter_o_all'] = 'List all languages';
36 | $lang['langfilter_o_existing'] = 'List only if translation exists';
37 |
--------------------------------------------------------------------------------
/lang/fi/settings.php:
--------------------------------------------------------------------------------
1 |
6 | */
7 |
8 | $lang['darkmode'] = 'Salli asiakaspuolen pimeä tila';
9 | $lang['darkmode_o_allow'] = 'Salli';
10 | $lang['darkmode_o_disable'] = 'Poista käytöstä';
11 |
12 | $lang['navtrail'] = 'Näytä nykyinen sivu hierarkkisessa leivänmurussa';
13 | $lang['navtrail_o_none'] = 'Älä näytä';
14 | $lang['navtrail_o_text'] = 'Näytä tekstinä';
15 | $lang['navtrail_o_link'] = 'Näytä linkkinä';
16 |
17 | $lang['cookiepos'] = 'Näytä evästeviestin banneri';
18 | $lang['cookiepos_o_hide'] = 'Älä näytä';
19 | $lang['cookiepos_o_top'] = 'Näytä sivun yläreunassa';
20 | $lang['cookiepos_o_bottom'] = 'Näytä sivun alareunassa';
21 |
22 | $lang['cookiemsg'] = 'Evästeiden bannerissa näytettävä viesti (voi sisältää HTML-tunnisteita)';
23 | $lang['cookielink'] = 'Linkki ”Lisätietoja”-sivulle (sisäinen tai ulkoinen)';
24 | $lang['homelink'] = 'Linkki ylemmän tason kotisivulle (tyhjä oletusarvoisesti)';
25 |
26 | $lang['printstyle'] = 'Painotyylin vaihtelu';
27 | $lang['printstyle_o_basic'] = 'perus';
28 | $lang['printstyle_o_compact'] = 'kompakti';
29 |
30 | $lang['langmenu'] = 'Näytä lielet-valikko (Vaatii Translation pluginin)';
31 | $lang['langmenu_o_tb'] = 'Valikkona työkalupalkissa';
32 | $lang['langmenu_o_sb'] = 'Luettelona sivupalkissa';
33 |
34 | $lang['langfilter'] = 'Valitse, mitkä käännökset näytetään valikossa tai luettelossa.';
35 | $lang['langfilter_o_all'] = 'Näytä kaikki kielet';
36 | $lang['langfilter_o_existing'] = 'Luettele vain, jos käännös on olemassa';
37 |
--------------------------------------------------------------------------------
/css/_cookies.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the cookies popup
3 | */
4 |
5 | #cookiebanner {
6 | position: fixed;
7 | left: 0;
8 | width: 100%;
9 | color: @ini_text;
10 | background-color: @ini_background_alt;
11 | z-index: 1000;
12 | padding: 10px;
13 | box-sizing: border-box;
14 | box-shadow: 0px 0px 10px #666;
15 | border-top: @ini_border solid 1px;
16 | }
17 |
18 | #cookiebanner.cb_top { top: 0; }
19 |
20 | #cookiebanner.cb_bottom { bottom: 0; }
21 |
22 | #cookiebanner p {
23 | clear: both;
24 | margin: 0 auto;
25 | max-width: 910pt;
26 | }
27 |
28 | #cookiebanner .cb_info {
29 | margin-bottom: 6pt;
30 | }
31 | #cookiebanner .cb_icon {
32 | float: left;
33 | width: 64px;
34 | height: 64px;
35 | margin: 8px 16px 8px 2px;
36 | }
37 | #cookiebanner .cb_icon svg {
38 | width: 100%;
39 | height: 100%;
40 | }
41 | #cookiebanner .cb_action {
42 | margin-top: 6pt;
43 | display: grid;
44 | grid-template-columns: 1fr 1fr;
45 | grid-column-gap: 8pt;
46 | column-gap: 8pt;
47 | justify-items: center;
48 | }
49 | #cookiebanner .cb_action > * {
50 | font-size: 12pt;
51 | }
52 |
53 | #cookiebanner .cb_action button {
54 | background-color: rgba(0,0,0,0.1);
55 | background-image: none;
56 | border: @ini_border solid 2pt;
57 | color: @ini_text;
58 | padding: .25em .5em;
59 | cursor: pointer;
60 | }
61 |
62 | /* dark mode overrides */
63 | @media (prefers-color-scheme: dark) {
64 | body.darkmode #cookiebanner {
65 | color: @ini_text_dark;
66 | background-color: @ini_background_dark;
67 | box-shadow: 0 0 10px @ini_background_site_dark;
68 | border-top-color: @ini_border_dark;
69 | }
70 | body.darkmode #cookiebanner .cb_action button {
71 | background-color: rgba(0,0,0,0.25);
72 | border-color: @ini_border_dark;
73 | color: @ini_text_dark;
74 | }
75 | }
--------------------------------------------------------------------------------
/lang/es/settings.php:
--------------------------------------------------------------------------------
1 | (machine-translated with DeepL.com - please feel free to improve!)
6 | */
7 |
8 | $lang['darkmode'] = 'Permitir un modo oscuro del lado del cliente';
9 | $lang['darkmode_o_allow'] = 'Permitir';
10 | $lang['darkmode_o_disable'] = 'Desactivar';
11 |
12 | $lang['navtrail'] = 'Mostrar la página actual en las migas de pan jerárquicas';
13 | $lang['navtrail_o_none'] = 'No mostrar';
14 | $lang['navtrail_o_text'] = 'Mostrar como texto';
15 | $lang['navtrail_o_link'] = 'Mostrar como enlace';
16 |
17 | $lang['cookiepos'] = 'Mostrar el mensaje de Cookie';
18 | $lang['cookiepos_o_hide'] = 'No mostrar';
19 | $lang['cookiepos_o_top'] = 'Mostrar en la parte superior de la página';
20 | $lang['cookiepos_o_bottom'] = 'Mostrar en la parte inferior de la página';
21 |
22 | $lang['cookiemsg'] = 'El mensaje a mostrar en el banner de cookies (puede contener HTML)';
23 | $lang['cookielink'] = 'Enlace a la página "Más información" (interna o externa)';
24 | $lang['homelink'] = 'Sustituir el enlace de la página de inicio (vacío para el comportamiento por defecto)';
25 |
26 | $lang['printstyle'] = 'Variante de estilo de impresión';
27 | $lang['printstyle_o_basic'] = 'Clásico';
28 | $lang['printstyle_o_compact'] = 'Compacto';
29 |
30 | $lang['langmenu'] = 'Mostrar el menú de lenguas (requiere el plugin de traducción)';
31 | $lang['langmenu_o_tb'] = 'Como menú en la barra de herramientas';
32 | $lang['langmenu_o_sb'] = 'Como lista en la barra lateral';
33 |
34 | $lang['langfilter'] = 'Filtrar qué traducciones mostrar en el menú o la lista';
35 | $lang['langfilter_o_all'] = 'Listar todos los idiomas';
36 | $lang['langfilter_o_existing'] = 'Mostrar sólo si existe traducción';
37 |
--------------------------------------------------------------------------------
/lang/fr/settings.php:
--------------------------------------------------------------------------------
1 | (machine-translated with DeepL.com)
6 | */
7 |
8 | $lang['darkmode'] = 'Autoriser un mode sombre côté client';
9 | $lang['darkmode_o_allow'] = 'Autoriser';
10 | $lang['darkmode_o_disable'] = 'Désactiver';
11 |
12 | $lang['navtrail'] = 'Afficher la page actuelle dans le fil d’Ariane hiérarchique';
13 | $lang['navtrail_o_none'] = 'Ne pas afficher';
14 | $lang['navtrail_o_text'] = 'Afficher en tant que texte';
15 | $lang['navtrail_o_link'] = 'Afficher en tant que lien';
16 |
17 | $lang['cookiepos'] = 'Afficher la bannière du message sur les cookies';
18 | $lang['cookiepos_o_hide'] = 'Ne pas afficher';
19 | $lang['cookiepos_o_top'] = 'Afficher en haut de la page';
20 | $lang['cookiepos_o_bottom'] = 'Afficher en bas de la page';
21 |
22 | $lang['cookiemsg'] = 'Le message à afficher dans le bandeau de messages sur les cookies (peut contenir du HTML)';
23 | $lang['cookielink'] = 'Lien vers la page « Plus d’informations » (interne ou externe)';
24 | $lang['homelink'] = 'Remplacer le lien de la page d’accueil (vide pour le comportement par défaut)';
25 |
26 | $lang['printstyle'] = 'Variante du style imprimé';
27 | $lang['printstyle_o_basic'] = 'basique';
28 | $lang['printstyle_o_compact'] = 'compact';
29 |
30 | $lang['langmenu'] = 'Afficher le menu Langues (requiert le plugin Translations)';
31 | $lang['langmenu_o_tb'] = 'En tant que menu dans la barre d’outils';
32 | $lang['langmenu_o_sb'] = 'En tant que liste dans la barre latérale';
33 |
34 | $lang['langfilter'] = 'Sélectionner les traductions à afficher dans le menu ou la liste';
35 | $lang['langfilter_o_all'] = 'Afficher toutes les langues';
36 | $lang['langfilter_o_existing'] = 'Afficher uniquement si la traduction existe';
37 |
--------------------------------------------------------------------------------
/css/_toc.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the TOC (table of contents), the
3 | * sitemap (?do=index) and backlinks (?do=backlink).
4 | */
5 |
6 | /* toc
7 | ********************************************************************/
8 |
9 | /* toc container */
10 | #dw__toc {
11 | float: right;
12 | margin: 0 0 1.4em 1.4em;
13 | width: 12em;
14 | background-color: @ini_background_alt;
15 | color: inherit;
16 | }
17 | [dir=rtl] #dw__toc {
18 | float: left;
19 | margin: 0 1.4em 1.4em 0;
20 | }
21 |
22 | /*____________ toc header ____________*/
23 |
24 | .dokuwiki h3.toggle {
25 | padding: .2em .5em;
26 | font-weight: bold;
27 | }
28 |
29 | .dokuwiki .toggle strong {
30 | float: right;
31 | margin: 0 .2em;
32 | }
33 | [dir=rtl] .dokuwiki .toggle strong {
34 | float: left;
35 | }
36 |
37 | /*____________ toc list ____________*/
38 |
39 | #dw__toc > div {
40 | padding: .2em .5em;
41 | }
42 | #dw__toc ul {
43 | padding: 0;
44 | margin: 0;
45 | }
46 | #dw__toc ul li {
47 | list-style: none;
48 | padding: 0;
49 | margin: 0;
50 | line-height: 1.1;
51 | }
52 | #dw__toc ul li div.li {
53 | padding: .15em 0;
54 | }
55 | #dw__toc ul ul {
56 | padding-left: 1em;
57 | }
58 | [dir=rtl] #dw__toc ul ul {
59 | padding-left: 0;
60 | padding-right: 1em;
61 | }
62 | #dw__toc ul ul li {
63 | }
64 | #dw__toc ul li a {
65 | }
66 |
67 | /* in case of toc list jumping one level
68 | (e.g. if heading level 3 follows directly after heading level 1) */
69 | #dw__toc ul li.clear {
70 | }
71 |
72 |
73 | /* sitemap (and backlinks)
74 | ********************************************************************/
75 |
76 | .dokuwiki ul.idx {
77 | padding-left: 0;
78 | }
79 | [dir=rtl] .dokuwiki ul.idx {
80 | padding-right: 0;
81 | }
82 | .dokuwiki ul.idx li {
83 | list-style-image: url(../../images/bullet.png);
84 | }
85 | .dokuwiki ul.idx li.open {
86 | list-style-image: url(../../images/open.png);
87 | }
88 | .dokuwiki ul.idx li.closed {
89 | list-style-image: url(../../images/closed.png);
90 | }
91 | [dir=rtl] .dokuwiki ul.idx li.closed {
92 | list-style-image: url(../../images/closed-rtl.png);
93 | }
94 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DokuWiki Template Ad-Hominem
2 |
3 | A clean and lightweight HTML5 template for [DokuWiki](https://github.com/dokuwiki/dokuwiki).
4 |
5 | ## Features
6 |
7 |
8 | * Prominent search field with preloading search results.
9 | * Collapsible sidebar and table of contents.
10 | * Link preview: title and first paragraph of the linked page is shown in the title text.
11 | * This also works for Wikipedia links!
12 | * Looks good in print.
13 | * The template implements [WCAG 2.1](https://www.w3.org/TR/WCAG21/) Level AA (however, the DokuWiki content renderer has some limitations)
14 | * [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation)-compliant: does not load external resources like font files or others (note that the [jquerycdn](https://www.dokuwiki.org/config:jquerycdn) setting needs to be set to “local delivery only” for GDPR-compliance)
15 | * Neatly formatted and standards-compliant code (where possible – again, the DokuWiki content renderer is the limiting factor)
16 | * Makes better use of larger screens (target is half of a 4K screen), but because the template is fully responsive, smaller is no problem (down to ca. 300px wide)
17 | * improvements to edit view, media manager, etc.
18 | * User-side controlled “dark mode”, i.e. follows the client side dark mode settings.
19 | * Improvements to the default functionality, e.g. a resizeable internal link selection widget, etc.
20 | * Configuration to override the "home"-link (see below)
21 | * Integrated "Cookies" banner functionality
22 | * Integrated languages menu (works with the [Translate](https://www.dokuwiki.org/plugin:translate) plugin)
23 | * Compatible with PHP8+ as well as DokuWiki “Kaos” and “Librarian”.
24 | * Support for global RTL (right-to-left) site direction.
25 |
26 | ## Localizations
27 |
28 | As the template uses only the original DokuWiki template strings, it should work with any of the languages that DokuWiki comes in.
29 |
30 | ## More information
31 |
32 | Please see the [Plugin page on the DokuWiki site](https://www.dokuwiki.org/template:ad-hominem) for more information:
33 |
--------------------------------------------------------------------------------
/css/_tabs.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides the styles for general tabs.
3 | */
4 |
5 | .dokuwiki .tabs > ul,
6 | .dokuwiki ul.tabs {
7 | padding: 0;
8 | margin: 0;
9 | overflow: hidden;
10 | position: relative;
11 | }
12 | /* border underneath */
13 | .dokuwiki .tabs > ul:after,
14 | .dokuwiki ul.tabs:after {
15 | position: absolute;
16 | content: "";
17 | width: 100%;
18 | bottom: 0;
19 | left: 0;
20 | border-bottom: 1px solid @ini_border;
21 | }
22 |
23 | .dokuwiki .tabs > ul li,
24 | .dokuwiki ul.tabs li {
25 | float: left;
26 | padding: 0;
27 | margin: 0;
28 | list-style: none;
29 | }
30 | [dir=rtl] .dokuwiki .tabs > ul li,
31 | [dir=rtl] .dokuwiki ul.tabs li {
32 | float: right;
33 | }
34 |
35 | .dokuwiki .tabs > ul li a,
36 | .dokuwiki ul.tabs li strong,
37 | .dokuwiki ul.tabs li a {
38 | display: inline-block;
39 | padding: .3em .8em;
40 | margin: 1.5pt 0 0 .3em;
41 | background-color: @ini_background_neu;
42 | color: @ini_text;
43 | border: 1px solid @ini_border;
44 | border-radius: .5em .5em 0 0;
45 | position: relative;
46 | z-index: 0;
47 | }
48 | [dir=rtl] .dokuwiki .tabs > ul li a,
49 | [dir=rtl] .dokuwiki ul.tabs li strong,
50 | [dir=rtl] .dokuwiki ul.tabs li a {
51 | margin: 0 .3em 0 0;
52 | }
53 |
54 | .dokuwiki ul.tabs li strong {
55 | font-weight: normal;
56 | }
57 |
58 | .dokuwiki ul.tabs li a:link,
59 | .dokuwiki ul.tabs li a:visited {
60 | }
61 | .dokuwiki .tabs > ul li a:hover,
62 | .dokuwiki .tabs > ul li a:active,
63 | .dokuwiki .tabs > ul li a:focus,
64 | .dokuwiki .tabs > ul li .curid a,
65 | .dokuwiki .tabs > ul .active a,
66 | .dokuwiki ul.tabs li a:hover,
67 | .dokuwiki ul.tabs li a:active,
68 | .dokuwiki ul.tabs li a:focus,
69 | .dokuwiki ul.tabs li.active a,
70 | .dokuwiki ul.tabs li strong {
71 | background-color: @ini_background_alt;
72 | color: @ini_text;
73 | text-decoration: none;
74 | font-weight: normal;
75 | }
76 |
77 | .dokuwiki .tabs > ul li .curid a,
78 | .dokuwiki .tabs > ul li .active a,
79 | .dokuwiki .tabs > ul li .active a,
80 | .dokuwiki ul.tabs li.active a,
81 | .dokuwiki ul.tabs li strong {
82 | z-index: 2;
83 | border-bottom-color: @ini_background_alt;
84 | }
85 |
--------------------------------------------------------------------------------
/css/plugins.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This file contains style overrides for selected plugins
3 | * @author Sascha Leib
4 | */
5 |
6 | /* upgrade plugin */
7 | #plugin__upgrade_meter {
8 | & {
9 | height: 26px;
10 | }
11 | ol li {
12 | .stage {
13 | color: #444;
14 | }
15 | .step {
16 | color: #444;
17 | }
18 | &.active {
19 | height: 26px;
20 | }
21 | }
22 | }
23 | #plugin__upgrade_form {
24 | button {
25 | padding: .25em .5em;
26 | cursor: pointer;
27 | }
28 | }
29 |
30 | /* redirect plugin (dark mode override): */
31 |
32 | @media (prefers-color-scheme: dark) {
33 |
34 | body.darkmode div.noteredirect {
35 | background-color: #2A4456;
36 | }
37 | }
38 |
39 | /* move plugin: */
40 |
41 | main #plugin_move__progress #plugin_move__preview span {
42 | color: @ini_link;
43 | }
44 |
45 | @media (prefers-color-scheme: dark) {
46 |
47 | body.darkmode #plugin_move__progress #plugin_move__preview span {
48 | color: @ini_link_dark;
49 | }
50 | body.darkmode #plugin_move__tree ul.tree_list li div:hover {
51 | background-color: @ini_background_alt_dark;
52 | }
53 |
54 | body.darkmode .ui-widget-content {
55 | border-color: @ini_border_dark;
56 | background-color: @ini_background_site_dark;
57 | color: @ini_text_alt_dark;
58 | }
59 |
60 | body.darkmode .ui-widget.ui-widget-content {
61 | border-color: @ini_border_dark;
62 | }
63 | body.darkmode .ui-widget-header {
64 | color: @ini_text_dark;
65 | background: @ini_background_alt_dark none 50% 50% repeat-x;
66 | }
67 | }
68 |
69 | /* searchIndex Manager plugin (dark mode overrides): */
70 |
71 | @media (prefers-color-scheme: dark) {
72 | body.darkmode #plugin__searchindex_msg {
73 | background-color: @ini_background_site_dark;
74 | color: @ini_text_alt_dark;
75 | border-color: @ini_border_dark;
76 | }
77 | }
78 |
79 | /* Translations plugin: */
80 |
81 | table#outdated_translations {
82 | td.missing { background-color: #fdd; }
83 | td.current { background-color: #dfd; }
84 | }
85 |
86 | @media (prefers-color-scheme: dark) {
87 | body.darkmode table#outdated_translations {
88 | td.missing { background-color: #300; }
89 | td.current { background-color: #030; }
90 | }
91 | }
--------------------------------------------------------------------------------
/css/_recent.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the recent changes (?do=recent) and
3 | * old revisions (?do=revisions).
4 | */
5 |
6 | /*____________ list of revisions / recent changes ____________*/
7 |
8 | /* added dark mode overrides -- SL
9 |
10 | /* select type of revisions (media/pages) */
11 | .dokuwiki .changeType {
12 | margin-bottom: .5em;
13 | }
14 |
15 | .dokuwiki form.changes ul li {
16 | list-style: none;
17 | margin-left: 0;
18 | }
19 | [dir=rtl] .dokuwiki form.changes ul li {
20 | margin-right: 0;
21 | }
22 | .dokuwiki form.changes ul li span,
23 | .dokuwiki form.changes ul li a {
24 | vertical-align: middle;
25 | }
26 | .dokuwiki form.changes ul li span.user a {
27 | vertical-align: bottom;
28 | }
29 | .dokuwiki form.changes ul li.minor {
30 | opacity: .7;
31 | }
32 |
33 | .dokuwiki form.changes li span.date {
34 | }
35 | .dokuwiki form.changes li a.diff_link {
36 | vertical-align: baseline;
37 | }
38 | .dokuwiki form.changes li a.revisions_link {
39 | vertical-align: baseline;
40 | }
41 | .dokuwiki form.changes li a.wikilink1,
42 | .dokuwiki form.changes li a.wikilink2 {
43 | }
44 | .dokuwiki form.changes li span.sum {
45 | font-weight: bold;
46 | }
47 | .dokuwiki form.changes li span.user {
48 | }
49 |
50 | /*____________ size differences ____________*/
51 |
52 | .dokuwiki form.changes li .sizechange {
53 | font-size: 80%;
54 | border-radius: .2em;
55 | padding: .1em .2em;
56 | /* cannot use non-guaranteed style.ini colour placeholders, dark templates need to overwrite */
57 | background-color: #ddd;
58 | }
59 |
60 | .dokuwiki form.changes li .sizechange.positive {
61 | background-color: #cfc;;
62 | }
63 | .dokuwiki form.changes li .sizechange.negative {
64 | background-color: #fdd;
65 | }
66 |
67 | /*____________ page navigator ____________*/
68 |
69 | .dokuwiki div.pagenav {
70 | text-align: center;
71 | margin: 1.4em 0;
72 | }
73 | .dokuwiki div.pagenav-prev,
74 | .dokuwiki div.pagenav-next {
75 | display: inline;
76 | margin: 0 .5em;
77 | }
78 |
79 | /* dark mode overrides */
80 | @media (prefers-color-scheme: dark) {
81 | .dokuwiki form.changes li .sizechange {
82 | background-color: #0C0C0D;
83 | color: #D0D5DA;
84 | }
85 | .dokuwiki form.changes li .sizechange.positive {
86 | background-color: #0A3A1E;
87 | }
88 | .dokuwiki form.changes li .sizechange.negative {
89 | background-color: #49090F;
90 | }
91 | }
--------------------------------------------------------------------------------
/rest/pageinfo.php:
--------------------------------------------------------------------------------
1 |
7 | */
8 |
9 | header('Content-Type: application/json');
10 | header('Access-Control-Allow-Origin: *');
11 |
12 | // Turn off all error reporting
13 | //error_reporting(0);
14 |
15 | /* connect to DokuWiki: */
16 | if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching)
17 | if (!defined('DOKU_INC')) { define('DOKU_INC', __DIR__ . '/../../../../'); }
18 | require_once(DOKU_INC . 'inc/init.php');
19 |
20 | /* get the output style (can be 'preview' or 'all') */
21 | $style = ( array_key_exists('v', $_GET) ? strtolower($_GET['v']) : 'all' );
22 | if ($style !== 'preview') { $style = 'all'; }
23 |
24 | /* initialize the storage: */
25 | $result = [
26 | 'type' => 'error'
27 | ];
28 |
29 | /* find the page ID */
30 | $id = $_GET['id'];
31 |
32 | if ($id !== null) {
33 |
34 | /* get all metadata; */
35 | $meta = p_get_metadata($id);
36 |
37 | if (array_key_exists('title', $meta) && $meta['title'] !== null) {
38 |
39 | if ($style == 'preview') {
40 | $result['type'] = 'preview';
41 | } else {
42 | $result['type'] = 'standard';
43 | $result['pageid'] = $id;
44 | $result['lang'] = $conf['lang'];
45 | }
46 |
47 | $result['title'] = $meta['title'];
48 |
49 | /* The page URL(s) */
50 | $url = wl($id);
51 |
52 | if ($style == 'preview') {
53 | $result['content_urls'] = [
54 | 'desktop' => [
55 | 'page' => wl($id)
56 | ]
57 | ];
58 | } else {
59 | $url = $conf['baseurl'] . wl($id);
60 | $set = [
61 | 'page' => $url,
62 | 'revisions' => $url . '?do=revisions',
63 | 'edit' => $url . '?do=edit'
64 | ];
65 | $result['content_urls'] = [
66 | 'desktop' => $set,
67 | 'mobile' => $set
68 | ];
69 | }
70 |
71 | /* extract the first paragraph:*/
72 | $parts = explode("\n", $meta['description']['abstract']);
73 | $result['extract'] = ( count($parts) > 2 ? $parts[2] : '' );
74 | $result['extract_html'] = ''. ( count($parts) > 2 ? $parts[2] : '' ) .'
';
75 |
76 | } else {
77 | /* page does not exist */
78 | $result['extract'] = 'Error: page does not exist.';
79 | $result['extract_html'] = '' . $result['extract'] . '
';
80 | }
81 | }
82 |
83 | /* output the result: */
84 | echo json_encode($result);
--------------------------------------------------------------------------------
/css/_footnotes.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for footnotes.
3 | */
4 |
5 | /* pre-defined custom footnote styles */
6 |
7 | @counter-style: ~"@counter-style";
8 | @{counter-style} super-decimal {
9 | system: numeric;
10 | symbols: '\2070' '\B9' '\B2' '\B3' '\2074' '\2075' '\2076' '\2077' '\2078' '\2079';
11 | /* symbols: '⁰' '¹' '²' '³' '⁴' '⁵' '⁶' '⁷' '⁸' '⁹'; */
12 | }
13 |
14 | /* create a custom counter for the footnotes: */
15 | body, div.footnotes {
16 | counter-reset: footnotes;
17 | }
18 |
19 | /*____________ footnotes inside the text ____________*/
20 |
21 | /* link to footnote inside the text */
22 |
23 | /* .dokuwiki sup, .dokuwiki sub {ignore subscript and superscript tags!
24 | vertical-align: baseline;
25 | font-size: inherit;
26 | } */
27 | .dokuwiki sup a.fn_top {
28 |
29 | & {
30 | vertical-align: baseline;
31 | font-size: inherit;
32 | padding: 0 .5pt;
33 | font-size: 0;text-decoration: none;
34 | }
35 | &::after {
36 | content: counter(footnotes, super-decimal);
37 | counter-increment: footnotes;
38 | font-size: 1.1667rem;
39 | font-weight: bold;
40 | vertical-align: -.2em;
41 | }
42 | }
43 |
44 | /* JSpopup */
45 | div.insitu-footnote {
46 | max-width: 40%;
47 | min-width: 5em;
48 | }
49 |
50 | /*____________ footnotes at the bottom of the page ____________*/
51 |
52 | .dokuwiki div.footnotes {
53 | & {
54 | border-top: 1px solid @ini_border;
55 | padding: .5em 0 0 0;
56 | margin: 1em 0 0 0;
57 | clear: both;
58 | }
59 | > .fn {
60 | & {
61 | margin: 0 0 0 2.5rem !important;
62 | white-space-collapse: discard;
63 | text-indent: ~"calc(-2.5rem - .3em)"; /* compensate for the whitespace character! */
64 | }
65 | sup { /* ignore superscript tags! */
66 | vertical-align: baseline;
67 | font-size: 1em;
68 | }
69 | .fn_bot {
70 | & {
71 | display: inline-block;
72 | text-align: right;
73 | margin: 0 .5rem 0 0;
74 | width: 2rem; height: .972rem;
75 | font-variant-numeric: oldstyle-nums;
76 | font-size: 0;
77 | }
78 | &::after {
79 | content: counter(footnotes, decimal) '.';
80 | counter-increment: footnotes;
81 | font-variant-numeric: oldstyle-nums;
82 | display: inline-block;
83 | font-size: .972rem;
84 | width: 2rem;
85 | }
86 | }
87 | & > .content {
88 | display: inline;
89 | }
90 | }
91 | }
92 |
93 | [dir=rtl] .dokuwiki div.footnotes > .fn {
94 | margin: 0 2.5em 0 0;
95 | }
96 | [dir=rtl] .dokuwiki div.footnotes > .fn .fn_bot {
97 | text-align: left;
98 | margin: 0 0 0 .5em;
99 | }
--------------------------------------------------------------------------------
/css/geshi.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This file overrides syntax highlighting colours
3 | *
4 | * @author Sascha Leib
5 | **/
6 |
7 | main .code {
8 | .co0 { color: #545454 }
9 | .co4 { color: #AD0000 }
10 | .es5 { color: #005C8A }
11 | .es6 { color: #006120 }
12 | .kw2 { color: #000000 } /* no change */
13 | .kw5 { color: #006600 }
14 | .kw6 { color: #A8005A }
15 | .me0 { color: #004000 } /* no change */
16 | .nu0 { color: #8A2E8A }
17 | .re0 { color: #0000ff }
18 | .re3 { color: #AD0000 }
19 | .re4 { color: #006161 }
20 | .re5 { color: #660033 } /* no change */
21 | .re7 { color: #991111 } /* no change */
22 | .re8 { color: #005200 }
23 | .sc-2 { color: #404040 } /* no change */
24 | .sy3 { color: #000040 } /* no change */
25 | .br0, .sy0 { color: #216321; }
26 | .co1, .coMULTI, .sc-1 { color: #545454 }
27 | .co2, .sy1 { color: #216321 }
28 | .co3, .sy4 { color: #006161 }
29 | .es0, .es1, .esHARD { color: #000099 } /* no change */
30 | .es2, .es3, .es4 { color: #660099 } /* no change */
31 | .kw1, .kw8 { color: #855c0d }
32 | .kw10, .kw11, .kw12, .kw9 { color: #003399 }
33 | .kw13, .kw14, .kw15, .kw16, .me1, .me2 { color: #006600 } /* no change */
34 | .kw3, .kw7, .sy2 { color: #000066 } /* no change */
35 | .kw4, .re2 { color: #993333 } /* no change */
36 | .re1, .st0, .st_h { color: #E60000 }
37 | .ln-xtra { background-color: @ini_highlight }
38 | }
39 |
40 | /* dark mode overrides */
41 | @media (prefers-color-scheme: dark) {
42 |
43 | body.darkmode main .code {
44 |
45 | .co0 { color: #A6A6A6 }
46 | .co4 { color: #FF8080 }
47 | .es5 { color: #0FAFFF }
48 | .es6 { color: #00C241 }
49 | .kw2 { color: #EEEEEE }
50 | .kw5 { color: #52FF52 }
51 | .kw6 { color: #FF99CC }
52 | .me0 { color: #00C200 }
53 | .nu0 { color: #D98CD9 }
54 | .re0 { color: #9E9EFF }
55 | .re3 { color: #FF8080 }
56 | .re4 { color: #00CCCC }
57 | .re5 { color: #FF7ABD }
58 | .re7 { color: #F28888 }
59 | .re8 { color: #38FF38 }
60 | .sc-2 { color: #A6A6A6 }
61 | .sy3 { color: #9E9EFF }
62 | .br0, .sy0 { color: #66cc66 } /* no change */
63 | .co1, .coMULTI, .sc-1 { color: #DDDDDD }
64 | .co2, .sy1 { color: #94DB94 }
65 | .co3, .sy4 { color: #00EBEB }
66 | .es0, .es1, .esHARD { color: #A8A8FF }
67 | .es2, .es3, .es4 { color: #D685FF }
68 | .kw1, .kw8 { color: #D6D600 }
69 | .kw10, .kw11, .kw12, .kw9 { color: #B8CEFF }
70 | .kw13, .kw14, .kw15, .kw16, .me1, .me2 { color: #00FF00 }
71 | .kw3, .kw7, .sy2 { color: #CCCCFF }
72 | .kw4, .re2 { color: #ECC5C5 }
73 | .re1, .st0, .st_h { color: #FF8080 }
74 | .ln-xtra { background-color: @ini_highlight_dark }
75 | }
76 | }
--------------------------------------------------------------------------------
/css/_forms.css:
--------------------------------------------------------------------------------
1 | /* TODO: this file is not up to the best standards and will be fixed after an overhaul of the form code */
2 |
3 | /**
4 | * This file provides styles for forms in general and specifically
5 | * for ?do=
6 | * - login
7 | * - resendpwd
8 | * - register
9 | * - profile
10 | * - subscribe
11 | */
12 |
13 | /* ---------------- forms ------------------------ */
14 |
15 | .dokuwiki form {
16 | border: none;
17 | display: inline;
18 | }
19 |
20 | .dokuwiki label.block {
21 | display: block;
22 | text-align: right;
23 | font-weight: bold;
24 | }
25 | [dir=rtl] .dokuwiki label.block {
26 | text-align: left;
27 | }
28 |
29 | .dokuwiki label.simple {
30 | display: block;
31 | text-align: left;
32 | font-weight: normal;
33 | }
34 | [dir=rtl] .dokuwiki label.simple {
35 | text-align: right;
36 | }
37 |
38 | .dokuwiki label.block select,
39 | .dokuwiki label.block input.edit {
40 | width: 50%;
41 | }
42 |
43 | .dokuwiki label span {
44 | vertical-align: middle;
45 | }
46 |
47 | .dokuwiki fieldset {
48 | width: 400px;
49 | text-align: center;
50 | border: 1px solid @ini_border;
51 | padding: 0.5em;
52 | margin: auto;
53 | }
54 |
55 | .dokuwiki input[type="text"] {
56 | & {
57 | border: @ini_border solid 1px;
58 | border-radius: 1pt;
59 | padding: .25em;
60 | }
61 | &:focus {
62 | box-shadow: inset .125em .125em .25em fadeout(@ini_text, 60%);
63 | }
64 | }
65 | .dokuwiki input[type="checkbox"],
66 | .dokuwiki select {
67 | & {
68 | border: @ini_border solid 1px;
69 | border-radius: 1pt;
70 | padding: .25em;
71 | }
72 | &:hover, &:focus {
73 | box-shadow: .125em .125em .25em fadeout(@ini_text, 60%);
74 | }
75 | }
76 |
77 | .dokuwiki input.edit,
78 | .dokuwiki select.edit {
79 | vertical-align: middle;
80 | }
81 |
82 | .dokuwiki button {
83 | vertical-align: middle;
84 | }
85 | .dokuwiki input:focus,
86 | .dokuwiki select:focus,
87 | .dokuwiki button:focus {
88 | outline: @ini_focus_color solid 2px;
89 | }
90 | /**
91 | * Styles for auth forms
92 | */
93 | #dw__login fieldset,
94 | #dw__resendpwd fieldset,
95 | #dw__register fieldset {
96 | max-width: calc(100% - 1em);
97 | padding-bottom: 0.7em;
98 | }
99 |
100 | #dw__login fieldset label.block,
101 | #dw__resendpwd fieldset label.block,
102 | #dw__register fieldset label.block {
103 | width: 100%;
104 | max-width: 320px;
105 | }
106 | #dw__login label[for="remember__me"] {
107 | margin: 0 10% 1.4em;
108 | }
109 |
110 | #dw__profiledelete {
111 | display: block;
112 | margin-top: 2.8em;
113 | }
114 |
115 | /**
116 | * Styles for the subscription page
117 | */
118 |
119 | #subscribe__form {
120 | display: block;
121 | width: 400px;
122 | text-align: center;
123 | }
124 |
125 | #subscribe__form fieldset {
126 | text-align: left;
127 | margin: 0.5em 0;
128 | }
129 | [dir=rtl] #subscribe__form fieldset {
130 | text-align: right;
131 | }
132 |
133 | #subscribe__form label {
134 | display: block;
135 | margin: 0 0.5em 0.5em;
136 | }
137 |
--------------------------------------------------------------------------------
/css/pagetools.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides the styles for the page tools
3 | * (fly out navigation beside the page to edit, etc).
4 | *
5 | * @author Anika Henke
6 | * @author Andreas Gohr
7 | */
8 |
9 | #dokuwiki__site > .site {
10 | /* give space to the right so the tools won't disappear on smaller screens */
11 | /* it's 40px because the 30px wide icons will have 5px more spacing to the left and right */
12 | padding-right: 40px;
13 | /* give the same space to the left to balance it out */
14 | padding-left: 40px;
15 | }
16 |
17 | .dokuwiki div.page {
18 | height: 190px;
19 | min-height: 190px; /* 30 (= height of icons) x 6 (= maximum number of possible tools) + 2x5 */
20 | height: auto;
21 | }
22 |
23 | #dokuwiki__pagetools {
24 | @ico-width: 28px;
25 | @ico-margin: 8px;
26 | @item-width: (@ico-width + @ico-margin + @ico-margin);
27 | @item-height: (@ico-width + @ico-margin);
28 |
29 | position: absolute;
30 | right: (-1 * @item-width);
31 | /* on same vertical level as first headline, because .page has 2em padding */
32 | top: 2em;
33 | width: @item-width;
34 |
35 | div.tools {
36 | position: fixed;
37 | width: @item-width;
38 |
39 | ul {
40 | position: absolute;
41 | right: 0;
42 | text-align: right;
43 | margin: 0;
44 | padding: 0;
45 | /* add transparent border to prevent jumping when proper border is added on hover */
46 | border: 1px solid transparent;
47 | z-index: 10;
48 |
49 | li {
50 | padding: 0;
51 | margin: 0;
52 | list-style: none;
53 | font-size: 0.875em;
54 |
55 | a {
56 |
57 | display: block;
58 | /* add transparent border to prevent jumping when proper border is added on focus */
59 | border: 1px solid transparent;
60 | white-space: nowrap;
61 | line-height: @item-height;
62 | vertical-align: middle;
63 | height: @item-height;
64 |
65 | span {
66 | display: none; // hide label until hover
67 | margin: 0 @ico-margin;
68 | }
69 |
70 | svg {
71 | width: @ico-width;
72 | height: @ico-width;
73 | margin: 0 @ico-margin;
74 | display: inline-block;
75 | vertical-align: middle;
76 | fill: @ini_border;
77 | }
78 | }
79 |
80 | // on interaction show the full item
81 | a:active,
82 | a:focus,
83 | a:hover {
84 | background-color: @ini_background_alt;
85 |
86 | span {
87 | display: inline-block;
88 | }
89 |
90 | svg {
91 | fill: @ini_link;
92 | }
93 | }
94 | }
95 | }
96 | }
97 |
98 | [dir=rtl] & {
99 | right: auto;
100 | left: (-1 * @item-width);
101 |
102 | div.tools {
103 | ul {
104 | right: auto;
105 | left: 0;
106 | text-align: left;
107 | }
108 | }
109 | }
110 | }
111 |
112 | // on hover or focus show all items
113 | #dokuwiki__pagetools:hover, #dokuwiki__pagetools:focus-within {
114 | div.tools ul {
115 | background-color: @ini_background;
116 | border-color: @ini_border;
117 | border-radius: 2px;
118 | box-shadow: 2px 2px 2px @ini_text_alt;
119 |
120 | li a span {
121 | display: inline-block;
122 | }
123 | }
124 | }
125 |
--------------------------------------------------------------------------------
/lang/en/lang.php:
--------------------------------------------------------------------------------
1 |
7 | * @author F. Mueller-Donath
8 | * @author Sascha Leib
9 | */
10 | $lang['__background_site__'] = 'Farbe für den Seitenhintergrund (hinter dem Inhaltsbereich)';
11 | $lang['__link__'] = 'Allgemeine Linkfarbe';
12 | $lang['__existing__'] = 'Farbe für Links zu existierenden Seiten';
13 | $lang['__missing__'] = 'Farbe für Links zu nicht-existierenden Seiten';
14 | $lang['__inpage__'] = 'Farbe für Links innerhalb derselben Seite';
15 | $lang['__site_width__'] = 'Breite der ganzen Seite (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
16 | $lang['__sidebar_width__'] = 'Breite der Seitenleiste, falls vorhanden (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
17 |
18 | $lang['__toc_width__'] = 'Breite des Inhaltsverzeichnises (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
19 | $lang['__tablet_width__'] = 'Unter dieser Fensterbreite wechselt die Seite in den Tabletmodus';
20 | $lang['__phone_width__'] = 'Unter dieser Fensterbreite wechselt die Seite in den Handymodus';
21 | $lang['__theme_color__'] = 'Farbschema der Webapplikation';
22 | $lang['__focus_color__'] = 'Farbe des Fokusringes';
23 |
24 | $lang['__headlines__'] = 'Farbe der Überschriften';
25 | $lang['__blockquote__'] = 'Farbe der Markierung für Zitatblöcke';
26 | $lang['__separator__'] = 'Farbe von Linien';
27 |
28 | $lang['__default_fonts__'] = 'Schriftarten für Inhaltstext und Navigation';
29 | $lang['__default_font_size__'] = 'Standard-Schriftgröße';
30 |
31 | $lang['__alt_fonts__'] = 'Alternative Schriftarten (z.B. für Blockzitate)';
32 | $lang['__alt_font_size__'] = 'Basisgröße für alternative Schriftart (verwenden Sie rem oder % für beste Ergebnisse)';
33 | $lang['__headline_fonts__'] = 'Schriftarten für Überschriften';
34 | $lang['__mono_fonts__'] = 'Schriftarten mit fester Laufweite (z.B. für Code)';
35 | $lang['__math_fonts__'] = 'Mathematik-Schriftarten (z.B. für Formeln)';
36 | $lang['__print_default_fonts__'] = 'Standardschriftarten für Druck';
37 | $lang['__print_title_fonts__'] = 'Überschriften-Schriftarten für Druck';
38 | $lang['__print_title_color__'] = 'Überschriftenfarbe für Druck';
39 |
40 | $lang['__background_site_dark__'] = 'Seitenhintergrund (Nachtmodus)';
41 | $lang['__background_dark__'] = 'Hintergrund des Inhaltsbereichs (Nachtmodus)';
42 | $lang['__background_alt_dark__'] = 'Alternative Hintergrundfarbe (Nachtmodus)';
43 | $lang['__background_neu_dark__'] = 'Neutrale Hintergrundfarbe (Nachtmodus)';
44 | $lang['__headlines_dark__'] = 'Farbe der Überschriften (Nachtmodus)';
45 | $lang['__text_dark__'] = 'Textfarbe (Nachtmodus)';
46 | $lang['__text_alt_dark__'] = 'Alternative Textfarbe (Nachtmodus)';
47 | $lang['__text_neu_dark__'] = 'Neutrale Textfarbe (Nachtmodus)';
48 | $lang['__link_dark__'] = 'Farbe externe Links (Nachtmodus)';
49 | $lang['__existing_dark__'] = 'Farbe Links zu existierenden Artikeln (Nachtmodus)';
50 | $lang['__missing_dark__'] = 'Farbe Links zu fehlenden Artikeln (Nachtmodus)';
51 | $lang['__inpage_dark__'] = 'Farbe für Links innerhalb derselben Seite (Nachtmodus)';
52 | $lang['__border_dark__'] = 'Umrandungsfarbe (Nachtmodus)';
53 | $lang['__blockquote_dark__'] = 'Markierung von Zitatblöcken (Nachtmodus)';
54 | $lang['__highlight_dark__'] = 'Hervorhebungsfarbe (Nachtmodus)';
55 |
56 | $lang['cookie_consent'] = 'OK';
57 | $lang['cookie_linktext'] = 'Mehr Info';
58 |
59 | $lang['homepage'] = 'Startseite';
60 |
61 | $lang['languages'] = 'Verfügbare Sprachen';
62 |
--------------------------------------------------------------------------------
/lang/de/lang.php:
--------------------------------------------------------------------------------
1 |
7 | * @author Anika Henke
8 | * @author Sascha Leib
9 | */
10 | $lang['__background_site__'] = 'Farbe für den Seitenhintergrund (hinter dem Inhaltsbereich)';
11 | $lang['__link__'] = 'Allgemeine Linkfarbe';
12 | $lang['__existing__'] = 'Farbe für Links zu existierenden Seiten';
13 | $lang['__missing__'] = 'Farbe für Links zu nicht-existierenden Seiten';
14 | $lang['__inpage__'] = 'Farbe für Links innerhalb derselben Seite';
15 | $lang['__site_width__'] = 'Breite der ganzen Seite (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
16 | $lang['__sidebar_width__'] = 'Breite der Seitenleiste, falls vorhanden (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
17 |
18 | $lang['__toc_width__'] = 'Breite des Inhaltsverzeichnises (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
19 | $lang['__tablet_width__'] = 'Unter dieser Fensterbreite wechselt die Seite in den Tabletmodus';
20 | $lang['__phone_width__'] = 'Unter dieser Fensterbreite wechselt die Seite in den Handymodus';
21 | $lang['__theme_color__'] = 'Farbschema der Webapplikation';
22 | $lang['__focus_color__'] = 'Farbe des Fokusringes';
23 |
24 | $lang['__headlines__'] = 'Farbe der Überschriften';
25 | $lang['__blockquote__'] = 'Farbe der Markierung für Zitatblöcke';
26 | $lang['__separator__'] = 'Farbe von Linien';
27 |
28 | $lang['__default_fonts__'] = 'Schriftarten für Inhaltstext und Navigation';
29 | $lang['__default_font_size__'] = 'Standard-Schriftgröße';
30 |
31 | $lang['__alt_fonts__'] = 'Alternative Schriftarten (z.B. für Blockzitate)';
32 | $lang['__alt_font_size__'] = 'Basisgröße für alternative Schriftart (verwenden Sie rem oder % für beste Ergebnisse)';
33 | $lang['__headline_fonts__'] = 'Schriftarten für Überschriften';
34 | $lang['__mono_fonts__'] = 'Schriftarten mit fester Laufweite (z.B. für Code)';
35 | $lang['__math_fonts__'] = 'Mathematik-Schriftarten (z.B. für Formeln)';
36 | $lang['__print_default_fonts__'] = 'Standardschriftarten für Druck';
37 | $lang['__print_title_fonts__'] = 'Überschriften-Schriftarten für Druck';
38 | $lang['__print_title_color__'] = 'Überschriftenfarbe für Druck';
39 |
40 | $lang['__background_site_dark__'] = 'Seitenhintergrund (Nachtmodus)';
41 | $lang['__background_dark__'] = 'Hintergrund des Inhaltsbereichs (Nachtmodus)';
42 | $lang['__background_alt_dark__'] = 'Alternative Hintergrundfarbe (Nachtmodus)';
43 | $lang['__background_neu_dark__'] = 'Neutrale Hintergrundfarbe (Nachtmodus)';
44 | $lang['__headlines_dark__'] = 'Farbe der Überschriften (Nachtmodus)';
45 | $lang['__text_dark__'] = 'Textfarbe (Nachtmodus)';
46 | $lang['__text_alt_dark__'] = 'Alternative Textfarbe (Nachtmodus)';
47 | $lang['__text_neu_dark__'] = 'Neutrale Textfarbe (Nachtmodus)';
48 | $lang['__link_dark__'] = 'Farbe externe Links (Nachtmodus)';
49 | $lang['__existing_dark__'] = 'Farbe Links zu existierenden Artikeln (Nachtmodus)';
50 | $lang['__missing_dark__'] = 'Farbe Links zu fehlenden Artikeln (Nachtmodus)';
51 | $lang['__inpage_dark__'] = 'Farbe für Links innerhalb derselben Seite (Nachtmodus)';
52 | $lang['__border_dark__'] = 'Umrandungsfarbe (Nachtmodus)';
53 | $lang['__blockquote_dark__'] = 'Markierung von Zitatblöcken (Nachtmodus)';
54 | $lang['__highlight_dark__'] = 'Hervorhebungsfarbe (Nachtmodus)';
55 |
56 | $lang['cookie_consent'] = 'OK';
57 | $lang['cookie_linktext'] = 'Weitere Information';
58 |
59 | $lang['homepage'] = 'Startseite';
60 |
61 | $lang['languages'] = 'Verfügbare Sprachen';
62 |
--------------------------------------------------------------------------------
/lang/fr/lang.php:
--------------------------------------------------------------------------------
1 |
7 | * @author Nicolas Friedli
8 | * @author Sascha Leib (machine-translated with DeepL.com)
9 | */
10 | $lang['__background_site__'] = 'Couleur du fond (derrière la boîte de contenu)';
11 | $lang['__link__'] = 'Couleur générale des liens';
12 | $lang['__existing__'] = 'Couleur des liens pour les pages existantes';
13 | $lang['__missing__'] = 'Couleur des liens pour les pages inexistantes';
14 | $lang['__inpage__'] = 'Couleur pour les liens au sein de la même page';
15 | $lang['__site_width__'] = 'Largeur du site complet (dans une unité de longueur valide : %, px, em,...)';
16 | $lang['__sidebar_width__'] = 'Largeur de la barre latérale, si existante (dans une unité de longueur valide : %, px, em, …)';
17 | $lang['__tablet_width__'] = 'En dessous de cette largeur, le site passe en mode tablette.';
18 | $lang['__phone_width__'] = 'En dessous de cette largeur, le site passe en mode smartphone.';
19 | $lang['__theme_color__'] = 'Thème de couleur de l’application web';
20 |
21 | $lang['__toc_width__'] = 'La largeur du bloc Table des matières (peut être toute unité de longueur : %, px, em, …)';
22 | $lang['__focus_color__'] = 'Couleur du focus';
23 |
24 | $lang['__headlines__'] = 'Couleur des titres';
25 | $lang['__blockquote__'] = 'Couleur du marqueur de citation';
26 | $lang['__separator__'] = 'Couleur du séparateur de ligne';
27 |
28 | $lang['__default_fonts__'] = 'Liste des polices par défaut (utilisées pour le contenu et la navigation)';
29 | $lang['__default_font_size__'] = 'Taille de police par défaut';
30 |
31 | $lang['__alt_fonts__'] = 'Polices alternatives (utilisées, par exemple pour les blocs de citations)';
32 | $lang['__alt_font_size__'] = 'Taille de base de la police alternative (utilisez rem ou % pour de meilleurs résultats)';
33 | $lang['__headline_fonts__'] = 'Polices à utiliser pour les titres';
34 | $lang['__mono_fonts__'] = 'Polices mono-espacées (pour le code, par exemple)';
35 | $lang['__math_fonts__'] = 'Polices mathématiques (par exemple, pour les formules, etc.)';
36 | $lang['__print_default_fonts__'] = 'Polices par défaut pour l’impression';
37 | $lang['__print_title_fonts__'] = 'Polices de titre pour l’impression';
38 | $lang['__print_title_color__'] = 'Couleur du titre pour l’impression';
39 |
40 | $lang['__background_site_dark__'] = 'Fond de la fenêtre (mode sombre)';
41 | $lang['__background_dark__'] = 'Arrière-plan du contenu (mode sombre)';
42 | $lang['__background_alt_dark__'] = 'Couleur de l’arrière-plan alternatif (mode sombre)';
43 | $lang['__background_neu_dark__'] = 'Couleur de fond neutre (mode sombre)';
44 | $lang['__headlines_dark__'] = 'Couleur des titres (mode sombre)';
45 | $lang['__text_dark__'] = 'Couleur du texte (mode sombre)';
46 | $lang['__text_alt_dark__'] = 'Couleur alternative du texte (mode sombre)';
47 | $lang['__text_neu_dark__'] = 'Couleur de texte neutre (mode sombre)';
48 | $lang['__link_dark__'] = 'Couleur des liens externes (mode sombre)';
49 | $lang['__existing_dark__'] = 'Couleur du lien de l’article existant (mode sombre)';
50 | $lang['__missing_dark__'] = 'Couleur du lien vers l’article manquant (mode sombre)';
51 | $lang['__inpage_dark__'] = 'Couleur pour les liens au sein de la même page (mode sombre)';
52 | $lang['__border_dark__'] = 'Couleur des bordures (mode sombre)';
53 | $lang['__blockquote_dark__'] = 'Couleur du marqueur de citation (mode sombre)';
54 | $lang['__highlight_dark__'] = 'Couleur de surbrillance (mode sombre)';
55 |
56 | $lang['cookie_consent'] = 'OK';
57 | $lang['cookie_linktext'] = 'Plus d’informations';
58 |
59 | $lang['homepage'] = 'Page d’accueil';
60 |
61 | $lang['languages'] = 'Langues disponibles';
62 |
--------------------------------------------------------------------------------
/css/_sidebar.less:
--------------------------------------------------------------------------------
1 | /**
2 | * Styles for the sidebar/navigation bar
3 | */
4 |
5 | #sidebar {
6 | & {
7 | width: @ini_sidebar_width;
8 | max-width: @ini_sidebar_width;
9 | font-size: @ini_default_font_size * .86;
10 | flex-grow: 0;
11 | transition-duration: .25s;
12 | transition-timing-function: ease-in-out;
13 | }
14 | #sbNavigation {
15 | margin: 1em .25em 0 1em;
16 | }
17 | &.toggle.hide,
18 | &.toggle.alt {
19 | max-width: 1em;
20 | }
21 | p, ul, ol {
22 | padding-left: 1.5em;
23 | }
24 | ul {
25 | list-style: square outside;
26 | }
27 | ul ~ ul, ul ~ ol,
28 | ol ~ ul, ol ~ ol {
29 | margin-top: .5em;
30 | }
31 | ul li, ol li {
32 | color: @ini_text_alt;
33 | padding: .1em 0;
34 | }
35 | dl dt {
36 | font-weight: bold;
37 | }
38 | a:link, a:visited {
39 | color: @ini_link;
40 | }
41 | .home a::before {
42 | content: ' ';
43 | display: inline-block;
44 | width: 10pt;
45 | height: 1em;
46 | background: transparent url('images/home.svg') no-repeat no-repeat 0 4px;
47 | background-size: .8em;
48 | padding-right: 3pt;
49 | }
50 | .curid {
51 | font-weight: bold;
52 | }
53 | h2, h3, h4, h5 {
54 | color: @ini_headlines;
55 | margin: 0.25em 2pt;
56 | }
57 | & > button.tg_button {
58 | float: right;
59 | display: block;
60 | background-color: transparent;
61 | border: transparent none 0;
62 | margin-right: 2px;
63 | font-size: 1.5rem;
64 | }
65 | & > button:focus {
66 | outline: @ini_focus_color solid 2px;
67 | }
68 | & > button.tg_button span {
69 | display: none;
70 | }
71 | &.hide > button.tg_button,
72 | &.alt > button.tg_button {
73 | margin-left: 0;
74 | width: 11pt;
75 | }
76 | & > button.tg_button::after {
77 | content: '\2039';
78 | color: @ini_link;
79 | display: inline-block;
80 | width: .75em;
81 | height: 1.25em;
82 | text-align: center;
83 | }
84 | &.hide>button.tg_button span,
85 | &.alt>button.tg_button span {
86 | display: none;
87 | }
88 | &.hide>button.tg_button::after,
89 | &.alt>button.tg_button::after {
90 | content: '\203A';
91 | width: auto;
92 | }
93 |
94 | .tg_content {
95 | line-height: 1.5em;
96 | }
97 |
98 | hr {
99 | border: 0;
100 | height: 1pt;
101 | background: @ini_text_alt;
102 | background-image: linear-gradient(to right, @ini_background_alt, @ini_text_alt, @ini_background_alt);
103 | margin: .5em 1em .5em 0;
104 | }
105 |
106 | /* definition list elements: */
107 | dl {
108 | dt {
109 | margin: 0.25em 2pt;
110 | }
111 | dd {
112 | margin-left: .3em;
113 | }
114 | }
115 | }
116 |
117 | /* dark mode overrides */
118 | @media (prefers-color-scheme: dark) {
119 |
120 | body.darkmode {
121 | #sidebar {
122 |
123 | ul li, ol li {
124 | color: @ini_text_alt_dark;
125 | }
126 | a:link, a:visited,
127 | & > button.tg_button::after {
128 | color: @ini_link_dark !important;
129 | }
130 | h2, h3, h4, h5 {
131 | color: @ini_headlines_dark;
132 | }
133 |
134 | hr {
135 | background: @ini_text_alt_dark;
136 | background-image: linear-gradient(to right, @ini_background_alt_dark, @ini_text_alt_dark, @ini_background_alt_dark);
137 | }
138 |
139 | /* details-summary elements: */
140 | details {
141 | summary {
142 | color: @ini_headlines_dark;
143 | }
144 | summary::after {
145 | background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z' style='fill:%2376B0FD' /%3E%3C/svg%3E");
146 | }
147 | }
148 |
149 | /* definition list elements: */
150 | dl dt {
151 | color: @ini_headlines_dark;
152 | }
153 | }
154 | }
155 | }
156 |
157 | /* small screen break point: */
158 | @media (max-width: 440px) {
159 | #sidebar.alt div.tg_content {
160 | width: ~"calc(100vw - 1em)";
161 | }
162 | }
--------------------------------------------------------------------------------
/lang/es/lang.php:
--------------------------------------------------------------------------------
1 |
7 | * @author Sascha Leib (machine-translated with DeepL.com)
8 | */
9 | $lang['__background_site__'] = 'Color para el fondo (detrás de la caja de contenido)';
10 | $lang['__link__'] = 'El color de los enlaces en general';
11 | $lang['__existing__'] = 'El color de los enlaces a páginas existentes';
12 | $lang['__missing__'] = 'El color de los enlaces a páginas no existentes';
13 | $lang['__inpage__'] = 'Color de los enlaces dentro de la misma página';
14 | $lang['__site_width__'] = 'El ancho de la página completa (puede ser cualquier unidad de longitud: %, px, em, …)';
15 | $lang['__sidebar_width__'] = 'El ancho de la barra lateral (puede ser cualquier unidad de longitud: %, px, em, …)';
16 | $lang['__tablet_width__'] = 'Para tamaños de pantalla por debajo de esta anchura, el sitio cambia al modo tableta';
17 | $lang['__phone_width__'] = 'Para tamaños de pantalla por debajo de esta anchura, el sitio cambia al modo teléfono';
18 | $lang['__theme_color__'] = 'Color del tema de la aplicación web';
19 |
20 | $lang['__toc_width__'] = 'La anchura del bloque del índice (puede ser cualquier unidad de longitud: %, px, em, …)';
21 | $lang['__focus_color__'] = 'Color de enfoque';
22 |
23 | $lang['__headlines__'] = 'Color de los titulares';
24 | $lang['__blockquote__'] = 'Color de los marcadores de las citas en bloque';
25 | $lang['__separator__'] = 'Color del separador de líneas';
26 |
27 | $lang['__default_fonts__'] = 'Lista de fuentes por defecto (utilizadas para el contenido y la navegación)';
28 | $lang['__default_font_size__'] = 'Tamaño de letra por defecto';
29 |
30 | $lang['__alt_fonts__'] = 'Fuentes alternativas (utilizadas, por ejemplo, para las citas en bloque)';
31 | $lang['__alt_font_size__'] = 'Tamaño base de la fuente alternativa (utilice rem o % para obtener mejores resultados)';
32 | $lang['__headline_fonts__'] = 'Fuentes para titulares';
33 | $lang['__mono_fonts__'] = 'Fuentes monoespaciadas (por ejemplo, para el código)';
34 | $lang['__math_fonts__'] = 'Fuentes matemáticas (por ejemplo, para fórmulas, etc.)';
35 | $lang['__print_default_fonts__'] = 'Fuentes por defecto para la impresión';
36 | $lang['__print_title_fonts__'] = 'Fuentes de los títulos para la impresión';
37 | $lang['__print_title_color__'] = 'Color del título para imprimir';
38 |
39 | $lang['__background_site_dark__'] = 'Fondo de la ventana (modo oscuro)';
40 | $lang['__background_dark__'] = 'Fondo del contenido (modo oscuro)';
41 | $lang['__background_alt_dark__'] = 'Color de fondo alternativo (modo oscuro)';
42 | $lang['__background_neu_dark__'] = 'Color de fondo del texto neutro (modo oscuro)';
43 | $lang['__headlines_dark__'] = 'Color de los titulares (modo oscuro)';
44 | $lang['__text_dark__'] = 'Color del texto (modo oscuro)';
45 | $lang['__text_alt_dark__'] = 'Color del texto alternativo (modo oscuro)';
46 | $lang['__text_neu_dark__'] = 'Color del texto neutro (modo oscuro)';
47 | $lang['__link_dark__'] = 'Color del enlace externo (modo oscuro)';
48 | $lang['__existing_dark__'] = 'Color del enlace del artículo existente (modo oscuro)';
49 | $lang['__missing_dark__'] = 'Color del enlace del artículo que falta (modo oscuro)';
50 | $lang['__inpage_dark__'] = 'Color de los enlaces dentro de la misma página (modo oscuro)';
51 | $lang['__border_dark__'] = 'Color del borde (modo oscuro)';
52 | $lang['__blockquote_dark__'] = 'Marcador de cita en bloque (modo oscuro)';
53 | $lang['__highlight_dark__'] = 'Color resaltado (modo oscuro)';
54 |
55 | $lang['cookie_consent'] = 'OK';
56 | $lang['cookie_linktext'] = 'Más información';
57 |
58 | $lang['homepage'] = 'Página de inicio';
59 |
60 | $lang['languages'] = 'Lenguas disponibles';
61 |
--------------------------------------------------------------------------------
/css/_search.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the search results page (?do=search)
3 | * and the AJAX search popup.
4 | */
5 |
6 | /* general
7 | ********************************************************************/
8 |
9 | /* search hit in normal text */
10 | .dokuwiki .search_hit {
11 | color: @ini_text;
12 | background-color: __highlight__;
13 | }
14 |
15 | /* "nothing found" at search + media */
16 | .dokuwiki div.nothing {
17 | margin-bottom: 1.4em;
18 | }
19 |
20 | /* search results page
21 | ********************************************************************/
22 |
23 | /*____________ advanced search form ____________*/
24 | .dokuwiki .search-results-form fieldset.search-form {
25 | width: 100%;
26 | margin: 1em 0;
27 |
28 | input[name="q"] {
29 | width: 50%;
30 | }
31 |
32 | button.toggleAssistant {
33 | float: right;
34 | }
35 |
36 | .advancedOptions {
37 | padding: 1em 0;
38 |
39 | > div {
40 | display: inline-block;
41 | position: relative;
42 | margin: 0 0.5em;
43 | }
44 |
45 | div.toggle {
46 | // default closed toggle state
47 | div.current {
48 | cursor: pointer;
49 | max-width: 10em;
50 | white-space: nowrap;
51 | overflow: hidden;
52 | text-overflow: ellipsis;
53 |
54 | &::after {
55 | content: '▼';
56 | font-size: smaller;
57 | color: @ini_text_alt;
58 | }
59 | }
60 | div.changed {
61 | font-weight: bold;
62 | }
63 | ul {
64 | display: none;
65 | position: absolute;
66 | border: 1px solid @ini_border;
67 | background-color: @ini_background;
68 | padding: 0.25em 0.5em;
69 | text-align: left;
70 | min-width: 10em;
71 | max-width: 15em;
72 | max-height: 50vh;
73 | overflow: auto;
74 | z-index: 100;
75 | li {
76 | margin: 0.25em 0;
77 | list-style: none;
78 |
79 | a {
80 | display: block;
81 | }
82 | }
83 | }
84 |
85 | // open toggle state
86 | &.open {
87 | div.current::after {
88 | content: '▲';
89 | }
90 |
91 | ul {
92 | display: block;
93 | }
94 | }
95 | }
96 | }
97 | }
98 |
99 | [dir=rtl] .search-results-form fieldset.search-form .advancedOptions {
100 | div.toggle ul {
101 | text-align: right;
102 | }
103 | }
104 |
105 | /*____________ matching pagenames ____________*/
106 |
107 | .dokuwiki div.search_quickresult {
108 | margin-bottom: 1.4em;
109 |
110 | ul {
111 | padding: 0;
112 |
113 | li {
114 | float: left;
115 | width: 12em;
116 | margin: 0 1.5em;
117 | }
118 | }
119 | }
120 |
121 | [dir=rtl] .dokuwiki div.search_quickresult ul li {
122 | float: right;
123 | }
124 |
125 | /*____________ search results ____________*/
126 |
127 | .dokuwiki dl.search_results {
128 | margin-bottom: 1.2em;
129 |
130 | /* search heading */
131 | dt {
132 | font-weight: normal;
133 | margin-bottom: .2em;
134 | }
135 |
136 | /* last modified line */
137 | dd.meta {
138 | margin: 0 0 .2em 0;
139 | }
140 |
141 | /* search snippet */
142 | dd.snippet {
143 | color: @ini_text_alt;
144 | background-color: inherit;
145 | margin: 0 0 1.2em 0;
146 |
147 | /* search hit in search results */
148 | strong.search_hit {
149 | font-weight: normal;
150 | /* color is set in general */
151 | }
152 |
153 | /* ellipsis separating snippets */
154 | .search_sep {
155 | color: @ini_text;
156 | background-color: inherit;
157 | }
158 | }
159 | }
160 |
161 | /* AJAX quicksearch popup
162 | ********************************************************************/
163 |
164 | .dokuwiki form.search {
165 | div.no {
166 | position: relative;
167 | }
168 |
169 | /* .JSpopup */
170 | div.ajax_qsearch {
171 | position: absolute;
172 | top: 0;
173 | left: -13.5em; /* -( width of #qsearch__in + padding of .ajax_qsearch + a bit more ) */
174 | width: 12em;
175 | padding: 0.5em;
176 | font-size: .9em;
177 | z-index: 20;
178 | text-align: left;
179 | display: none;
180 |
181 | strong {
182 | display: block;
183 | margin-bottom: .3em;
184 | }
185 |
186 | ul {
187 | margin: 0 !important;
188 | padding: 0 !important;
189 |
190 | li {
191 | margin: 0;
192 | padding: 0;
193 | display: block !important;
194 | }
195 | }
196 | }
197 | }
198 |
199 | [dir=rtl] .dokuwiki form.search div.ajax_qsearch {
200 | left: auto;
201 | /*right: -13.5em;*/
202 | text-align: right;
203 | }
--------------------------------------------------------------------------------
/css/_diff.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the diff view, which shows you
3 | * differences between two versions of a page (?do=diff).
4 | */
5 |
6 | .mode_diff table.diff {
7 | width: 100%;
8 | border-width: 0;
9 | }
10 | .mode_diff table.diff th,
11 | .mode_diff table.diff td {
12 | vertical-align: top;
13 | padding: 0;
14 | border-width: 0;
15 | /* no style.ini colours because deleted and added lines have a fixed background colour */
16 | background-color: #fff;
17 | color: #333;
18 | }
19 |
20 | /* table header */
21 | .mode_diff table.diff th {
22 | border-bottom: 1px solid @ini_border;
23 | font-size: 110%;
24 | font-weight: normal;
25 | }
26 | .mode_diff table.diff th a {
27 | font-weight: bold;
28 | }
29 | .mode_diff table.diff th span.user {
30 | font-size: .9em;
31 | }
32 | .mode_diff table.diff th span.sum {
33 | font-size: .9em;
34 | font-weight: bold;
35 | }
36 | .mode_diff table.diff th.minor {
37 | color: #999;
38 | }
39 | .mode_diff table.diff_sidebyside th {
40 | width: 50%;
41 | }
42 |
43 | /* table body */
44 | .mode_diff table.diff .diff-lineheader {
45 | width: .7em;
46 | text-align: right;
47 | }
48 | [dir=rtl] .mode_diff table.diff .diff-lineheader {
49 | text-align: left;
50 | }
51 | .mode_diff table.diff .diff-lineheader,
52 | .mode_diff table.diff td {
53 | font-family: @ini_mono_fonts;
54 | background-color: #F6F8FA;
55 | }
56 | .mode_diff table.diff td.diff-blockheader {
57 | font-weight: bold;
58 | }
59 | .mode_diff table.diff .diff-addedline {
60 | background-color: #E4FFEE;
61 | color: inherit;
62 | }
63 | .mode_diff table.diff .diff-deletedline {
64 | background-color: #FFEEF0;
65 | color: inherit;
66 | }
67 | .mode_diff table.diff td.diff-context {
68 | background-color: #FFF;
69 | color: inherit;
70 | }
71 | .mode_diff table.diff td.diff-addedline strong {
72 | color: #23292E;
73 | background-color: #A5F2C1;
74 | font-weight: normal;
75 | }
76 | .mode_diff table.diff td.diff-deletedline strong {
77 | color: #23292E;
78 | background-color: #FFB7BF;
79 | font-weight: normal;
80 | }
81 |
82 | /* diff options */
83 |
84 | .mode_diff .diffoptions form {
85 | float: left;
86 | }
87 | .mode_diff .diffoptions p {
88 | float: right;
89 | }
90 |
91 | /* diff nav */
92 |
93 | .mode_diff table.diff_sidebyside td.diffnav {
94 | padding-bottom: .7em;
95 | }
96 | .mode_diff .diffnav a {
97 | display: inline-block;
98 | vertical-align: middle;
99 | }
100 | .mode_diff .diffnav a span {
101 | display: none;
102 | }
103 |
104 | .mode_diff .diffnav a:hover,
105 | .mode_diff .diffnav a:active,
106 | .mode_diff .diffnav a:focus {
107 | background-color: @ini_background_alt;
108 | text-decoration: none;
109 | }
110 |
111 | .mode_diff .diffnav a:before {
112 | display: inline-block;
113 | line-height: 1;
114 | padding: .2em .4em;
115 | border: 1px solid @ini_border;
116 | border-radius: 2px;
117 | color: @ini_text;
118 | }
119 |
120 | .mode_diff .diffnav a.diffprevrev:before {
121 | content: '\25C0'; /* left triangle */
122 | }
123 | .mode_diff .diffnav a.diffnextrev:before,
124 | .mode_diff .diffnav a.difflastrev:before {
125 | content: '\25B6'; /* right triangle */
126 | }
127 | .mode_diff .diffnav a.diffbothprevrev:before {
128 | content: '\25C0\25C0';
129 | }
130 | .mode_diff .diffnav a.diffbothnextrev:before {
131 | content: '\25B6\25B6';
132 | }
133 |
134 | .mode_diff .diffnav select {
135 | width: 60%;
136 | min-width: 9em;
137 | height: 1.5em; /* height is necessary for longer options in Webkit */
138 | }
139 |
140 | .mode_diff .diffnav select option[selected] {
141 | font-weight: bold;
142 | }
143 |
144 | /* dark mode overrides */
145 | @media (prefers-color-scheme: dark) {
146 |
147 | body.mode_diff.darkmode table.diff .diff-lineheader,
148 | body.mode_diff.darkmode table.diff th,
149 | body.mode_diff.darkmode table.diff td {
150 | background-color: #1C2125;
151 | color: #D0D5DA;
152 | }
153 | body.mode_diff.darkmode table.diff td.diff-context {
154 | background-color: #23292E;
155 | }
156 | body.mode_diff.darkmode table.diff .diff-deletedline {
157 | background-color: #49090F;
158 | }
159 | body.mode_diff.darkmode table.diff .diff-addedline {
160 | background-color: #0A3A1E;
161 | }
162 | body.mode_diff.darkmode table.diff td.diff-addedline strong {
163 | color: #FFF;
164 | background-color: #038642;
165 | }
166 | body.mode_diff.darkmode table.diff td.diff-deletedline strong {
167 | color: #FFF;
168 | background-color: #BB0E27;
169 | }
170 | body.mode_diff.darkmode .diffnav a::before {
171 | color: @ini_text_dark;
172 | border: transparent none 0;
173 | }
174 | body.mode_diff.darkmode .diffnav select {
175 | background-color: @ini_background_site_dark;
176 | color: @ini_text_dark;
177 | border: transparent none 0;
178 | }
179 | }
--------------------------------------------------------------------------------
/main.php:
--------------------------------------------------------------------------------
1 |
7 | * @author Anika Henke
8 | * @author Clarence Lee
9 | * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
10 | */
11 |
12 | if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */
13 |
14 | require_once('my_template.php');
15 |
16 | $hasSidebar = page_findnearest($conf['sidebar']);
17 | $showSidebar = $hasSidebar && ($ACT=='show');
18 |
19 | // get the language information:
20 | $htmlLang = ' lang="' . $conf['lang'] . ( $lang['direction'] != 'ltr' ? '" dir="'. $lang['direction'] : '') . '"';
21 |
22 | ?>
23 | >
24 |
25 |
26 | –
27 |
28 |
29 |
30 |
31 |
32 |
33 |
36 |
61 |
62 |
83 |
84 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
102 |
103 |
104 |
127 |
128 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/css/_links.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for all types of links.
3 | */
4 |
5 | /*____________ links to wiki pages ____________*/
6 |
7 | /* existing wikipage */
8 | a.wikilink1 {
9 | }
10 | /* not existing wikipage */
11 | a.wikilink2 {
12 | text-decoration: none;
13 | }
14 | a.wikilink2:link,
15 | a.wikilink2:visited {
16 | border-bottom: 1px dashed;
17 | }
18 | a.wikilink2:hover,
19 | a.wikilink2:active,
20 | a.wikilink2:focus {
21 | border-bottom-width: 0;
22 | }
23 |
24 | /* any link to current page */
25 | span.curid a {
26 | font-weight: bold;
27 | }
28 |
29 | /* Wikipedia Links */
30 | a.iw_wp, a.iw_wpfr, a.iw_wpde, a.iw_wpes, a.iw_wppl, a.iw_wpjp, a.iw_wpmeta {
31 | background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTAwJTI1JyBoZWlnaHQ9JzEwMCUyNScgdmlld0JveD0nMCAwIDUxMiA1MTInIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48Y2lyY2xlIGN4PScyNTYnIGN5PScyNTYnIHI9JzI1MCcgc3R5bGU9J2ZpbGw6I2ViZWJlYjtzdHJva2U6IzMzMztzdHJva2Utd2lkdGg6MTBweDsnLz48cGF0aCBkPSdNNjUsMTUybDAsOGMwLDIgMSwzIDQsM2MyMCwxIDIwLDUgMjgsMjNsOTAsMTk2YzcsMTQgMTYsMTYgMjUsLTFsNDUsLTg4bDQyLDg4YzgsMTUgMTYsMTYgMjQsMGw4NiwtMTk0YzgsLTE3IDE5LC0yNCAzNiwtMjRjMiwwIDIsLTEgMiwtM2wwLC04bC04MCwwbC0xLDFsMCw3YzAsMiAyLDMgNCwzYzEwLDAgMjksMiAyMSwxOWwtNzAsMTY2bC0zLC0xbC00MywtODhsMzcsLTcyYzgsLTE1IDEwLC0yNCAyNSwtMjRjMiwwIDQsLTEgNCwtM2wwLC03bC0xLC0xbC02NCwwbC0xLDFsMCw3YzAsMyA0LDMgNywzYzE4LDEgMTYsOCAxMCwxOWwtMjcsNTZsLTI1LC01MmMtOSwtMTYgLTExLC0yMSAyLC0yMmMzLC0xIDgsLTEgOCwtNGwwLC03bC0xLC0xbC02OSwwbC0xLDFsMCw4YzAsMiAyLDIgNSwyYzEyLDIgMTIsMyAyMywyNmw0MCw4NGwtMzcsNzVsLTMsLTFsLTc2LC0xNjdjLTgsLTE3IDIsLTE2IDE4LC0xN2MzLDAgMywtMSAzLC0zbDAsLTdsLTEsLTFsLTg2LDBaJyBzdHlsZT0nZmlsbDojMzMzOycvPjwvc3ZnPg==");
32 | }
33 |
34 | a.iw_google_de {
35 | background-image: url(/lib/images/interwiki/google.svg);
36 | }
37 |
38 | a.iw_twitter {
39 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHWSURBVDhPjVI9aFNRGD3nvgbS1kREB6E00RgKFkcRFQR/BhERHMTJ1tGppVsHZ5EqiJuDg/hsFt101w6CkrGg4GKJUKhYSc2LjaV57+u5L0+xxUoOnMf3ffee891370f0gdKzVtGMBwnLAVzOD9japjFAzpHlMNqrPcfE943JQpwq/kI5bI8ZbM7MzijNE3wL2mMZVUC8dInZUbFmwEx13gZ6sh7OvjFK+ES8qnS/OCyzi2Z4Adh5HX/UybGrhUFtursRR69Gw9a5cq0z5A2WltePSHDKxztAA7/JaJGHa+1iN06ewuC7eDRBftKOuo4Yyfh2Vt8Gkhe+TBZeuzi2kewUnd4S9sHspDpP7yYWNrS+6gNHh6aSquJBX+gTn9X0uw9c40ZhxYFTihd9oU8sBMx99YFLU8MHOdYVraf5/xER7tHSRN7/dmZAtPRdECNRL7orurq8By7gxyyXNENpvu2Q2AnJZ3UnV1QKeit/sKlTPieCW42bQz+zGlgKo4oRhzQxVYkvq/0l1TWy29BU54eku9+YGP79WikczK0xwbgG45rEx1VLxF/iilgncc85ng4Q3Nkp9kh/oRJ2GKNblPKACnpOfw30Jj9G8ntW313XWP0TwBYiI7IuEdRzyAAAAABJRU5ErkJggg==);
40 | }
41 |
42 | /*____________ other link types ____________*/
43 |
44 | a.urlextern,
45 | a.windows,
46 | a.mail,
47 | a.mediafile,
48 | a.interwiki {
49 | background-repeat: no-repeat;
50 | background-position: 0 center;
51 | background-size: 1.1em;
52 | padding: 0 0 0 1.25em;
53 | }
54 | /* external link */
55 | a.urlextern {
56 | background-image: url(../../images/external-link.png);
57 | }
58 | /* windows share */
59 | a.windows {
60 | background-image: url(../../images/unc.png);
61 | }
62 | /* email link */
63 | a.mail {
64 | background-image: url(../../images/email.png);
65 | }
66 |
67 | /* icons of the following are set by dokuwiki in lib/exe/css.php */
68 | /* link to some embedded media */
69 | a.mediafile {
70 | }
71 | /* interwiki link */
72 | a.interwiki {
73 | }
74 |
75 | /* RTL corrections; if link icons don't work as expected, remove the following lines */
76 | [dir=rtl] a.urlextern,
77 | [dir=rtl] a.windows,
78 | [dir=rtl] a.mail,
79 | [dir=rtl] a.interwiki,
80 | [dir=rtl] a.mediafile {
81 | background-position: right center;
82 | padding: 0 18px 0 0;
83 | }
84 |
85 |
86 | /* dark mode overrides */
87 | @media (prefers-color-scheme: dark) {
88 |
89 | body.darkmode a.iw_wp, body.darkmode a.iw_wpfr, body.darkmode a.iw_wpde, body.darkmode a.iw_wpes, body.darkmode a.iw_wppl, body.darkmode a.iw_wpjp, body.darkmode a.iw_wpmeta {
90 | background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyB2aWV3Qm94PScwIDAgNTEyIDUxMicgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxjaXJjbGUgY3g9JzI1NicgY3k9JzI1Nicgcj0nMjUwJyBzdHlsZT0nZmlsbDojMzMzO3N0cm9rZTojZWJlYmViO3N0cm9rZS13aWR0aDoxMHB4OycvPjxwYXRoIGQ9J002NSwxNTJsMCw4YzAsMiAxLDMgNCwzYzIwLDEgMjAsNSAyOCwyM2w5MCwxOTZjNywxNCAxNiwxNiAyNSwtMWw0NSwtODhsNDIsODhjOCwxNSAxNiwxNiAyNCwwbDg2LC0xOTRjOCwtMTcgMTksLTI0IDM2LC0yNGMyLDAgMiwtMSAyLC0zbDAsLThsLTgwLDBsLTEsMWwwLDdjMCwyIDIsMyA0LDNjMTAsMCAyOSwyIDIxLDE5bC03MCwxNjZsLTMsLTFsLTQzLC04OGwzNywtNzJjOCwtMTUgMTAsLTI0IDI1LC0yNGMyLDAgNCwtMSA0LC0zbDAsLTdsLTEsLTFsLTY0LDBsLTEsMWwwLDdjMCwzIDQsMyA3LDNjMTgsMSAxNiw4IDEwLDE5bC0yNyw1NmwtMjUsLTUyYy05LC0xNiAtMTEsLTIxIDIsLTIyYzMsLTEgOCwtMSA4LC00bDAsLTdsLTEsLTFsLTY5LDBsLTEsMWwwLDhjMCwyIDIsMiA1LDJjMTIsMiAxMiwzIDIzLDI2bDQwLDg0bC0zNyw3NWwtMywtMWwtNzYsLTE2N2MtOCwtMTcgMiwtMTYgMTgsLTE3YzMsMCAzLC0xIDMsLTNsMCwtN2wtMSwtMWwtODYsMFonIHN0eWxlPSdmaWxsOiNlYmViZWI7Jy8+PC9zdmc+");
91 | }
92 | }
--------------------------------------------------------------------------------
/css/_languages.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the Languages list,
3 | * both for the side- and the toolbar.
4 | * This overrides some of the styles in the languages plugin.
5 | */
6 |
7 | #tbLanguages, #sbLanguages {
8 |
9 | ul {
10 | & {
11 | margin-left: .5em;
12 | }
13 | li {
14 | & {
15 | list-style: none inside;
16 | }
17 | a {
18 | & {
19 | display: grid;
20 | grid-template-columns: 1.25em auto;
21 | align-items: center;
22 | gap: .4em;
23 | padding: .125em;
24 | line-height: 1.2em;
25 | }
26 | &::before {
27 | content: attr(lang);
28 | display: inline-block;
29 | text-align: center;
30 | place-self: stretch;
31 | border: @ini_text solid 1px;
32 | font-size: small;
33 | border-radius: 1.5pt;
34 | font-family: @ini_mono_fonts;
35 | font-size: .75rem;
36 | color: @ini_text;
37 | }
38 | &.wikilink1 {
39 | & {
40 | color: @ini_link;
41 | }
42 | &:hover {
43 | text-decoration: none;
44 | }
45 | &:hover span {
46 | text-decoration: underline;
47 | }
48 | }
49 | &.wikilink2 {
50 | & {
51 | border-bottom: transparent 0 none;
52 | }
53 | &:hover {
54 | text-decoration: none;
55 | }
56 | bdi {
57 | color: @ini_missing;
58 | text-decoration: underline;
59 | text-decoration-style: dotted;
60 | }
61 | }
62 | &.wikilink2:hover span {
63 | text-decoration-style: solid;
64 | }
65 | }
66 | }
67 | }
68 | }
69 |
70 | #tbLanguages {
71 |
72 | & {
73 | display: grid;
74 | place-items: center;
75 | grid-template-rows: auto 0;
76 | height: 100%;
77 | }
78 | button {
79 | & {
80 | padding: .25em;
81 | font-size: 1rem;
82 | border: transparent 1px solid;
83 | background-color: transparent;
84 | color: @ini_link;
85 | cursor: pointer;
86 | border-radius: .25em;
87 | }
88 | &:hover {
89 | background-color: @ini_background_alt;
90 | border-color: @ini_border;
91 | text-decoration: underline;
92 | }
93 | svg {
94 | width: 1.8rem; height: 1.8rem;
95 | fill: @ini_link;
96 | }
97 | svg text {
98 | fill: @ini_background_site;
99 | text-transform: uppercase;
100 | }
101 | }
102 | #langMenuWrapper {
103 | & {
104 | position: relative;
105 | left: 2rem; top: .5rem;
106 | }
107 | #langMenu {
108 | & {
109 | position: absolute;
110 | right: 0;
111 | background-color: @ini_background_site;
112 | border: @ini_border solid 1px;
113 | box-shadow: 0 0 8px rgba(0,0,0,.2);
114 | border-radius: 2pt;
115 | padding: .25em;
116 | z-index: 12;
117 | }
118 | &:before {
119 | content: '';
120 | position: absolute;
121 | top: 0;
122 | height: 1em;
123 | right: 16%;
124 | width: 1em;
125 | margin-left: -.5em;
126 | background-color: @ini_background_site;
127 | box-shadow: 0 0 8px rgba(0,0,0,.2);
128 | -webkit-clip-path: polygon(-8px -8px,calc(100% + 8px) -8px,calc(100% + 8px) calc(100% + 8px));
129 | clip-path: polygon(-8px -8px,calc(100% + 8px) -8px,calc(100% + 8px) calc(100% + 8px));
130 | transform: translateY(-50%) rotate(-45deg);
131 | border: @ini_border solid 1px;
132 | }
133 | li a {
134 | & {
135 | font-size: 1rem;
136 | padding: .25em;
137 | min-width: 6.5em;
138 | width: max-content;
139 | }
140 | }
141 | }
142 | }
143 | }
144 |
145 | #sbLanguages {
146 | & {
147 | margin: 1em .25em 0 1em;
148 | }
149 | h3 a.wikilink2 {
150 | color: @ini_missing;
151 | }
152 | ul {
153 | padding-left: 0 !important;
154 | }
155 | }
156 |
157 | /* dark mode overrides: */
158 | @media (prefers-color-scheme: dark) {
159 |
160 | body.darkmode {
161 |
162 | #tbLanguages, #sbLanguages {
163 | ul li a {
164 | &::before { border-color: @ini_text_dark; color: @ini_text_dark; }
165 | &.wikilink1 { color: @ini_link_dark; }
166 | &.wikilink2 bdi { color: @ini_link_dark; }
167 | }
168 | }
169 |
170 | #tbLanguages {
171 | button {
172 | & { color: @ini_link_dark; }
173 | &:hover { background-color: @ini_background_alt_dark; border-color: @ini_border_dark; }
174 | svg { fill: @ini_link_dark; }
175 | svg text { fill: @ini_background_site_dark; }
176 | }
177 | #langMenuWrapper #langMenu {
178 | & {
179 | background-color: @ini_background_site_dark;
180 | border-color: @ini_border_dark;
181 | box-shadow: 1pt 1pt 5pt rgba(0,0,0,0.4);;
182 | }
183 | &:before {
184 | background-color: @ini_background_site_dark;
185 | box-shadow: 1pt 1pt 5pt rgba(0,0,0,0.4);;
186 | border-color: @ini_border_dark;
187 | }
188 | }
189 | }
190 | #sbLanguages h3 a.wikilink2 {
191 | color: @ini_missing_dark;
192 | }
193 | }
194 | }
195 |
196 | @media (max-width: 950px) {
197 |
198 | /* touchup for the languages list in menu mode */
199 | #sbLanguages {
200 | margin: .5em .25em 0 .5em;
201 | }
202 | }
--------------------------------------------------------------------------------
/css/_media_popup.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the media manager popup
3 | * (mediamanager.php).
4 | */
5 |
6 | /*____________ structure ____________*/
7 |
8 | html.popup {
9 | overflow: auto;
10 | }
11 |
12 | #media__manager {
13 | height: 100%;
14 | overflow: hidden;
15 | }
16 |
17 | #mediamgr__aside {
18 | width: 30%;
19 | height: 100%;
20 | overflow: auto;
21 | position: absolute;
22 | left: 0;
23 | border-right: 1px solid @ini_border;
24 | }
25 | [dir=rtl] #mediamgr__aside {
26 | left: auto;
27 | right: 0;
28 | border-right-width: 0;
29 | border-left: 1px solid @ini_border;
30 | }
31 | #mediamgr__aside .pad {
32 | padding: .5em;
33 | }
34 |
35 | #mediamgr__content {
36 | width: 69.7%;
37 | height: 100%;
38 | overflow: auto;
39 | position: absolute;
40 | right: 0;
41 | }
42 | [dir=rtl] #mediamgr__content {
43 | right: auto;
44 | left: 0;
45 | }
46 | #mediamgr__content .pad {
47 | padding: .5em;
48 | }
49 |
50 | #media__manager h1,
51 | #media__manager h2 {
52 | font-size: 1.5em;
53 | margin-bottom: .5em;
54 | padding-bottom: .2em;
55 | border-bottom: 1px solid @ini_border;
56 | }
57 |
58 | /* left side
59 | ********************************************************************/
60 |
61 | /*____________ options ____________*/
62 |
63 | #media__opts {
64 | margin-bottom: .5em;
65 | }
66 |
67 | #media__opts input {
68 | margin-right: .3em;
69 | }
70 | [dir=rtl] #media__opts input {
71 | margin-right: 0;
72 | margin-left: .3em;
73 | }
74 | #media__opts label {
75 | }
76 |
77 | /*____________ tree ____________*/
78 |
79 | #media__tree ul {
80 | padding-left: .2em;
81 | }
82 | [dir=rtl] #media__tree ul {
83 | padding-left: 0;
84 | padding-right: .2em;
85 | }
86 | #media__tree ul li {
87 | clear: left;
88 | list-style-type: none;
89 | list-style-image: none;
90 | margin-left: 0;
91 | }
92 | [dir=rtl] #media__tree ul li {
93 | clear: right;
94 | margin-right: 0;
95 | }
96 | #media__tree ul li img {
97 | float: left;
98 | padding: .5em .3em 0 0;
99 | }
100 | [dir=rtl] #media__tree ul li img {
101 | float: right;
102 | padding: .5em 0 0 .3em;
103 | }
104 | #media__tree ul li div.li {
105 | display: inline;
106 | }
107 | #media__tree ul li li {
108 | margin-left: 1.5em;
109 | }
110 | [dir=rtl] #media__tree ul li li {
111 | margin-left: 0;
112 | margin-right: 1.5em;
113 | }
114 |
115 | /* right side
116 | ********************************************************************/
117 |
118 | /*____________ upload form ____________*/
119 |
120 | /* upload info */
121 | #media__content div.upload {
122 | font-size: .9em;
123 | margin-bottom: .5em;
124 | }
125 |
126 | #mediamanager__uploader {
127 | margin-bottom: 1em;
128 | }
129 | #mediamanager__uploader p {
130 | margin-bottom: .5em;
131 | }
132 |
133 | /*____________ file list ____________*/
134 |
135 | #media__content img.load {
136 | margin: 1em auto;
137 | }
138 |
139 | #media__content .odd,
140 | #media__content .even {
141 | padding: .5em;
142 | }
143 | #media__content .odd {
144 | background-color: @ini_background_alt;
145 | }
146 | #media__content .even {
147 | }
148 | /* highlight newly uploaded or edited file */
149 | #media__content #scroll__here {
150 | border: 1px dashed @ini_border;
151 | }
152 |
153 | /* link which inserts media file */
154 | #media__content a.mediafile {
155 | margin-right: 1.5em;
156 | font-weight: bold;
157 | cursor: pointer;
158 | }
159 | [dir=rtl] #media__content a.mediafile {
160 | margin-right: 0;
161 | margin-left: 1.5em;
162 | }
163 | #media__content span.info {
164 | }
165 | #media__content img.btn {
166 | vertical-align: text-bottom;
167 | }
168 |
169 | /* info how to insert media, if JS disabled */
170 | #media__content div.example {
171 | color: @ini_text_neu;
172 | margin-left: 1em;
173 | }
174 |
175 | #media__content div.detail {
176 | padding: .2em 0;
177 | }
178 | #media__content div.detail div.thumb {
179 | float: left;
180 | margin: 0 .5em 0 18px;
181 | }
182 | [dir=rtl] #media__content div.detail div.thumb {
183 | float: right;
184 | margin: 0 18px 0 .5em;
185 | }
186 | #media__content div.detail div.thumb a {
187 | display: block;
188 | cursor: pointer;
189 | }
190 | #media__content div.detail p {
191 | margin-bottom: 0;
192 | }
193 |
194 |
195 | /*____________ media search ____________*/
196 |
197 | #dw__mediasearch {
198 | }
199 | #dw__mediasearch p {
200 | }
201 | #dw__mediasearch label {
202 | width: 100%;
203 | }
204 | #dw__mediasearch label span {
205 | display: block;
206 | }
207 | #dw__mediasearch input[type="text"] {
208 | background-color: @ini_background;
209 | color: @ini_text;
210 | border: @ini_border solid 1px;
211 | font-family: @ini_mono_fonts;
212 | font-size: @ini_alt_font_size;
213 | padding: .15em; margin: 0 .25rem;
214 | width: ~"calc(100% - 1.25rem)";
215 | }
216 | #dw__mediasearch button {
217 | background-color: #004D40;
218 | color: #FFF;
219 | padding: .25rem 1rem;
220 | border: transparent none 0;
221 | cursor: pointer;
222 | font-size: 1rem;
223 | margin-top: .5em;
224 | }
225 |
226 | /* dark mode overrides */
227 | @media (prefers-color-scheme: dark) {
228 |
229 | body.darkmode {
230 | #media__content .odd {
231 | background-color: @ini_background_dark;
232 | }
233 |
234 | #dw__mediasearch input[type="text"] {
235 | background-color: @ini_background_site_dark;
236 | color: @ini_text_dark;
237 | border-color: @ini_border_dark;
238 | }
239 | }
240 | }
--------------------------------------------------------------------------------
/css/_fileuploader.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides the styles for the file uploader
3 | * used in the media manager (both fullscreen and popup).
4 | */
5 |
6 | .qq-uploader {
7 | position: relative;
8 | width: 100%;
9 | }
10 | #mediamanager__page .qq-upload-list li {
11 | & {
12 | display: grid;
13 | grid-template-columns: 1.25rem auto 1.25rem;
14 | grid-gap: 5px;
15 | align-items: center;
16 | }
17 | &::before {
18 | content: '';
19 | background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14,11C12.34,11 11,9.66 11,8V4H7C5.9,4 5,4.9 5,6V19C5,20.1 5.9,21 7,21H16C17.1,21 18,20.1 18,19V11H14M12,8C12,9.1 12.9,10 14,10H17.59L12,4.41V8M7,3H12L19,10V19C19,20.66 17.66,22 16,22H7C5.34,22 4,20.66 4,19V6C4,4.34 5.34,3 7,3Z' /%3E%3C/svg%3E") center no-repeat;
20 | background-size: 1em;
21 | display: inline-block;
22 | width: 1.25rem;
23 | height:1.5rem;
24 | }
25 | &.qq-upload-success {
26 | grid-template-columns: 1.25rem auto auto;
27 | }
28 | .qq-upload-size {
29 | min-width: fit-content;
30 | text-align: right;
31 | }
32 | .qq-upload-failed-text {
33 | grid-column: 2 / span 2;
34 | }
35 | }
36 |
37 | #mediamanager__page .qq-upload-list li input[type="text"] {
38 | font-family: @ini_mono_fonts;
39 | font-size: @ini_alt_font_size;
40 | background-color: transparent;
41 | border: 1px solid transparent;
42 | padding: .25em;
43 | border-radius: 1.5pt;
44 | }
45 | #mediamanager__page .qq-upload-list li input[type="text"]:focus {
46 | border-color: @ini_border;
47 | }
48 |
49 | .qq-uploader .error {
50 | color: #f00;
51 | background-color: #fff;
52 | }
53 |
54 | /* select file button */
55 |
56 | .qq-upload-button,
57 | #mediamanager__upload_button {
58 | display: inline-block;
59 | text-decoration: none;
60 | font-size: 1rem;
61 | cursor: pointer;
62 | margin: 1px 1px 5px;
63 | padding: 2pt 20pt;
64 | border: none 0;
65 | color: #FFF;
66 | cursor: pointer;
67 | }
68 | .qq-upload-button {
69 | background-color: #15395B;
70 | }
71 | #mediamanager__upload_button {
72 | background-color: #B71C1C;
73 | padding: .4rem 2.5rem;
74 | }
75 |
76 | .qq-upload-button-focus {
77 | outline: 1px dotted;
78 | }
79 |
80 | /* drop area */
81 | .qq-upload-drop-area {
82 | background: @ini_background_neu;
83 | color: @ini_text_neu;
84 | text-align: center;
85 | }
86 |
87 | .qq-upload-drop-area span {
88 | padding: 2em .5em;
89 | }
90 |
91 | .qq-upload-drop-area-active {
92 | position: fixed;
93 | top: 0; left: 0;
94 | width: 100vw;
95 | height: 100vh;
96 | min-height: 70px;
97 | background: fadeout(@ini_background_alt, 10%);;
98 | z-index: 99;
99 | }
100 | .qq-upload-drop-area-active span {
101 | display: block;
102 | position: absolute;
103 | top: 50%;
104 | width: 100%;
105 | margin-top: -8px;
106 | font-size: 120%;
107 | color: #15395B;
108 | }
109 | /* list of files to upload */
110 |
111 | div.qq-uploader ul {
112 | margin: 0;
113 | padding: 0;
114 | list-style: none;
115 | }
116 |
117 | .qq-uploader li {
118 | margin: 0 0 5px;
119 | color: @ini_text;
120 | }
121 |
122 | .qq-uploader li span,
123 | .qq-uploader li input,
124 | .qq-uploader li a {
125 | margin-right: 5px;
126 | }
127 |
128 | .qq-upload-file {
129 | display: block;
130 | font-weight: bold;
131 | }
132 |
133 | .qq-upload-spinner {
134 | display: inline-block;
135 | background: url("../../images/throbber.gif");
136 | width: 15px;
137 | height: 15px;
138 | vertical-align: text-bottom;
139 | }
140 |
141 | .qq-upload-size {
142 | font-size: 85%;
143 | }
144 | .qq-upload-cancel {
145 | font-size: 1rem;
146 | line-height: 1.25;
147 | width: 1em; height: 1.5em;
148 | overflow: hidden;
149 | }
150 | .qq-upload-cancel::before {
151 | content: '';
152 | background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z' style='fill:%23A00' /%3E%3C/svg%3E") center no-repeat;
153 | background-size: 1em;
154 | display: inline-block;
155 | width: 1em;
156 | height: 1.5em;
157 | }
158 |
159 | .qq-upload-failed-text {
160 | display: none;
161 | }
162 | .qq-upload-fail .qq-upload-failed-text {
163 | display: inline;
164 | }
165 |
166 | .qq-action-container * {
167 | vertical-align: middle;
168 | }
169 | .qq-overwrite-check input {
170 | margin-left: 10px;
171 | }
172 |
173 | /* media tree overrides */
174 | #media__tree ul li div.li {
175 | display: grid;
176 | }
177 | #mediamanager__page .ui-resizable-e {
178 | background-color: #EEE;
179 | }
180 |
181 | /* dark mode overrides */
182 | @media (prefers-color-scheme: dark) {
183 |
184 | body.darkmode {
185 | .qq-upload-button {
186 | background-color: #1976D2;
187 | }
188 |
189 | .qq-upload-drop-area {
190 | background: @ini_background_neu_dark;
191 | color: @ini_text_neu_dark;
192 | }
193 |
194 | .qq-upload-drop-area-active {
195 | background: fadeout(@ini_background_alt_dark, 10%);;
196 | }
197 | .qq-upload-drop-area-active span {
198 | color: #1976D2;
199 | }
200 |
201 | #mediamanager__page .qq-upload-list {
202 | li::before {
203 | filter: invert(.9);
204 | }
205 | li input[type="text"] {
206 | color: @ini_text_dark;
207 | }
208 | li input[type="text"]:focus {
209 | border-color: @ini_border_dark;
210 | }
211 | .qq-upload-size {
212 | color: @ini_text_dark;
213 | }
214 | .qq-upload-cancel::before {
215 | filter: brightness(1.5);
216 | }
217 |
218 | }
219 | }
220 | }
--------------------------------------------------------------------------------
/detail.php:
--------------------------------------------------------------------------------
1 |
7 | * @author Anika Henke
8 | * @author Clarence Lee
9 | * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
10 | */
11 |
12 | ini_set('display_errors', 0);
13 | ini_set('display_startup_errors', 0);
14 | error_reporting(0);
15 |
16 | if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */
17 |
18 | require_once('my_template.php');
19 |
20 | $htmlLang = ' lang="' . $conf['lang'] . ( $lang['direction'] != 'ltr' ? '" dir="'. $lang['direction'] : '') . '"';
21 |
22 | ?>
23 | >
24 |
25 |
26 | –
27 |
28 |
29 |
30 |
31 |
32 |
33 |
36 |
59 |
60 |
77 |
78 |
84 |
85 |
86 |
94 |
95 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | |
107 | 0){
110 | foreach($media_usage as $path){
111 | echo '- '.html_wikilink($path).'
';
112 | }
113 | }else{
114 | echo '- '.$lang['nothingfound'].'
';
115 | }
116 | ?>
117 | |
118 | | |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
129 |
130 |
131 |
154 |
155 |
156 |
157 |
158 |
--------------------------------------------------------------------------------
/style.ini:
--------------------------------------------------------------------------------
1 | ; Please see http://php.net/manual/en/function.parse-ini-file.php
2 | ; for limitations of the ini format used here
3 |
4 | ; To extend this file or make changes to it, it is recommended to create
5 | ; a local conf/tpl//style.ini file to prevent losing
6 | ; any changes after an upgrade.
7 | ; Please don’t forget to copy the section your changes should be under
8 | ; (i.e. [stylesheets] or [replacements]) into that file as well.
9 |
10 | ; Define the stylesheets your template uses here. The second value
11 | ; defines for which output media the style should be loaded. Currently
12 | ; print, screen and all are supported.
13 | ; You can reference CSS and LESS files here. Files referenced here will
14 | ; be checked for updates when considering a cache rebuild while files
15 | ; included through LESS’ @import statements are not
16 |
17 | [stylesheets]
18 |
19 | css/layout.less = all
20 | css/content.less = all
21 | css/links.less = all
22 | css/_sidebar.less = screen
23 | css/_cookies.css = screen
24 | css/_media_popup.css = screen
25 | css/_media_fullscreen.css = screen
26 | css/_fileuploader.css = screen
27 | css/_tabs.css = screen
28 | css/_links.css = screen
29 | css/_footnotes.css = all
30 | css/_search.less = screen
31 | css/_recent.css = screen
32 | css/_diff.css = screen
33 | css/_edit.css = screen
34 | css/_modal.css = screen
35 | css/_forms.css = screen
36 | css/_admin.less = screen
37 | css/_languages.less = screen
38 | css/structure.less = screen
39 | css/design.less = screen
40 | css/usertools.less = screen
41 | css/pagetools.less = screen
42 | css/plugins.less = screen
43 |
44 | css/geshi.less = all
45 |
46 | css/print.less = print
47 |
48 |
49 | ; This section is used to configure some placeholder values used in
50 | ; the stylesheets. Changing this file is the simplest method to
51 | ; give your wiki a new look.
52 | ; Placeholders defined here will also be made available as LESS variables
53 | ; (with surrounding underscores removed, and the prefix @ini_ added)
54 |
55 | [replacements]
56 |
57 | ;--------------------------------------------------------------------------
58 | ;------ guaranteed dokuwiki color placeholders that every plugin can use
59 |
60 | ; main text and background colors
61 | __text__ = "#111" ; @ini_text
62 | __headlines__ = "#444" ; @ini_headlines
63 | __background__ = "#FFF" ; @ini_background
64 | ; alternative text and background colors
65 | __text_alt__ = "#333" ; @ini_text_alt
66 | __background_alt__ = "#EEE" ; @ini_background_alt
67 | ; neutral text and background colors
68 | __text_neu__ = "#616161" ; @ini_text_neu
69 | __background_neu__ = "#DDD" ; @ini_background_neu
70 | ; border color
71 | __border__ = "#CCC" ; @ini_border
72 | ; blockquote marker
73 | __blockquote__ = "#AAA" ; @ini_blockquote
74 |
75 | ; highlighted text (e.g. search snippets)
76 | __highlight__ = "#fcffaa" ; @ini_highlight
77 |
78 | ; default link color
79 | __link__ = "#1F53A8" ; @ini_link
80 |
81 | ; separator color
82 | __separator__ = "#666" ; @ini_separator
83 |
84 | ;--------------------------------------------------------------------------
85 |
86 | __background_site__ = "#fbfaf9" ; @ini_background_site
87 |
88 | ; these are used for wiki links
89 | __existing__ = "#006500" ; @ini_existing
90 | __missing__ = "#A92700" ; @ini_missing
91 | __inpage__ = "#494F52" ; @ini_inpage
92 |
93 | ; site and sidebar widths
94 | __site_width__ = "950pt" ; @ini_site_width
95 | __sidebar_width__ = "280px" ; @ini_sidebar_width
96 | __toc_width__ = "200px" ; @ini_toc_width
97 | ; cut off points for mobile devices
98 | __tablet_width__ = "950px" ; @ini_tablet_width
99 | __phone_width__ = "670px" ; @ini_phone_width
100 |
101 | __theme_color__ = "#232327" ; @ini_theme_color: theme_color of the web app
102 |
103 | ; for focusing on element:
104 | __focus_color__ = "#FEA62B" ; @ini_focus_color: focus colour (Accessibility)
105 |
106 | ;---------------------------------------------- Dark Mode Colours -
107 |
108 | __background_site_dark__ = "#0C0C0D" ; @ini_background_site_dark
109 | __background_dark__ = "#232327" ; @ini_background_dark
110 | __background_alt_dark__ = "#39393D" ; @ini_background_alt_dark
111 | __background_neu_dark__ = "#4C4C4E" ; @ini_background_neu_dark
112 | __headlines_dark__ = "#ADADB3" ; @ini_headlines_dark
113 | __text_dark__ = "#CCC" ; @ini_text_dark
114 | __text_alt_dark__ = "#AEAEAE" ; @ini_text_alt_dark
115 | __text_neu_dark__ = "#BDBDBD" ; @ini_text_neu_dark
116 | __link_dark__ = "#76B0FD" ; @ini_link_dark
117 | __existing_dark__ = "#00CA1B" ; @ini_existing_dark
118 | __missing_dark__ = "#FF9233" ; @ini_missing_dark
119 | __inpage_dark__ = "#A7AEA6" ; @ini_inpage_dark
120 | __border_dark__ = "#38383D" ; @ini_border_dark
121 | __blockquote_dark__ = "#3b3b42" ; @ini_blockquote_dark
122 | __highlight_dark__ = "#3c3c36" ; @ini_highlight_dark
123 | __focus_color_dark__ = "#FEA62B" ; @ini_focus_color_dark
124 |
125 | ;----------------------------------------------- Font families ----
126 |
127 | ; The default font settings for the site:
128 | __default_fonts__ = "Helvetica Neue,Helvetica,Arial,Roboto,sans-serif" ; @ini_default_fonts
129 | __default_font_size__ = "14pt" ; @ini_default_font_size
130 | __headline_fonts__ = "Georgia,Palatino,Baskerville,serif" ; @ini_headline_fonts
131 |
132 | __alt_fonts__ = "Georgia,Palatino,Baskerville,serif" ; @ini_alt_fonts
133 | __alt_font_size__ = "92%" ; @ini_alt_font_size
134 | __mono_fonts__ = "Consolas,Courier New,Courier,monospace" ; @ini_mono_fonts
135 | __math_fonts__ = "STIX Two Math,Cambria Math,Latin Modern Math,Times New Roman,serif" ; @ini_math_fonts
136 |
137 | ; ---------------------------------------------- Print Settings ----
138 |
139 | __print_default_fonts__ = "Georgia,Times New Roman,Garamond,serif" ; @ini_print_default_fonts
140 | __print_title_fonts__ = "Helvetica Neue,Helvetica,Arial,sans-serif" ; @ini_print_title_fonts
141 | __print_title_color__ = "#333" ; @ini_print_title_color
142 |
--------------------------------------------------------------------------------
/css/_modal.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for modal dialogues.
3 | */
4 |
5 | .dokuwiki .ui-widget {
6 | font-size: 100%;
7 | /*min-width: 290px;
8 | min-height: 285px; */
9 | }
10 |
11 | #mediamanager__page .panelHeader form.options .ui-controlgroup-horizontal label {
12 | font-size: 90%;
13 | margin-right: -0.4em;
14 | padding: .3em .5em;
15 | line-height: 1;
16 | }
17 |
18 | .ui-controlgroup > .ui-controlgroup-item {
19 | float: left;
20 | margin-left: 0;
21 | margin-right: 0;
22 | }
23 |
24 | .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br {
25 | border-bottom-right-radius: 4px;
26 | }
27 |
28 | .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr {
29 | border-top-right-radius: 4px;
30 | }
31 |
32 | .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited, a.ui-button, a:link.ui-button, a:visited.ui-button, .ui-button {
33 | color: #555555;
34 | text-decoration: none;
35 | }
36 |
37 | .ui-state-default,
38 | .ui-widget-content .ui-state-default,
39 | .ui-widget-header .ui-state-default,
40 | .ui-button,
41 | html .ui-button.ui-state-disabled:hover,
42 | html .ui-button.ui-state-disabled:active {
43 | border: 1px solid @ini_border;
44 | background: @ini_background_neu none;
45 | color: @ini_text_neu;
46 | }
47 |
48 | .dokuwiki .ui-state-active,
49 | .dokuwiki .ui-widget-content .ui-state-active,
50 | .dokuwiki .ui-widget-header .ui-state-active,
51 | .dokuwiki a.ui-button:active,
52 | .dokuwiki .ui-button:active,
53 | .dokuwiki .ui-button.ui-state-active:hover {
54 | border: 1px solid @ini_border;
55 | background: @ini_background_alt none;
56 | color: @ini_text_alt;
57 | }
58 |
59 |
60 | /* link wizard (opens from the link button in the edit toolbar)
61 | ********************************************************************/
62 |
63 | #link__wiz {
64 | resize: both;
65 | max-width: 80%;
66 | max-height: 512px;
67 | box-shadow: 2px 2px 3px 2px rgba(0,0,0,.5);
68 | }
69 |
70 | [dir=rtl] #link__wiz_close {
71 | float: left;
72 | }
73 |
74 | #link__wiz .ui-dialog-content {
75 | width: 100%;
76 | height: ~"calc(100% - 22px)";
77 | overflow: hidden;
78 | color: @ini_text_alt;
79 | font-size: small;
80 | }
81 |
82 | #link__wiz button.ui-dialog-titlebar-close {
83 | width: 16px;
84 | height: 16px;
85 | min-width: 16px;
86 | min-height: 16px;
87 | background-color: @ini_background;
88 | border: @ini_border solid 1px;
89 | }
90 |
91 | #link__wiz #link__wiz_entry {
92 | width: ~"calc(100% - 5em)";
93 | border-color: @ini_border;
94 | background-color: @ini_background;
95 | color: @ini_text;
96 | font-family: @ini_mono_fonts;
97 | font-size: 11pt;
98 | }
99 | #link__wiz #link__wiz_entry:focus {
100 | outline: @ini_focus_color solid 2px;
101 | }
102 |
103 | #link__wiz_result {
104 | background-color: @ini_background;
105 | width: ~"calc(100% - 2px)";
106 | height: ~"calc(100% - 68px)";
107 | overflow: auto;
108 | border: 1px solid @ini_border;
109 | margin: 3px auto;
110 | text-align: left;
111 | font-size: medium;
112 | line-height: 1em;
113 | }
114 | [dir=rtl] #link__wiz_result {
115 | text-align: right;
116 | }
117 |
118 | #link__wiz_result div {
119 | padding: 3px 3px 3px 0;
120 | }
121 |
122 | #link__wiz_result div a {
123 | display: block;
124 | padding-left: 1.3em;
125 | min-height: 16px;
126 | background: transparent 3px center no-repeat;
127 | background-size: 1em;
128 | }
129 | [dir=rtl] #link__wiz_result div a {
130 | padding: 3px 22px 3px 3px;
131 | background-position: 257px 3px;
132 | }
133 |
134 | #link__wiz_result div.type_u a:link,
135 | #link__wiz_result div.type_u a:visited {
136 | background-image: url(./images/editor/browse-parent.svg);
137 | color: @ini_link;
138 | }
139 | #link__wiz_result div.type_f a {
140 | background-image: url(./images/editor/browse-link.svg);
141 | }
142 | #link__wiz_result div.type_d a:link,
143 | #link__wiz_result div.type_d a:visited {
144 | background-image: url(./images/editor/browse-folder.svg);
145 | color: @ini_link;
146 | }
147 |
148 | #link__wiz_result div.even {
149 | background-color: @ini_background_neu;
150 | }
151 |
152 | #link__wiz_result div.selected {
153 | background-color: @ini_background_alt;
154 | }
155 |
156 | #link__wiz_result span {
157 | display: block;
158 | color: @ini_text_neu;
159 | margin-left: 22px;
160 | }
161 |
162 | #link__wiz .ui-button {
163 | background-color: transparent;
164 | border-color: transparent;
165 | }
166 |
167 | #link__wiz .ui-icon-closethick {
168 | background: transparent url(images/editor/close.svg) center no-repeat;
169 | background-size: 16px;
170 | }
171 |
172 | /* media option wizard (opens when inserting media in the media popup)
173 | ********************************************************************/
174 |
175 | #media__popup {
176 | /* for backwards compatibility (not needed since Rincewind) */
177 | display: none;
178 | }
179 |
180 | #media__popup_content p {
181 | margin: 0 0 .5em;
182 | }
183 |
184 | #media__popup_content label {
185 | margin-right: .5em;
186 | cursor: default;
187 | }
188 |
189 | #media__popup_content button {
190 | margin-right: 1px;
191 | cursor: pointer;
192 | }
193 |
194 | /* dark mode overrides */
195 | @media (prefers-color-scheme: dark) {
196 | body.darkmode {
197 |
198 | .ui-state-default,
199 | .ui-widget-content .ui-state-default,
200 | .ui-widget-header .ui-state-default,
201 | .ui-button,
202 | html .ui-button.ui-state-disabled:hover,
203 | html .ui-button.ui-state-disabled:active {
204 | border-color: @ini_text_alt_dark;
205 | background: @ini_background_dark;
206 | color: @ini_text_dark;
207 | }
208 |
209 | .ui-state-active,
210 | .ui-widget-content .ui-state-active,
211 | .ui-widget-header .ui-state-active,
212 | a.ui-button:active,
213 | .ui-button:active,
214 | .ui-button.ui-state-active:hover {
215 | border-color: @ini_text_alt_dark;
216 | background-color: @ini_background_alt_dark;
217 | color: @ini_text_alt_dark;
218 | }
219 |
220 | #link__wiz {
221 | background-color: @ini_background_dark;
222 | border-color: @ini_border_dark;
223 | }
224 | #link__wiz .ui-widget-header {
225 | background: @ini_background_alt_dark none;
226 | border-color: @ini_border_dark;
227 | }
228 | #link__wiz .ui-widget-header .ui-dialog-title {
229 | color: @ini_headlines_dark;
230 | }
231 | #link__wiz #link__wiz_entry {
232 | border-color: @ini_border_dark;
233 | background-color: @ini_background_alt_dark;
234 | color: @ini_text_dark;
235 | }
236 | #link__wiz_result div.type_u a:link,
237 | #link__wiz_result div.type_u a:visited,
238 | #link__wiz_result div.type_u a:link,
239 | #link__wiz_result div.type_u a:visited {
240 | color: @ini_link_dark;
241 | }
242 | #link__wiz button.ui-dialog-titlebar-close {
243 | border-color: @ini_border_dark;
244 | }
245 | #link__wiz .ui-icon-closethick {
246 | background-color: @ini_background_dark;
247 | }
248 |
249 | #link__wiz_result {
250 | background-color: rgba(0,0,0,.2);
251 | border-color: @ini_border_dark;
252 | }
253 | #link__wiz_result div.even {
254 | background-color: @ini_background_dark;
255 | }
256 | }
257 | }
--------------------------------------------------------------------------------
/css/design.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides the main design styles for the
3 | * bits that surround the content.
4 | *
5 | * @author Anika Henke
6 | * @author Andreas Gohr
7 | * @author Clarence Lee
8 | */
9 |
10 | .dokuwiki.export {
11 | background-color: @ini_background;
12 | }
13 |
14 | /* header
15 | ********************************************************************/
16 |
17 | #dokuwiki__header {
18 | padding: 2em 0 1.5em;
19 |
20 | .headings,
21 | .tools {
22 | margin-bottom: 1.5em;
23 | width: 49%;
24 | }
25 | .tools {
26 | margin-top: .2em;
27 | }
28 |
29 | .logo {
30 | margin: 0;
31 | font-size: 1.5em;
32 | font-weight: normal;
33 | line-height: 1.2;
34 |
35 | img {
36 | float: left;
37 | margin-right: .5em;
38 | }
39 |
40 | span {
41 | display: block;
42 | padding-top: 10px;
43 | }
44 |
45 | a {
46 | text-decoration: none;
47 | color: @ini_text;
48 | background-color: inherit;
49 | }
50 | }
51 |
52 | p.claim {
53 | margin-bottom: 0;
54 | font-size: 0.875em;
55 | }
56 |
57 | /* make all links in header (including breadcrumb and interwiki) same colour as the rest */
58 | a {
59 | color: @ini_link;
60 | background-color: inherit;
61 | }
62 | }
63 |
64 | [dir=rtl] #dokuwiki__header .logo img {
65 | float: right;
66 | margin-left: .5em;
67 | margin-right: 0;
68 | }
69 |
70 | /* tools
71 | ********************************************************************/
72 |
73 | /* highlight selected tool */
74 | .mode_admin .action.admin a,
75 | .mode_login .action.login a,
76 | .mode_register .action.register a,
77 | .mode_profile .action.profile a,
78 | .mode_recent .action.recent a,
79 | .mode_index .action.index a,
80 | .mode_media .action.media a,
81 | .mode_revisions .action.revs a,
82 | .mode_backlink .action.backlink a,
83 | .mode_subscribe .action.subscribe a {
84 | font-weight: bold;
85 | }
86 |
87 | #dokuwiki__header .tools {
88 | ul {
89 | padding-left: 0;
90 | margin-bottom: 0;
91 | }
92 |
93 | li {
94 | font-size: 0.875em;
95 | margin-left: 1em;
96 | list-style: none;
97 | display: inline;
98 | }
99 |
100 | form.search div.ajax_qsearch li {
101 | font-size: 1em;
102 | margin-left: 0;
103 | display: block;
104 | overflow: hidden;
105 | text-overflow: ellipsis;
106 | }
107 | }
108 |
109 | [dir=rtl] #dokuwiki__header .tools li {
110 | margin-right: 1em;
111 | margin-left: 0;
112 | }
113 |
114 | #dokuwiki__header .mobileTools {
115 | display: none; /* hide mobile tools dropdown to only show in mobile view */
116 | }
117 |
118 | /*____________ site tools ____________*/
119 |
120 | #dokuwiki__sitetools {
121 | & {
122 | text-align: right;
123 | }
124 | form.search {
125 | font-size: 0.875em;
126 | }
127 | }
128 |
129 | [dir=rtl] #dokuwiki__sitetools {
130 | text-align: left;
131 | }
132 |
133 | form.search {
134 | display: block;
135 | position: relative;
136 | margin-bottom: 0.5em;
137 |
138 | input {
139 | /* width: 18em; */
140 | padding: .35em 22px .35em .1em;
141 | }
142 |
143 | button {
144 | background: transparent url(images/search.png) no-repeat 0 0;
145 | background-size: 16px;
146 | border-width: 0;
147 | width: 16px;
148 | height: 16px;
149 | text-indent: -99999px;
150 | margin-left: -28px;
151 | box-shadow: none;
152 | padding: 0;
153 | }
154 | }
155 |
156 | [dir=rtl] form.search {
157 | input {
158 | padding: .35em .1em .35em 22px;
159 | }
160 |
161 | button {
162 | background-position: 5px 0;
163 | margin-left: 0;
164 | margin-right: -20px;
165 | position: relative;
166 | }
167 | }
168 |
169 | /*____________ breadcrumbs ____________*/
170 |
171 | .dokuwiki div.breadcrumbs {
172 | border-top: 1px solid @ini_border;
173 | border-bottom: 1px solid @ini_background;
174 | margin-bottom: .5em;
175 | font-size: 0.875em;
176 | clear: both;
177 |
178 | div {
179 | padding: .1em .35em;
180 | }
181 |
182 | div:only-child {
183 | border-top: 1px solid @ini_background;
184 | border-bottom: 1px solid @ini_border;
185 | }
186 |
187 | div:first-child {
188 | border-top: 1px solid @ini_background;
189 | }
190 |
191 | div:last-child {
192 | border-bottom: 1px solid @ini_border;
193 | }
194 |
195 | .bcsep {
196 | font-size: 0.75em;
197 | }
198 | }
199 |
200 | /* sidebar
201 | ********************************************************************/
202 |
203 | .dokuwiki .aside {
204 | font-size: 0.875em;
205 | overflow: hidden;
206 | word-wrap: break-word;
207 |
208 | /* make sidebar more condensed */
209 |
210 | h1 {
211 | font-size: 1.714em;
212 | margin-bottom: .292em;
213 | }
214 |
215 | h2 {
216 | margin-bottom: .333em;
217 | }
218 |
219 | h3 {
220 | margin-bottom: .444em;
221 | }
222 |
223 | h4 {
224 | margin-bottom: .5em;
225 | }
226 |
227 | h5 {
228 | margin-bottom: .5714em;
229 | }
230 |
231 | p,
232 | ul,
233 | ol,
234 | dl,
235 | pre,
236 | table,
237 | fieldset,
238 | hr,
239 | blockquote,
240 | address {
241 | margin-bottom: .7em;
242 | }
243 |
244 | ul,
245 | ol {
246 | padding-left: .5em;
247 | }
248 |
249 | li ul,
250 | li ol {
251 | margin-bottom: 0;
252 | padding: 0;
253 | }
254 |
255 | a:link,
256 | a:visited {
257 | color: @ini_link;
258 | background-color: inherit;
259 | }
260 | }
261 |
262 | [dir=rtl] .dokuwiki .aside ul,
263 | [dir=rtl] .dokuwiki .aside ol {
264 | padding-right: .5em;
265 | }
266 |
267 | /* content
268 | ********************************************************************/
269 |
270 | .dokuwiki .pageId {
271 | float: right;
272 | margin-right: -1em;
273 | margin-bottom: -1px;
274 | margin-top: -1.5em;
275 | overflow: hidden;
276 | padding: 0.5em 1em 0;
277 |
278 | span {
279 | font-size: 0.875em;
280 | border: solid @ini_background_alt;
281 | border-width: 1px 1px 0;
282 | background-color: @ini_background;
283 | color: @ini_text_alt;
284 | padding: .1em .35em;
285 | border-top-left-radius: 2px;
286 | border-top-right-radius: 2px;
287 | box-shadow: 0 0 .5em @ini_text_alt;
288 | display: block;
289 | }
290 | }
291 |
292 | .dokuwiki div.page {
293 | clear: both;
294 | background: @ini_background;
295 | color: inherit;
296 | border: 1px solid @ini_background_alt;
297 | box-shadow: 0 0 .5em @ini_text_alt;
298 | border-radius: 2px;
299 | padding: 1.556em 2em 2em;
300 | margin-bottom: .5em;
301 | overflow: hidden;
302 | word-wrap: break-word;
303 | }
304 |
305 | .dokuwiki .docInfo {
306 | font-size: 0.875em;
307 | text-align: right;
308 | overflow-wrap: break-word;
309 | }
310 |
311 | /* license note under edit window */
312 | .dokuwiki div.license {
313 | font-size: small;
314 | line-height: 1.5em;
315 | padding: 3pt;
316 | background-color: @ini_background_alt;
317 | border: @ini_border solid 1px;
318 | }
319 |
320 | [dir=rtl] .dokuwiki .docInfo {
321 | text-align: left;
322 | }
323 |
324 | [dir=rtl] .dokuwiki .pageId {
325 | float: left;
326 | margin-left: -1em;
327 | margin-right: 0;
328 | }
329 |
330 | /* footer
331 | ********************************************************************/
332 |
333 | .dokuwiki .wrapper {
334 | margin-bottom: 1.4em;
335 | }
336 |
337 | #dokuwiki__footer {
338 | margin-bottom: 1em;
339 | text-align: center;
340 |
341 | > .pad {
342 | font-size: 0.875em;
343 | }
344 |
345 | div.license {
346 | margin-bottom: 0.5em;
347 | font-size: 100%;
348 | }
349 |
350 | div.buttons a {
351 | img {
352 | opacity: 0.5;
353 | }
354 |
355 | &:hover img,
356 | &:active img,
357 | &:focus img {
358 | opacity: 1;
359 | }
360 | }
361 |
362 | }
363 |
364 | [dir=rtl] #dokuwiki__footer .license img {
365 | margin: 0 0 0 .5em;
366 | }
367 |
368 | /* dark mode overrides */
369 | @media (prefers-color-scheme: dark) {
370 | body.darkmode div.license {
371 | background-color: @ini_background_alt_dark;
372 | border-color: @ini_border_dark;
373 | }
374 | }
--------------------------------------------------------------------------------
/css/_admin.less:
--------------------------------------------------------------------------------
1 |
2 | /* indicate special modes by using a different background and border */
3 | body.mode_admin {
4 | main {
5 | & {
6 | background-color: @ini_background_alt;
7 | border: @ini_text_alt solid 2px;
8 | color: @ini_text_alt;
9 | }
10 | #toc {
11 | background-color: @ini_background_alt;
12 | }
13 | #navYouAreHere {
14 | background-color: @ini_background;
15 | padding: .25em .25em 0 .25em;
16 | border-radius: .25em;
17 | border: @ini_text_alt solid 2px;
18 | }
19 | table th {
20 | background-color: @ini_background_neu;
21 | }
22 | }
23 | div.ui-admin {
24 |
25 | & {
26 | display: grid;
27 | grid-template-columns: 1fr 1fr;
28 | }
29 |
30 | h1.first-child,
31 | div.level1 {
32 | grid-column: 1 / span 2;
33 | margin-bottom: 1em;
34 | }
35 |
36 | /* main task grouped in two columns */
37 | ul.admin_tasks {
38 | grid-column: 2;
39 | list-style-type: none;
40 | font-size: 1.125em;
41 | margin: 0;
42 | }
43 | ul.admin_tasks:first-of-type {
44 | grid-row: 3 / span 4;
45 | grid-column: 1;
46 | }
47 | ul.admin_plugins {
48 | grid-row: 6;
49 | grid-column: 2;
50 | }
51 |
52 | /* general menu item styling */
53 | ul {
54 | padding: 0;
55 | li {
56 | margin: 0 0 1em 0;
57 | font-weight: bold;
58 | list-style-type: none;
59 | white-space: nowrap;
60 |
61 | a {
62 | display: flex;
63 | span {
64 | display: inline-block;
65 |
66 | &.icon {
67 | width: 1.5em;
68 | min-height: 1.5em;
69 | margin: 0 0.5em;
70 | vertical-align: top;
71 |
72 | svg {
73 | width: 1.5em;
74 | height: 1.5em;
75 | fill: @ini_link;
76 | display: inline-block;
77 | path {
78 | fill: @ini_link;
79 | }
80 | }
81 | }
82 |
83 | &.prompt {
84 | white-space: normal;
85 | }
86 | }
87 | }
88 | }
89 | }
90 |
91 | /* Security Warning */
92 | #security__check {
93 | clear: both;
94 | grid-row: 7;
95 | grid-column: 1 / span 2;
96 | }
97 |
98 | /* DokuWiki version */
99 | #admin__version {
100 | display: block;
101 | box-sizing: border-box;
102 | width: 100%;
103 | max-height: 7em;
104 | overflow: auto;
105 | color: @ini_text_neu;
106 | background: @ini_background_neu url('images/info.svg') .25em .5em no-repeat;
107 | background-size: 1em;
108 | padding: .25em 0 .25em 1.75em;
109 | border: @ini_border 1px solid;
110 | border-radius: .25em;
111 | box-shadow: inset .5pt .5pt 1pt #00000088;
112 | grid-row: 9;
113 | grid-column: 1 / span 2;
114 | }
115 | }
116 |
117 | /* user manager: */
118 | #user__manager {
119 | button {
120 | & {
121 | background-color: @ini_background;
122 | border: @ini_text solid 1px;
123 | border-radius: .25em;
124 | padding: .25em .5em;
125 | cursor: pointer;
126 | }
127 | usrmgr__del {
128 | background-color: #fcd;
129 | color: @ini_text;
130 | }
131 | &[name="fn[add]"] {
132 | background-color: #cdf;
133 | color: @ini_text;
134 | }
135 | &[name="fn[start]"] {
136 | border-radius: .5em 0 0 .5em;
137 | }
138 | &[name="fn[prev]"],
139 | &[name="fn[next]"] {
140 | border-radius: 0;
141 | border-left-width: 0;
142 | }
143 | &[name="fn[last]"] {
144 | border-radius: 0 .5em .5em 0;
145 | border-left-width: 0;
146 | }
147 | }
148 | }
149 |
150 | /* extensions manager */
151 | #extension__list {
152 | ul.extensionList {
153 | li {
154 | padding: .25em .5em;
155 | border: transparent dashed 2pt;
156 | border-radius: .25em;
157 | }
158 | li.update {
159 | border-color: @ini_focus_color;
160 | }
161 | }
162 |
163 | .legend a.info, .legend a.info.close {
164 | width: 22px;
165 | height: 22px;
166 | background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11 9H13V7H11M12 20C7.59 20 4 16.41 4 12C4 7.59 7.59 4 12 4C16.41 4 20 7.59 20 12C20 16.41 16.41 20 12 20M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22A10 10 0 0 0 22 12A10 10 0 0 0 12 2M11 17H13V11H11V17Z' style='fill:%23ADADB3'/%3E%3C/svg%3E") center no-repeat;
167 | background-size: 24px;
168 | border-radius: 50%;
169 | margin-bottom: .5em;
170 | }
171 |
172 | /* git warnings */
173 | .actions {
174 | p.permerror {
175 | border: #D99C3C solid 1px;;
176 | background-color: #FBF0C4;
177 | background-position: 1px 1px;
178 | border-radius: 2pt;
179 | padding: 1.5px 1pt 0 22px;
180 | }
181 | .available {
182 | border: #6EC247 solid 1px;
183 | background-color: #C4FEB8;
184 | padding: 1pt;
185 | border-radius: 2pt;
186 | }
187 | }
188 |
189 | /* extensions manager */
190 | section.extension {
191 |
192 | & {
193 | padding: .5rem;
194 | border: @ini_border solid 1pt;
195 | border-radius: .5rem .25rem .25rem .5rem;
196 | border-left: .5rem solid darken(@ini_border, 20%);
197 | align-items: start;
198 | }
199 | &.enabled {
200 | border-left-color: #0085F2;
201 | }
202 | &.disabled {
203 | border-left-color: @ini_border;
204 | }
205 | &.update {
206 | border-left-color: #B71C1C;
207 | }
208 |
209 | /* elements */
210 | h2 {
211 | margin: 0; padding: 0;
212 | }
213 |
214 | /* notices */
215 | & > .notices {
216 | li.info {
217 | background-image: none;
218 | }
219 | li.warning {
220 | border: #D99C3C solid 1px;;
221 | background-color: #FEA;
222 | border-radius: 2pt;
223 | padding: 0 1pt 2pt 0;
224 | margin-bottom: 1.5pt;
225 | }
226 | li.error {
227 | border: #F33 solid 1px;;
228 | background-color: #FFDADA;
229 | border-radius: 2pt;
230 | padding: 0 1pt 2pt 0;
231 | margin-bottom: 1.5pt;
232 | }
233 | span.icon {
234 | align-self: flex-start;
235 | margin: 1pt 0 0 1pt;
236 | }
237 | }
238 | }
239 | }
240 |
241 | }
242 |
243 | /* style the extension manager items: */
244 | body.dokuwiki #extension__manager {
245 | form.install { box-sizing: border-box; width: 100%; padding: 1em 2em; background-color: #EEE; }
246 | form.install .block { text-align: left; width: 100% }
247 | form.install input[name=installurl] {
248 | font-family: @ini_mono_fonts;
249 | padding: .25em .25em .25em 24px;
250 | border-radius: 10px;
251 | background: @ini_background_site url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAABdklEQVR4AWMgAVRo1zY3rGk41rC+rqvCBCJWBpPM4WoomLHtdtuv/t9Lfk263TtrQ0t7Oj9cbzZDc/W6s/8T7khD+P+F/8bv29PZlswJVVBu0vPuVZyNYHFZbmAqE1SR0cbjXR6pjGBO58am962Ta3e3ftqy6B5LCcMasOj7gInrm9jBzI4vTX+bfjT/7/4/p/w/zFXybUmt71u4wJzGfxP/t/xvA+KaP2XnQSKVFpWPav/U/6+HKJjz++OVJUDp1n9N/+r+19QyMCz1mPC/8X/X/26Igrn3GiUeL5n/v+F/8//6/9NOMTC0hDUDefP/L4MoOL6ickVeSQ1QqAGooPdBJE/lnloge/fhixBHftFd9bLkR83/+n/1QAXVP8qX1Pyv/L/s/12f/4xQNz8s3Pa/6X/Vvzqgour/5f/r/q//f2fmLy54WP7lfJN74eMSoKIyoNFz/5/+9ar+Px9aZL3Xfjvz7aO3/96+eLvsnSVE7CPhOAYA9nvIX0UoNU8AAAAASUVORK5CYII=') 3px center no-repeat;
252 | width: calc(100% - 6em);
253 | }
254 | form.install input[name=overwrite] { width: auto; margin-left: 2em;}
255 | form.install button[type=submit] {
256 | border: #CCC solid 1.5pt;
257 | padding: .5em .75em;
258 | background-color: #cdf;
259 | }
260 | form.install button[type=submit]::before {
261 | content: ' ';
262 | display: inline-block;
263 | position: relative;
264 | top: .1em;
265 | width: 1em;
266 | height: 1em;
267 | background: transparent url('images/editor/edit-save.svg') center bottom no-repeat;
268 | margin-right: .25em;
269 | }
270 | }
271 |
272 | /* dark mode overrides */
273 | @media (prefers-color-scheme: dark) {
274 | body.darkmode.mode_admin {
275 | main {
276 | & {
277 | background-color: @ini_background_alt_dark;
278 | border-color: @ini_text_alt_dark;
279 | color: @ini_text_alt_dark;
280 | }
281 | #toc {
282 | background-color: @ini_background_alt_dark;
283 | border-left: @ini_text_alt_dark solid .5pt;;
284 | }
285 | #navYouAreHere {
286 | background-color: @ini_background_dark;
287 | border-color: @ini_text_alt_dark;
288 | }
289 | }
290 |
291 | #extension__manager form.install { background-color: #39393D; }
292 | #extension__manager form.install button[type=submit] {
293 | color: #CDF;
294 | background-color: #346;
295 | border-color: #90909B;
296 | }
297 | #extension__manager form.install button[type=submit]::before { filter: invert(.9); }
298 | div.ui-admin #admin__version {
299 | color: @ini_text_neu_dark;
300 | background-color: @ini_background_neu_dark;
301 | }
302 |
303 | div.ui-admin ul li a span.icon {
304 | svg {
305 | & { fill: @ini_link_dark; }
306 | path { fill: @ini_link_dark; }
307 | }
308 | }
309 |
310 | /* Extension Manager: */
311 | #extension__manager{
312 | .panelHeader { background-color: @ini_background_alt_dark; }
313 | ul.tabs li a { background-color: @ini_background_dark; border-color: @ini_border_dark; color: @ini_text_dark }
314 | ul.tabs li.active a { background-color: @ini_background_alt_dark; border-color: @ini_text_dark; }
315 | tr .input, tr.default .input { color: @ini_text_dark; }
316 | }
317 | #extension__list {
318 | ul.extensionList li { color: @ini_text_dark; }
319 | .actions {
320 | p.permerror {
321 | border-color: #86560A;
322 | background-color: #4D3F04;
323 | }
324 | .available {
325 | border-color: #4F7A0B;
326 | background-color: #333E03;
327 | }
328 | }
329 | section.extension > .notices {
330 | li.warning {
331 | border-color: #86560A;
332 | background-color: #4D3F04;
333 | }
334 | li.error {
335 | border-color: #A62A2A;
336 | background-color: #360505;
337 | }
338 | }
339 | ul.extensionList li.update {
340 | border-color: @ini_focus_color_dark;
341 | }
342 | }
343 | }
344 | }
345 |
346 | /* below tablet size */
347 | @media (max-width: @ini_tablet_width) {
348 | body.dokuwiki div.ui-admin { display: block; }
349 | }
--------------------------------------------------------------------------------
/script.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Page scripts for Ad Hominem Info Template
3 | *
4 | * @author Sascha Leib
5 | * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
6 | */
7 |
8 | /* everything is contained in the $p namespace: */
9 | $p = {
10 |
11 | /* called to initialize the entire script */
12 | init: function() {
13 |
14 | $p.cookie_banner.init();
15 | $p.linkinfo.init();
16 | $p.search.init();
17 | $p.togglers.init();
18 | $p.langMenu.init();
19 | },
20 |
21 | /* link information */
22 | linkinfo: {
23 | init: function() {
24 |
25 | // write a warning to the console for wrong BASEDIR settings:
26 | if (typeof BASEDIR !== 'string') {
27 | console.warn("Ad-Hominem Template: BASEDIR not set, assuming '/'!");
28 | } else if (BASEDIR.substring(0,1) !== '/') {
29 | console.warn("Ad-Hominem Template: BASEDIR does not start with a slash, this may cause problems.");
30 | }
31 |
32 | /* find all links in the main section */
33 | var main = document.getElementById("main-layout");
34 | var al = main.getElementsByTagName("a");
35 | Array.prototype.forEach.call(al, function (a) {
36 |
37 | Object.entries($p.linkinfo._restURLs).forEach((c) => {
38 | var cls = c[0];
39 | if (a.classList.contains(cls)) {
40 | a.addEventListener('mouseover', $p.linkinfo._linkHoverCallback);
41 | }
42 | });
43 | });
44 | },
45 |
46 | /* pre-defined REST API URLs for different sites. */
47 | /* variables are enclosed in %, allowed vars are: */
48 | /* - basedir = this site's basedir (e.g. "/"), */
49 | /* - id = the data id of the link (internal only) */
50 | /* - ln = the link name (e.g. for Wikipedia links) */
51 | /* types can be 'internal', 'wikimedia', or 'ahtpl' */
52 | /* for other sites using this template. */
53 | _restURLs : {
54 | 'wikilink1' : {
55 | url: '%basedir%lib/tpl/ad-hominem/rest/pageinfo.php?id=%id%&v=preview',
56 | type:'internal'
57 | },
58 | 'iw_wp' : {
59 | url:'https://en.wikipedia.org/api/rest_v1/page/summary/%id%',
60 | type:'wikimedia'
61 | },
62 | 'iw_wpfr' : {
63 | url:'https://fr.wikipedia.org/api/rest_v1/page/summary/%id%',
64 | type:'wikimedia'
65 | },
66 | 'iw_wpde' : {
67 | url:'https://de.wikipedia.org/api/rest_v1/page/summary/%id%',
68 | type:'wikimedia'
69 | },
70 | 'iw_wpes' : {
71 | url:'https://es.wikipedia.org/api/rest_v1/page/summary/%id%',
72 | type:'wikimedia'
73 | },
74 | 'iw_wppl' : {
75 | url:'https://pl.wikipedia.org/api/rest_v1/page/summary/%id%',
76 | type:'wikimedia'
77 | },
78 | 'iw_wpja' : {
79 | url:'https://it.wikipedia.org/api/rest_v1/page/summary/%id%',
80 | type:'wikimedia'
81 | },
82 | 'iw_wpru' : {
83 | url:'https://ru.wikipedia.org/api/rest_v1/page/summary/%id%',
84 | type:'wikimedia'
85 | },
86 | 'iw_meta' : {
87 | url:'https://meta.wikipedia.org/api/rest_v1/page/summary/%id%',
88 | type:'wikimedia'
89 | },
90 | 'iw_fo' : {
91 | url:'https://fallacies.online/wiki/lib/tpl/ad-hominem/rest/pageinfo.php?id=%id%&v=preview',
92 | base:'https://fallacies.online/wiki/',
93 | type:'ahtpl'
94 | },
95 | 'iw_dfo' : {
96 | url:'https://denkfehler.online/wiki/lib/tpl/ad-hominem/rest/pageinfo.php?id=%id%&v=preview',
97 | base:'https://denkfehler.online/wiki/',
98 | type:'ahtpl'
99 | }
100 | },
101 | /* note: this covers the internal links and the most common
102 | wikipedia lang versions. If you know about any other
103 | relevant sites to be added here, let the author of this
104 | template know (ad@hominem.info) */
105 |
106 | /* TODO: mechanism to dynamically add sites by site admin */
107 |
108 | /* callback for the onhover event of links: */
109 | _linkHoverCallback: function(evt) {
110 |
111 | var a = jQuery(this);
112 | var hi = jQuery.data(this, 'has-info');
113 | var href = jQuery(this).attr('href');
114 | var wid = null;
115 | var url = null;
116 | var type = '';
117 |
118 | /* only if the info hasn't been set yet: */
119 | if (hi == undefined || hi == '') {
120 |
121 | // remember that we are now working on the link:
122 | jQuery.data(this, 'has-info', '0');
123 |
124 | // find the URL to query:
125 | try {
126 | for (var cls in $p.linkinfo._restURLs) {
127 | if (a.hasClass(cls)) {
128 | url = $p.linkinfo._restURLs[cls].url;
129 | type = $p.linkinfo._restURLs[cls].type;
130 | break;
131 | }
132 | };
133 | } catch (err) {
134 | console.error(err);
135 | }
136 |
137 | /* get the ID to request: */
138 | switch(type) {
139 |
140 | case 'internal': // internal links
141 | url = url.replace('%basedir%', (typeof BASEDIR!=='undefined'?BASEDIR:'/'));
142 | wid = jQuery(this).data('wiki-id');
143 | break;
144 | case 'wikimedia': // wikipedia sites
145 | wid = href.substring(href.lastIndexOf('/')+1);
146 | break;
147 | case 'ahtpl': // Other sites with this template
148 | wid = href.substring($p.linkinfo._restURLs[cls].base.length).replaceAll('/', ':');
149 | break;
150 | default: // unknown -> skip
151 | return;
152 | }
153 |
154 | // URL & ID found?
155 | if (url !== null && typeof wid !== 'undefined') {
156 |
157 | /* load the page info */
158 | jQuery.ajax({
159 | url: url.replace('%id%', encodeURIComponent(wid)),
160 | context: a,
161 | dataType: 'json',
162 | crossDomain: true,
163 | error: function(xhr, msg, e) {
164 | console.error("Ajax Error:", msg);
165 | },
166 | success: function(data, msg, xhr) {
167 | // build the new title for the element:
168 | if (typeof data.title !== 'undefined') {
169 | jQuery(this).attr('title', data.title + "\n" + data.extract);
170 | jQuery.data(this, 'has-info', '1');
171 | }
172 | },
173 | complete: function() {
174 | if (jQuery.data(this, 'has-info') == '0') {
175 | jQuery.removeData(this, 'has-info');
176 | }
177 | }
178 | });
179 | }
180 | }
181 | }
182 | },
183 |
184 | /* anything related to the search */
185 | search: {
186 |
187 | /* initializer */
188 | init: function() {
189 | $p.search.gui.init();
190 | },
191 |
192 | /* the search gui */
193 | gui: {
194 |
195 | _container: null,
196 | _elements: { field: null, clear: null, search: null },
197 |
198 | /* init the gui */
199 | init: function() {
200 |
201 | try {
202 |
203 | /* find all the search elements: */
204 | var form = document.getElementById('dw__search');
205 |
206 | var div = form.getElementsByClassName('search-field')[0];
207 | $p.search.gui._container = div;
208 |
209 | var field = div.getElementsByTagName('input')[0];
210 | $p.search.gui._elements.field = field;
211 | field.addEventListener('focus', $p.search.gui.__elementFocus);
212 | field.addEventListener('blur', $p.search.gui.__elementBlur);
213 |
214 | var buttons = div.getElementsByTagName('button');
215 | Array.prototype.forEach.call(buttons, function(b) {
216 | var type = b.getAttribute('type');
217 | if (type == 'reset') {
218 | $p.search.gui._elements.clear = b;
219 | } else if (type == 'submit') {
220 | $p.search.gui._elements.search = b;
221 | }
222 | b.addEventListener('focus', $p.search.gui.__elementFocus);
223 | b.addEventListener('blur', $p.search.gui.__elementBlur);
224 | });
225 |
226 | } catch (e) {
227 | console.warn("Can’t initialize search form.");
228 | console.error(e);
229 | }
230 | },
231 |
232 | /* call back for fields */
233 | __elementFocus: function() {
234 | $p.search.gui._container.classList.add("focus");
235 | },
236 | __elementBlur: function() {
237 | $p.search.gui._container.classList.remove("focus");
238 |
239 | }
240 | }
241 | },
242 |
243 | /* expaning sections, for menus, etc. */
244 | togglers: {
245 |
246 | /* initialize togglers */
247 | init: function() {
248 |
249 | const togglers = document.getElementsByClassName("toggle");
250 |
251 | Array.prototype.forEach.call(togglers, function(t) {
252 |
253 | /* add default state */
254 | if (!(t.classList.contains('show') || (t.classList.contains('hide')))) {
255 | t.classList.add('auto');
256 | }
257 |
258 | /* add a callback to the toggler buttons */
259 | var btn = t.getElementsByClassName('tg_button');
260 | Array.prototype.forEach.call(btn, function(b) {
261 | b.addEventListener('click', $p.togglers._buttonCallback);
262 | b.classList.add('active');
263 | });
264 |
265 | });
266 | },
267 |
268 | /* callback for the toggler button click */
269 | _buttonCallback: function() {
270 |
271 | var t = this.parentNode;
272 |
273 | /* current state of the toggler: */
274 | var state = 'auto';
275 | if (t.classList.contains('show')) state = 'show';
276 | if (t.classList.contains('hide')) state = 'hide';
277 | if (t.classList.contains('alt')) state = 'alt';
278 |
279 | /* set new state: */
280 | var newState = 'alt';
281 | if (state == 'show') { newState = 'hide' }
282 | else if (state == 'hide') { newState = 'show' }
283 | else if (state == 'alt') { newState = 'auto' }
284 |
285 | t.classList.remove(state);
286 | t.classList.add(newState);
287 |
288 | }
289 | },
290 |
291 | /* the language menu, if present */
292 | langMenu: {
293 | /* initialize lang menu */
294 | init: function() {
295 |
296 | const langMenu = document.getElementById('langButton');
297 | if (langMenu) {
298 | jQuery(langMenu).click($p.langMenu._btnCallback);
299 | }
300 | },
301 |
302 | _btnCallback: function(e) {
303 |
304 | const btn = e.currentTarget;
305 | if (btn) {
306 | const menuId = btn.getAttribute('aria-controls');
307 | const expanded = (btn.getAttribute('aria-expanded') == 'true');
308 | if (menuId) {
309 | const menu = document.getElementById(menuId);
310 | if (menu) {
311 | if (expanded) {
312 | jQuery(menu).hide();
313 | btn.setAttribute('aria-expanded', 'false')
314 | } else {
315 | jQuery(menu).show();
316 | btn.setAttribute('aria-expanded', 'true')
317 | }
318 | }
319 | }
320 | }
321 | }
322 |
323 | },
324 | /* Cookies info banner */
325 | cookie_banner: {
326 |
327 | /* initialize Cookies info banner */
328 | init: function() {
329 |
330 | // find the cookiebanner elements:
331 | var btn = jQuery('#cookiebanner button');
332 |
333 | var cookie = jQuery.cookie('cookielaw');
334 |
335 | if ( (cookie !== '1') && (btn.length >= 1) ) { // if found only
336 |
337 | // assign callback:
338 | jQuery(btn).click($p.cookie_banner._buttonCallback);
339 |
340 | // show the banner
341 | jQuery('#cookiebanner').show();
342 |
343 | // set focus:
344 | jQuery(btn).first().focus();
345 | }
346 | },
347 |
348 | /* callback for the "OK" button */
349 | _buttonCallback: function() {
350 |
351 | const date = new Date();
352 | date.setFullYear(date.getFullYear() + 1);
353 |
354 | var path = ( typeof BASEDIR !== 'undefined' ? BASEDIR : '/');
355 |
356 | document.cookie = 'cookielaw=1; path=' + path + '; expires=' + date.toUTCString() + '; SameSite=Lax';
357 | jQuery('#cookiebanner').remove();
358 | }
359 | }
360 | };
361 |
362 | /* load the script when the DOM is ready */
363 |
364 | window.addEventListener("DOMContentLoaded", $p.init);
365 |
--------------------------------------------------------------------------------
/css/_edit.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides styles for the edit view (?do=edit), preview
3 | * and section edit buttons.
4 | */
5 |
6 | /* edit view
7 | ********************************************************************/
8 |
9 | .mode_edit div.editBox {
10 | }
11 |
12 | .mode_edit div.editBox button {
13 | border: #666 solid 1px;
14 | border-radius: 1px;
15 | padding: 3pt 6pt;
16 | margin: 0 2px;
17 | cursor: pointer;
18 | }
19 |
20 | .mode_edit div.editButtons button:hover {
21 | text-decoration: underline;
22 | }
23 | .mode_edit div.editBox button:focus {
24 | outline: @ini_focus_color solid 2px;
25 | background-color: @ini_background;
26 | }
27 |
28 | /*____________ toolbar ____________*/
29 |
30 | .mode_edit .editBox > .toolbar,
31 | .mode_preview .editBox > .toolbar {
32 | display: block;
33 | position: -webkit-sticky;
34 | position: sticky;
35 | top: 0;
36 | background-color: fadeout(@ini_background, 20%);
37 | padding-bottom: 2px;
38 | z-index: 9;
39 | }
40 |
41 |
42 | .mode_edit div.toolbar,
43 | .mode_preview div.toolbar {
44 | display: inline-block;
45 | }
46 | #draft__status {
47 | font-size: small;
48 | color: @ini_text_alt;
49 | background-color: inherit;
50 | }
51 | [dir=rtl] #draft__status {
52 | /* float: left; */
53 | }
54 | #tool__bar {
55 | float: left;
56 | }
57 | [dir=rtl] #tool__bar {
58 | float: right;
59 | }
60 |
61 | #tool__bar button {
62 | background: @ini_background_alt none center no-repeat;
63 | background-size: 20px;
64 | padding: 3pt 5pt 1pt 5pt;
65 | border: @ini_border solid 1px;
66 | margin-right: 2pt;
67 | }
68 | #tool__bar button:hover {
69 | background-color: @ini_background_neu;
70 | }
71 | #tool__bar button[aria-haspopup=true]:after,
72 | #tool__bar button:nth-child(10):after,
73 | #tool__bar button:nth-child(15):after {
74 | content: '';
75 | display: inline-block;
76 | position: absolute;
77 | width: 8px;
78 | height: 8px;
79 | margin-left: -2px;
80 | margin-top: 14px;
81 | background: transparent none center no-repeat;
82 | background-size: 13px;
83 | }
84 |
85 | /* buttons inside of toolbar */
86 | .mode_edit div.toolbar button.toolbutton {
87 | margin: 0;
88 | }
89 | /* picker popups (outside of .dokuwiki) */
90 | div.picker {
91 | width: 300px;
92 | border: 1px solid #CCC;
93 | background-color: #EEE;
94 | color: inherit;
95 | }
96 | /* picker for headlines */
97 | div.picker.pk_hl {
98 | width: auto;
99 | }
100 |
101 | /* buttons inside of picker */
102 | body.dokuwiki div.picker {
103 | button {
104 | &:hover {
105 | background-color: @ini_background_neu;
106 | }
107 | &.pickerbutton,
108 | &.toolbutton {
109 | padding: .1em .35em;
110 | border-width: 0;
111 | }
112 | }
113 | }
114 |
115 | /*____________ edit textarea ____________*/
116 |
117 | .dokuwiki textarea.edit {
118 | width: 100%;
119 | padding: 1px 0 0 2px;
120 | margin-bottom: .5em;
121 | min-height: 52pt;
122 | background-color: #EEE;
123 | font-family: 'Source Code Pro',Menlo,Consolas,'Courier New',Courier,monospace;
124 | font-size: 12pt;
125 | line-height: 17pt;
126 | caret-color: #0078D7;
127 | resize: vertical;
128 | }
129 | .dokuwiki textarea.edit:focus {
130 | outline: transparent none 0;
131 | }
132 |
133 | .dokuwiki textarea::-webkit-scrollbar-track {
134 | background: @ini_background_alt;
135 | }
136 | .dokuwiki textarea::-webkit-scrollbar-thumb {
137 | background: @ini_blockquote;
138 | }
139 | .dokuwiki textarea::-webkit-scrollbar-thumb:hover {
140 | background: @ini_separator;
141 | }
142 | .dokuwiki textarea::-webkit-resizer {
143 | background-color: @ini_background_alt;
144 | background: linear-gradient(135deg, @ini_background_alt 0%, @ini_background_alt 50%, @ini_blockquote 50%, @ini_blockquote 100%);
145 | }
146 |
147 | .dokuwiki textarea { scrollbar-color: @ini_blockquote @ini_background_alt; }
148 |
149 | /*____________ below the textarea ____________*/
150 |
151 | .dokuwiki div.editBar {
152 | display: grid;
153 | grid-template-columns: 320px minmax(500px, 1fr) auto;
154 | align-items: start;
155 | margin-bottom: .5em;
156 | }
157 |
158 | /* size and wrap controls */
159 | #size__ctl {
160 | grid-row: 1;
161 | grid-column: 3;
162 | min-width: 64px;
163 | }
164 | #size__ctl img {
165 | cursor: pointer;
166 | }
167 |
168 | /* edit buttons */
169 | .dokuwiki .editBar .editButtons {
170 | grid-row: 1;
171 | grid-column: 1;
172 | display: grid;
173 | grid-template-columns: 1fr 1fr 1fr;
174 | }
175 | [dir=rtl] .dokuwiki .editBar .editButtons {
176 | margin-right: 0;
177 | margin-left: 1em;
178 | }
179 | .dokuwiki .editBar .editButtons button {
180 | border: #CCC solid 1.5pt;
181 | padding: .25em .5em;
182 | margin: 0 2pt;
183 | }
184 | .dokuwiki .editBar .editButtons button::before {
185 | content: ' ';
186 | display: inline-block;
187 | position: relative;
188 | top: .1em;
189 | width: 1em;
190 | height: 1em;
191 | background: none center bottom no-repeat;
192 | background-size: 1em;
193 | margin-right: 4px;
194 | }
195 |
196 | .dokuwiki .editBar .editButtons button#edbtn__save {
197 | background-color: #ccddff;
198 | }
199 | .dokuwiki .editBar .editButtons button#edbtn__save::before {
200 | background-image: url('images/editor/edit-save.svg');
201 | }
202 | .dokuwiki .editBar .editButtons button#edbtn__preview {
203 | background-color: #ccffdd;
204 | }
205 | .dokuwiki .editBar .editButtons button#edbtn__preview::before {
206 | background-image: url('images/editor/edit-preview.svg');
207 | }
208 | .dokuwiki .editBar .editButtons button[name="do[cancel]"] {
209 | background-color: #ffccdd;
210 | }
211 | .dokuwiki .editBar .editButtons button[name="do[cancel]"]::before {
212 | background-image: url('images/editor/edit-cancel.svg');
213 | }
214 |
215 | /* summary input and minor changes checkbox */
216 | .dokuwiki .editBar .summary {
217 | grid-row: 1;
218 | grid-column: 2;
219 | display: grid;
220 | grid-template-columns: 1fr auto;
221 | line-height: 1em;
222 | padding-top: 2pt;
223 | padding-right: 5pt;
224 | }
225 |
226 | .dokuwiki .editBar .summary #edit__summary {
227 | background-color: @ini_background_alt;
228 | border-color: @ini_border;
229 | color: @ini_text;
230 | border-radius: 3pt;
231 | margin-left: 0;
232 | width: 100%;
233 | }
234 |
235 | .dokuwiki .editBar .summary label {
236 | white-space: nowrap;
237 | }
238 | .dokuwiki .editBar .summary label:last-child {
239 | padding: 2pt 0 2pt 4pt;
240 | }
241 | .dokuwiki .editBar .summary > label:first-child {
242 | display: grid;
243 | grid-template-columns: auto 1fr;
244 | column-gap: 10px;
245 | padding: 2pt 5pt 0 0;
246 | }
247 | .dokuwiki .editBar .summary label span {
248 | font-size: small;
249 | margin: 0 1pt 0 3pt;
250 | }
251 | .dokuwiki .editBar .summary input {
252 | }
253 | /* change background colour if summary is missing */
254 | .dokuwiki .editBar .summary input.missing {
255 | color: @ini_text;
256 | background-color: #ffcccc;
257 | }
258 |
259 | /* toolbar popups */
260 | .dokuwiki div.picker {
261 | & {
262 | background-color: @ini_background_alt;
263 | border: @ini_border solid 1px;
264 | padding: .125rem;
265 | box-shadow: .125rem .125rem .5rem 0 rgba(0,0,0,.2);
266 | }
267 | button {
268 | & {
269 | color: @ini_text;
270 | background-color: @ini_background;
271 | border: @ini_border solid 1px;
272 | min-width: 24px; min-height: 24px;
273 | cursor: pointer;
274 | margin: 1px;
275 | }
276 | &:hover {
277 | background-color: @ini_text;
278 | color: @ini_background;
279 | }
280 | }
281 | picker1 {
282 | /* width: 308px; max-width: 308px; min-width: 308px; */
283 | resize: both;
284 | overflow: auto;
285 | }
286 | picker2 {
287 | /* width: 585px; max-width: 585px; min-width: 585px; */
288 | resize: both;
289 | overflow: auto;
290 | }
291 | }
292 |
293 | /* preview
294 | ********************************************************************/
295 |
296 | .dokuwiki div.preview {
297 | border: dotted #CCC;
298 | border-width: .2em 0;
299 | padding: 1.4em 0;
300 | margin-bottom: 1.4em;
301 | }
302 |
303 | /* narrow screen overrides: */
304 | @media (max-width: @ini_tablet_width) {
305 |
306 | .dokuwiki div.editBar {
307 | grid-template-columns: 1fr 5px auto;
308 | }
309 | .dokuwiki div.editBar .summary {
310 | grid-row: 2;
311 | grid-column: 1 / span 3;
312 | }
313 | .dokuwiki .editBar .summary #edit__summary {
314 | margin-left: 8pt;
315 | width: ~"calc(100% - 8px)";
316 | }
317 | .dokuwiki .editBar .summary label:last-child {
318 | /*text-align: right;*/
319 | }
320 | }
321 | @media (max-width: @ini_phone_width) {
322 |
323 | .dokuwiki .editBar .summary,
324 | .dokuwiki .editBar .summary > label:first-child {
325 | grid-template-columns: 100%;
326 | }
327 | }
328 | @media (max-width: 390px) {
329 |
330 | .dokuwiki .editBar .editButtons button {
331 | overflow: hidden;
332 | height: 30px;
333 | line-height: 24px;
334 | }
335 | .dokuwiki .editBar .summary #edit__summary {
336 | margin-left: 4px;
337 | width: 100%;
338 | }
339 |
340 | }
341 | /* dark mode overrides */
342 | @media (prefers-color-scheme: dark) {
343 |
344 | body.darkmode .editBox > .toolbar {
345 | background-color: fadeout(@ini_background_dark, 20%);
346 | }
347 | body.darkmode textarea.edit {
348 | background-color: @ini_background_alt_dark;
349 | border: @ini_headlines_dark solid 1px;
350 | color: @ini_text_dark;
351 | }
352 |
353 | body.darkmode textarea::-webkit-scrollbar-track {
354 | background: @ini_background_alt_dark;
355 | }
356 | body.darkmode textarea::-webkit-scrollbar-thumb {
357 | background: @ini_background_dark;
358 | }
359 | body.darkmode textarea::-webkit-scrollbar-thumb:hover {
360 | background: @ini_background_site_dark;
361 | }
362 | body.darkmode textarea { scrollbar-color: @ini_background_dark @ini_background_alt_dark; }
363 | .dokuwiki textarea::-webkit-resizer {
364 | background-color: @ini_background_alt_dark;
365 | background: linear-gradient(135deg, @ini_background_alt_dark 0%, @ini_background_alt_dark 50%, @ini_text_alt_dark 50%, @ini_text_alt_dark 100%);
366 | }
367 |
368 | body.mode_edit.darkmode div.editBox button,
369 | body.mode_preview.darkmode div.editBox button {
370 | background-color: @ini_headlines_dark;
371 | border-color: @ini_border_dark;
372 | }
373 | body.mode_edit.darkmode .editBar .editButtons button::before,
374 | body.mode_preview.darkmode .editBar .editButtons button::before {
375 | filter: invert(1) opacity(.67);
376 | }
377 | body.darkmode .editBar .editButtons button#edbtn__save {
378 | background-color: #334466;
379 | color: #CCDDFF;
380 | }
381 | body.darkmode .editBar .editButtons button#edbtn__preview {
382 | background-color: #226633;
383 | color: #CCFFDD;
384 | }
385 | body.darkmode .editBar .editButtons button[name="do[cancel]"] {
386 | background-color: #663344;
387 | color: #FFCCDD;
388 | }
389 |
390 | body.mode_edit.darkmode #tool__bar button,
391 | body.mode_preview.darkmode #tool__bar button {
392 | background-color: #8C8C8C;
393 | border-color: @ini_border_dark;
394 | }
395 | body.mode_edit.darkmode #tool__bar button:hover,
396 | body.mode_preview.darkmode #tool__bar button:hover {
397 | background-color: @ini_text_dark;
398 | }
399 | body.mode_edit.darkmode .editBar .editButtons button,
400 | body.mode_preview.darkmode .editBar .editButtons button {
401 | border-color: @ini_border_dark;
402 | }
403 | body.mode_edit.darkmode #tool__bar button img,
404 | body.mode_preview.darkmode #tool__bar button img {
405 | filter: brightness(90%);
406 | }
407 |
408 | body.mode_edit.darkmode .editBar .summary #edit__summary,
409 | body.mode_preview.darkmode .editBar .summary #edit__summary {
410 | background-color: @ini_background_alt_dark;
411 | border-color: @ini_headlines_dark;
412 | color: @ini_text_dark;
413 | }
414 |
415 | body.darkmode #draft__status {
416 | color: @ini_text_alt_dark;
417 | }
418 |
419 |
420 | body.darkmode div.picker {
421 | & {
422 | background-color: @ini_background_dark;
423 | border: @ini_border_dark solid 1px;
424 | }
425 | button {
426 | & {
427 | color: @ini_text;
428 | background-color: #8C8C8C;
429 | border-color: @ini_border_dark;
430 | }
431 | &:hover {
432 | background-color: @ini_text_dark;
433 | color: @ini_background_alt_dark;
434 | }
435 | }
436 | }
437 |
438 | }
--------------------------------------------------------------------------------
/css/content.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This contains the content styling
3 | * @author Sascha Leib
4 | */
5 |
6 | body {
7 | overflow: hidden auto;
8 | }
9 |
10 | .dokuwiki main {
11 | p,
12 | blockquote,
13 | div.table {
14 | margin-bottom: .5em;
15 | margin-top: .5em;
16 | }
17 |
18 | /* headlines: */
19 | h1, h2, h3, h4, h5, h6 {
20 | font-family: @ini_headline_fonts;
21 | color: @ini_headlines;
22 | margin: 1em 0 1em 0;
23 | line-height: 1.1em;
24 | }
25 | h1 { font-size: 2em; }
26 | h2 { font-size: 1.5em; }
27 | h3 { font-size: 1.125em; }
28 | h4 { font-size: 1em; }
29 | h5 { font-size: .875em; }
30 | h6 { font-size: .75em; }
31 | h1 *, h2 *, h3 *, h4 *, h5 *, h6 * {
32 | font-family: inherit;
33 | font-size: inherit;
34 | color: inherit;
35 | margin: inherit;
36 | line-height: inherit;
37 | }
38 | /* Definition Terms are like Headlines in many ways */
39 | dl dt {
40 | font-family: @ini_headline_fonts;
41 | color: @ini_headlines;
42 | }
43 |
44 | /* make strike-through and underline more useful! */
45 | u {
46 | -webkit-text-decoration-color: #F30;
47 | -webkit-text-decoration-line: underline;
48 | -webkit-text-decoration-style: wavy;
49 | -webkit-text-decoration-thickness: .7pt;
50 | text-decoration: underline #F30 wavy .7pt;
51 | }
52 | s, del {
53 | -webkit-text-decoration-color: rgba(255,0,0,.5);
54 | -webkit-text-decoration-line: line-through;
55 | -webkit-text-decoration-style: solid;
56 | -webkit-text-decoration-thickness: .1em;
57 | text-decoration: line-through rgba(255,0,0,.5) solid .1em;
58 | }
59 |
60 | /* subscript and superscript */
61 | sup, sub {
62 | line-height: 1;
63 | font-size: .6em;
64 | font-weight: 600;
65 | margin: 0 .1em;
66 | }
67 | sup {
68 | vertical-align: .5em;
69 | }
70 | sub {
71 | vertical-align: -.15em;
72 | }
73 |
74 | /* lists: */
75 | ul, ol {
76 | margin: 0 2em 1em 1em;
77 | padding-left: 1.75em;
78 | }
79 | ul { list-style: square outside; }
80 | ul ul { list-style-type: disc; }
81 | ul ul ul { list-style-type: none; }
82 | ul ul ul li {margin-left: 1em; }
83 | ul ul ul li:before { display: block; content: '\2043'; text-align:center; float: left; width: 1em; margin-left: -1em; }
84 | ul ul ul ul li:before { content: '\FE63' }
85 | ul ul ul ul ul li:before { content: '\00B7' }
86 |
87 | /* numbered lists vary by nestling: */
88 | ol { list-style: decimal outside; }
89 | ol ol { list-style-type: lower-alpha; }
90 | ol ol ol { list-style-type: lower-roman; }
91 | ol ol ol ol { list-style-type: lower-greek; }
92 | ol ol ol ol ol { list-style-type: decimal-leading-zero; font-size: .96em;}
93 | ol ol ol ol ol ol { list-style-type: upper-alpha; font-size: .96em;}
94 | ul ul ul ol li { margin-left: 0; }
95 | ul ul ul ol li:before { display: none; content: ''; }
96 |
97 | li::marker {
98 | color: #666;
99 | }
100 |
101 | ul ul, ul ol,
102 | ol ul, ol ol {
103 | margin-bottom: 0;
104 | padding-left: .25em;
105 | }
106 |
107 | /* horizontal rules */
108 | hr {
109 | border: #666 solid 0;
110 | border-top-width: 1pt;
111 | height: 0;
112 | margin: 3pt 0;
113 | }
114 |
115 | tt, blockquote tt,
116 | pre, pre *,
117 | code, code *,
118 | blockquote code {
119 | font-family: @ini_mono_fonts;
120 | }
121 | code, blockquote code {
122 | border: @ini_border solid 1px;
123 | border-radius: 3pt;
124 | padding: 0 2pt;
125 | }
126 | pre {
127 | overflow-x: auto;
128 | white-space: pre-wrap;
129 | word-wrap: normal;
130 | border: 1px solid @ini_border;
131 | border-radius: 2px;
132 | box-shadow: inset 0 0 .5em @ini_border;
133 | padding: .3em;
134 | font-variant-numeric: slashed-zero;
135 | }
136 |
137 | /* overwrite pre styling for CodeMirror plugin: */
138 | .CodeMirror pre {
139 | max-width: 100%;
140 | }
141 | /* quotes: */
142 | blockquote {
143 | border: @ini_blockquote solid 0;
144 | border-width: 0 0 0 .4em;
145 | border-radius: .5em;
146 | padding: .25em 0 .25em .75em;
147 | margin: 0 2em 1em 1em;
148 | font-family: @ini_alt_fonts;
149 | font-size: @ini_alt_font_size;
150 | hanging-punctuation: first allow-end;
151 | }
152 | blockquote * {
153 | font-family: @ini_alt_fonts;
154 | }
155 |
156 | svg {
157 | display: block;
158 | fill-rule: evenodd;
159 | clip-rule: evenodd;
160 | stroke-linejoin: round;
161 | stroke-miterlimit: 1.5;
162 | }
163 | svg.math {
164 | margin-left: 15px
165 | }
166 |
167 | /* tables */
168 | div.table {
169 | overflow-x: auto;
170 | }
171 | table {
172 | & {
173 | border-collapse: collapse;
174 | empty-cells: show;
175 | border-spacing: 0;
176 | font-size: smaller;
177 | border: 1px solid @ini_border;
178 | margin-bottom: 1em;
179 | }
180 | th, td {
181 | padding: .5em .3em;
182 | vertical-align: top;
183 | border: 1px solid @ini_border;
184 | line-height: 1.25em;
185 | }
186 | th.centeralign, td.centeralign {
187 | text-align: center;
188 | }
189 | th.rightalign, td.rightalign {
190 | text-align: right;
191 | }
192 | th {
193 | font-weight: bold;
194 | background-color: @ini_background_alt;
195 | text-align: left;
196 | }
197 | &.inline {
198 | min-width: 50%;
199 | margin-bottom: 0;
200 | }
201 | &.inline tr:hover td {
202 | background-color: @ini_background_alt;
203 | }
204 | &.inline tr:hover th {
205 | background-color: @ini_border;
206 | }
207 | }
208 |
209 | /* asides */
210 | aside {
211 | & > * {
212 | margin: .25em 0;
213 | }
214 | &.float-left, &.float-right {
215 | width: 50%;
216 | max-width: 220px;
217 | min-width: 150px;
218 | font-size: smaller;
219 | line-height: 1.5em;
220 | }
221 | &.float-left {
222 | clear: left;
223 | float: left;
224 | margin-right: .5em;
225 | }
226 | &.float-right {
227 | clear: right;
228 | float: right;
229 | margin-left: .5em;
230 | }
231 | & footer {
232 | line-height: 1.1em;
233 | }
234 | }
235 |
236 | /* images */
237 | img {
238 | max-width: 100%;
239 | height: auto;
240 | }
241 |
242 | /* abbbreviations a reslightly widened and made smaller */
243 | abbr {
244 | letter-spacing: .01em;
245 | font-size: 97%;
246 | }
247 |
248 | /* extra styles for ad-hoc tags: */
249 | kbd {
250 | padding: .15em .25em;
251 | margin: 0 .1em;
252 | font-size: 85%;
253 | color: @ini_headlines;
254 | border: @ini_border solid 1px;
255 | border-radius: .25em;
256 | display: inline-block;
257 | white-space: nowrap;
258 | line-height: 1.2em;
259 | letter-spacing: .03em;
260 | }
261 | kbd kbd {
262 | background-color: @ini_background_alt;
263 | -webkit-box-shadow: 0 .1em 0 rgba(0,0,0,0.25);
264 | box-shadow: 0 .1em 0 rgba(0,0,0,0.25);
265 | font-weight: bold;
266 | }
267 | samp {
268 | background-color: @ini_background_alt;
269 | font-family: @ini_mono_fonts;
270 | white-space: nowrap;
271 | }
272 | mark {
273 | background-color: @ini_highlight;
274 | }
275 |
276 | /* box / notification classes */
277 | .box, .wrap_box,
278 | .outline, .wrap_outline {
279 | padding: 1pt .5em;
280 | margin: .5em 0;
281 | }
282 | .box, .wrap_box {
283 | background-color: @ini_background_alt;
284 | }
285 | .rounded, .wrap_rounded {
286 | border-radius: .5em;
287 | }
288 |
289 | /* hyphenation only in the main-content */
290 | p, li {
291 | word-wrap: break-word;
292 | overflow-wrap: break-word;
293 | hyphens: auto;
294 | -ms-hyphens: auto;
295 | -moz-hyphens: auto;
296 | -webkit-hyphens: auto;
297 | hyphenate-limit-chars: 6 2 3;
298 | }
299 |
300 | /* footnotes section */
301 | div.footnotes {
302 | border-top: transparent 0 none;
303 | margin-top: 1.5em;
304 | font-size: smaller;
305 | }
306 | div.footnotes:before {
307 | content: ' ';
308 | display: block;
309 | width: 33%;
310 | min-width: 5em;
311 | border-top: @ini_border solid 1.5pt;
312 | height: .5em;
313 | }
314 | div.footnotes div.fn {
315 | margin-left: 1em;
316 | }
317 | }
318 |
319 | /* footnotes and similar poups: */
320 | .JSpopup {
321 | background-color: @ini_background;
322 | color: @ini_text;
323 | border: @ini_border solid 1px;
324 | padding: .25em;
325 | box-shadow: 2px 2px 4px rgba(0, 0, 0, .5);
326 | }
327 |
328 |
329 | /* on the homepage only, reduce the H1 top margin: */
330 | body.home h1:first-child { margin-top: .5em; }
331 |
332 |
333 | [dir=rtl] {
334 | main {
335 | blockquote {
336 | border-width: 0 .4em 0 0;
337 | padding: .25em .75em .25em 0;
338 | margin: 0 1em 1em 2em;
339 | }
340 |
341 | ul, ol {
342 | margin-left: 0;
343 | margin-right: .5em;
344 | padding-left: 0;
345 | padding-right: .25em;
346 | }
347 | ul li, ol li {
348 | width: 100%;
349 | }
350 |
351 | ul ul ul li:before {
352 | float: right;
353 | margin-left: 0;
354 | margin-right: -1em;
355 | }
356 |
357 | }
358 | }
359 |
360 | /* tablet break point: */
361 | @media (max-width: @ini_tablet_width) {
362 |
363 | /* tighter hyphenation for narrower screens */
364 | #main-content p, #main-content li {
365 | hyphenate-limit-chars: 5 2 2;
366 | }
367 | }
368 |
369 | /* phone break point: */
370 | @media (max-width: @ini_phone_width) {
371 |
372 | .nophone, .wrap_nophone {
373 | display: none !important;
374 | }
375 |
376 | main aside {
377 | width: 100%;
378 | max-width: initial;
379 | float: none;
380 | margin-left: 0;
381 | }
382 | }
383 |
384 | /* dark mode overrides */
385 | @media (prefers-color-scheme: dark) {
386 |
387 | body.darkmode {
388 | main {
389 | h1, h2, h3, h4, h5, h6, dt { color: @ini_headlines_dark; }
390 | table {
391 | & { border-color: @ini_border_dark; }
392 | &.inline tr:hover td,
393 | &.inline tr:hover th { background-color: @ini_border_dark; }
394 | th { background-color: rgba(255,255,255,0.05); }
395 | }
396 | #acl_manager table tr:hover { background-color: rgba(255,255,255,0.1); }
397 | code,
398 | blockquote { border-color: @ini_blockquote_dark }
399 | blockquote code { border-color: @ini_border_dark; }
400 | kbd {color: @ini_headlines_dark;border-color: @ini_border_dark;}
401 | kbd kbd {background-color: @ini_background_alt_dark;}
402 | samp {background-color: @ini_background_alt_dark;}
403 | pre {border-color: @ini_border_dark; box-shadow: inset 0 0 .5em @ini_background_site_dark;}
404 | dl dt { color: @ini_headlines_dark; }
405 |
406 | details summary {
407 | & {
408 | color: @ini_headlines_dark;
409 | }
410 | &::after {
411 | background-color: @ini_link_dark;
412 | }
413 | &:hover {
414 | & {
415 | color: @ini_text_dark;
416 | }
417 | &::after {
418 | background-color: lighten(@ini_link_dark, 10%);
419 | }
420 | }
421 | &:focus {
422 | outline: @ini_focus_color solid 2px;
423 | }
424 | }
425 |
426 | /* overrides for PRE blocks: */
427 | pre.code {
428 | .me1 {color: #3C3;}
429 | .kw2 {color: #0C7;}
430 | .kw3 {color: #0CF;}
431 | }
432 |
433 | div.error {background-color: #4B2F36; color: #FFB3D2; border-color: #743E4C;}
434 | div.success {background-color: #28381F; color: #FBE2A1; border-color: #37562E;}
435 | div.notify {background-color: #42381F; color: #FCE2A1; border-color: #56562E;}
436 |
437 | /* colour overrides for Wrap Plugin */
438 | .wrap_hi {background-color: @ini_highlight; color: #000;}
439 | .wrap_box, .box {background-color: @ini_background_alt_dark; color: inherit;}
440 | .wrap_outline, .outline {border-color: @ini_border_dark; color: inherit}
441 | .red, .wrap_red { color: #E53935; }
442 | .green, .wrap_green { color: #00E676; }
443 | .wrap_tip {background-color: #47391B;}
444 | .wrap_important {background-color: #603000;}
445 | .wrap_alert, .wrap_danger {background-color: #4C0909;}
446 | .wrap_help, .wrap_info {background-color: #112847;}
447 | .wrap_download, .wrap_safety {background-color: #1C3802;}
448 | .wrap_todo, .wrap_notice {background-color: #004A7F;}
449 | .wrap_caution {background-color: #fcffaa;}
450 | .wrap_warning {background-color: #FFC9AA;}
451 |
452 | /* MathML fixes */
453 | merror { background-color: @ini_highlight; color: red; }
454 |
455 | }
456 |
457 | /* footnote and similar poups: */
458 | .JSpopup {
459 | background-color: @ini_background_site_dark;
460 | color: @ini_text_dark;
461 | border-color: @ini_border_dark;
462 | box-shadow: 2px 2px 4px #000;
463 | }
464 | }
465 | }
466 |
467 |
--------------------------------------------------------------------------------
/css/print.less:
--------------------------------------------------------------------------------
1 | /**
2 | * This contains the print layouts and styles
3 | * @author Sascha Leib
4 | */
5 |
6 | @page { margin: 2cm 4cm 3cm 2.5cm; }
7 |
8 | .noprint,
9 | .wrap_noprint {
10 | display: none !important;
11 | }
12 | .nobreak,
13 | .wrap_nobreak {
14 | white-space: nowrap !important;
15 | }
16 | .printonly,
17 | .print-only,
18 | .wrap_print-only {
19 | display: initial;
20 | }
21 |
22 | html, body, * {
23 | font-family: @ini_print_default_fonts;
24 | margin: 0;
25 | padding: 0;
26 | background-color: transparent;
27 | }
28 |
29 | body {
30 | font-size: 12pt;
31 | box-decoration-break: clone;
32 | }
33 |
34 | /* hide unneded page elements */
35 | #globalTools, #phSearch,
36 | #sidebar, #toc, #navYouAreHere,
37 | #footer-layout .ftSection {
38 | display: none;
39 | }
40 | #header-layout {
41 | display: table-header-group;
42 | padding-bottom: .25em;
43 | margin-bottom: 1em;
44 | }
45 | #header-layout > header {
46 | display: block;
47 | padding-bottom: .25em;
48 | border-bottom: #000 solid .5pt;
49 | margin-bottom: 1em;
50 | }
51 | #siteLogo {
52 | display: grid;
53 | grid-template-columns: min-content max-content auto;
54 | align-items: center;
55 | }
56 | #siteLogo .logo {
57 | grid-row: 1;
58 | }
59 | #siteLogo .logo img {
60 | width: 12pt;
61 | height: auto;
62 | }
63 | #siteLogo .title {
64 | font-size: 10pt;
65 | line-height: 1.2em;
66 | font-weight: bold;
67 | }
68 | #siteLogo .title a:link,
69 | #siteLogo .title a:visited {
70 | font-family: @ini_print_title_fonts;
71 | color: @ini_print_title_color;
72 | text-decoration: none;
73 | }
74 | #siteLogo .claim {
75 | grid-row: 1; grid-column: 3;
76 | align-self: center;
77 | max-width: 100%;
78 | font-size: 10pt;
79 | line-height: 1.2em;
80 | }
81 |
82 | #header-layout #phInclude {
83 | display: none;
84 | }
85 |
86 | #main-layout {
87 | padding-top: .5em;
88 | display: table-row-group;
89 | }
90 |
91 | #footer-layout {
92 | display: block;
93 | padding-top: 0;
94 | }
95 | #footer-layout footer {
96 | display: block;
97 | width: auto;
98 | }
99 |
100 | /* reset main borders and margins: */
101 | main {
102 | display: table-row-group;
103 | padding: 0;
104 | border-width: 0;
105 | line-height: 1.5em;
106 | border: none 0;
107 | word-break: break-word;
108 | box-shadow: 0 0 0 0 transparent;
109 | font-variant-ligatures: common-ligatures discretionary-ligatures;
110 | }
111 |
112 | /* headlines */
113 | main h1, main h2, main h3, main h4, main h5, main h6 {
114 | font-family: @ini_print_title_fonts;
115 | color: @ini_print_title_color;
116 | line-height: 1.2em;
117 | margin: 1em 0 .5em 0;
118 | padding: 0 0 .25em 0;
119 | page-break-inside: avoid;
120 | break-inside: avoid;
121 | page-break-after: avoid;
122 | break-after: avoid;
123 | clear: both;
124 | position: relative;
125 | }
126 | main h1 { font-size: 18pt; margin-bottom: .5em; }
127 | main h2 { font-size: 14pt; margin-top: 2em; }
128 | main h3 { font-size: 12pt; }
129 | main h4 { font-size: 12pt; font-style: italic; }
130 | main h5 { font-size: 12pt; font-weight: normal; font-style: italic; }
131 | main h6 { font-size: 11pt; font-weight: normal; font-style: italic; }
132 |
133 | /* workaround: force headlines to keep with the next paragraph: */
134 | main h1::after, main h2::after, main h3::after, main h4::after, main h5::after, main h6::after,
135 | main dl:not(.compact) dt::after {
136 | content: '';
137 | display: block;
138 | height: 4.5em;
139 | margin-bottom: -4.5em;
140 | page-break-inside: avoid;
141 | break-inside: avoid;
142 | }
143 |
144 | main h1 + div, main h2 + div, main h3 + div, main h4 + div, main h5 + div, main h6 + div {
145 | page-break-before: avoid;
146 | break-before: avoid;
147 | }
148 |
149 | /* workaround until CSS orphans are widely supported: */
150 | main p::before {
151 | content: '';
152 | display: block;
153 | height: 3.2em;
154 | margin-bottom: -3.2em;
155 | page-break-inside: avoid;
156 | break-inside: avoid;
157 | }
158 | /* note: no workaround for missing CSS widows yet :-( */
159 |
160 | /* paragraph-level blocks */
161 | main p, main ul, main ol {
162 | margin: .5em 0;
163 | }
164 | main p, main li {
165 | widows: 2;
166 | orphans: 2;
167 | word-wrap: break-word;
168 | overflow-wrap: break-word;
169 | -ms-hyphens: auto;
170 | -moz-hyphens: auto;
171 | -webkit-hyphens: auto;
172 | hyphens: auto;
173 | hyphenate-limit-chars: 6 2 3;
174 | }
175 | main ul { list-style: square outside; }
176 | main ul ul { list-style-type: disc; }
177 | main ul ul ul { list-style-type: none; }
178 | main ol { list-style: decimal outside; }
179 | main ul ul ul li {margin-left: 1em; }
180 | main ul ul ul li:before { display: block; content: '\2043'; text-align:center; float: left; width: 1em; margin-left: -1em; }
181 | main ul ul ul ul li:before { content: '\FE63' }
182 | main ul ul ul ul ul li:before { content: '\00B7' }
183 |
184 | main ol ol { list-style-type: lower-alpha; }
185 | main ol ol ol { list-style-type: lower-roman; }
186 | main ol ol ol ol { list-style-type: lower-greek; }
187 | main ol ol ol ol ol { list-style-type: decimal-leading-zero; }
188 | main ul ul ul ol li { margin-left: 0; }
189 | main ul ul ul ol li:before { display: none; content: ''; }
190 |
191 | main li {
192 | margin-left: 1.5em;
193 | }
194 | main blockquote {
195 | border-left: @ini_blockquote solid 3pt;
196 | padding: .25em 0 .25em .5em;
197 | margin: 0 .25em 1em .25em;
198 | widows: 2;
199 | orphans: 2;
200 | hyphens: auto;
201 | }
202 | main pre {
203 | white-space: normal;
204 | }
205 | main figure {
206 | break-inside: avoid;
207 | page-break-inside: avoid;
208 | background-color: transparent;
209 | border: #666 solid .5pt;
210 | margin: .5em 0;
211 | }
212 | main figure figcaption {
213 | font-family: @ini_print_title_fonts;
214 | margin-top: .5em;
215 | font-size: small;
216 | text-align: left;
217 | }
218 | main figure figcaption p,
219 | main figure figcaption li {
220 | font-family: @ini_print_title_fonts;
221 | }
222 | body.print-compact main figure figcaption p {
223 | text-indent: 0;
224 | }
225 | body.print-compact main figure table {
226 | max-width: 100%;
227 | border: #000 solid .5pt;
228 | }
229 | main footer {
230 | margin-top: 2em;
231 | border-top: #000 solid .5pt;
232 | page-break-before: avoid;
233 | break-before: avoid;
234 | }
235 | main footer p.docInfo,
236 | body.print-compact main p.docInfo {
237 | display: block;
238 | border: none;
239 | padding: 0;
240 | text-align: right;
241 | color: #000;
242 | }
243 | #ftLicenseButtons p.license {
244 | color: #000;
245 | }
246 |
247 | /* links overrides */
248 | main a:link,
249 | main a:visited {
250 | text-decoration: underline;
251 | text-decoration-style: dotted;
252 | }
253 | main a:link.text-link,
254 | main a:visited.text-link {
255 | color: #000;
256 | }
257 |
258 | /* add URL after external links - optional!
259 | main a.interwiki:after,
260 | main a.urlextern:after {
261 | content: ' <' attr(href) '>';
262 | font-size: 90%;
263 | color: #333;
264 | } */
265 |
266 | /* fixed-width elements: */
267 | main tt, main code, main pre,
268 | main blockquote tt, main blockquote code, main blockquote pre {
269 | font-family: @ini_mono_fonts;
270 | }
271 |
272 | /* text attributes */
273 | main s {
274 | text-decoration: line-through rgba(255,0,0,0.5) solid 1pt;
275 | -webkit-text-decoration: line-through rgba(255,0,0,0.5) solid 1pt;
276 | }
277 | main u {
278 | -webkit-text-decoration-color: @ini_missing;
279 | -webkit-text-decoration-line: underline;
280 | -webkit-text-decoration-style: wavy;
281 | -webkit-text-decoration-thickness: .7pt;
282 | text-decoration: underline @ini_missing wavy .7pt;
283 | }
284 | main u.valid {
285 | -webkit-text-decoration-color: @ini_existing;
286 | text-decoration-color: @ini_existing;
287 | text-decoration-style: dashed;
288 | }
289 | main abbr {
290 | text-decoration: none;
291 | font-size: 97%;
292 | letter-spacing: .05em;
293 | }
294 |
295 | /* horizontal rules */
296 | main hr {
297 | border: #000 solid 0;
298 | border-top-width: 1pt;
299 | height: 0;
300 | margin: 3pt 0;
301 | }
302 |
303 | /* table styles */
304 | main table {
305 | max-width: 100%;
306 | border: #000 solid .5pt;
307 | border-collapse: collapse;
308 | line-height: 1.25em;
309 | margin: .5em 0;
310 | box-decoration-break: clone;
311 | page-break-inside: avoid;
312 | break-inside: avoid;
313 | font-size: small;
314 | }
315 | main table td,
316 | main table th {
317 | padding: 2pt 3pt;
318 | vertical-align: top;
319 | }
320 | main table th,
321 | main table th * {
322 | font-family: @ini_print_title_fonts;
323 | color: @ini_print_title_color;
324 | }
325 | main table thead {
326 | break-inside: avoid;
327 | break-after: avoid;
328 | }
329 | main table thead tr {
330 | background-color: #EEE;
331 | border-bottom: #000 solid .5pt;
332 | text-align: left;
333 | }
334 | main table thead tr th,
335 | main table thead tr td {
336 | vertical-align: bottom;
337 | border-right: #000 solid .5pt;
338 | }
339 | main table thead tr th:last-child,
340 | main table thead tr td:last-child {
341 | border-right: none 0;
342 | }
343 | main table tbody tr {
344 | border-bottom: #000 dashed .5pt;
345 | }
346 | main table tbody tr:nth-child(even) {
347 | background-color: #EEE;
348 | }
349 | main table tbody th {
350 | vertical-align: top;
351 | border-right: #000 solid .5pt;
352 | }
353 | main table tbody td {
354 | border-right: #000 dashed .5pt;
355 | }
356 | main table a:link {
357 | text-decoration: none;
358 | }
359 |
360 | main table.layout,
361 | main table.layout tr,
362 | main table.layout th,
363 | main table.layout td {
364 | border: none !important;
365 | background: transparent none !important;
366 | }
367 |
368 | main blockquote table {
369 | margin: 0;
370 | }
371 |
372 | /* image-related */
373 | main aside {
374 | float: none;
375 | width: 100%;
376 | margin: .5em 0;
377 | page-break-inside: avoid;
378 | break-inside: avoid;
379 | }
380 | main img {
381 | width: auto;
382 | max-width: 100%;
383 | height: auto;
384 | break-inside: avoid;
385 | page-break-inside: avoid;
386 | }
387 |
388 | /* footnotes */
389 | .dokuwiki div.footnotes {
390 | border-top: transparent 0 none;
391 | font-size: smaller;
392 | }
393 |
394 | .dokuwiki sup a.fn_top {
395 | color: #000;
396 | }
397 | .dokuwiki sup a.fn_top::after {
398 | font-size: 1.0rem;
399 | font-weight: normal;
400 | }
401 | #main-content h1 + div > p:first-child sup a.fn_top::after {
402 | font-weight: bold;
403 | }
404 |
405 | .dokuwiki div.footnotes > .fn .fn_bot {
406 | color: #000;
407 | }
408 | .dokuwiki div.footnotes > .fn .fn_bot::after {
409 | font-size: .833rem;
410 | }
411 |
412 | main div.footnotes:before {
413 | content: ' ';
414 | display: block;
415 | width: 50%;
416 | min-width: 5em;
417 | border-top: #000 solid .5pt;
418 | height: .5em;
419 | }
420 |
421 | /* show language code, if configured as menu */
422 | #tbLanguages {
423 | & {
424 | display: block;
425 | float:right;
426 | position: relative;
427 | top: -1.5rem;
428 | }
429 | button {
430 | & {
431 | border: transparent none 0;
432 | }
433 | svg {
434 | & {
435 | fill: transparent;
436 | stroke: #000;
437 | stroke-width: .5pt;
438 | width: 1.75rem; height: 1.75rem;
439 | }
440 | text {
441 | fill: #000;
442 | text-transform: uppercase;
443 | font-family: Arial, Helvetica, Verdana, sans;
444 | stroke-width: 0;
445 | }
446 | }
447 | }
448 | }
449 |
450 | /* alternative compact style: */
451 | body.print-compact #main-content {
452 | columns: 2;
453 | column-gap: 1.2em;
454 | column-rule: .25pt solid #666;
455 | font-size: 11pt;
456 | }
457 | body.print-compact main h1,
458 | body.print-compact main h2,
459 | body.print-compact main figure {
460 | column-span: all;
461 | }
462 | body.print-compact main figure.print-narrow {
463 | column-span: none;
464 | }
465 |
466 | #main-content h1 + div > p:first-child {
467 | column-span: all;
468 | font-weight: 600;
469 | margin-bottom: 1.5em;
470 | text-indent: 0;
471 | }
472 |
473 | body.print-compact main p {
474 | margin: 0;
475 | text-align: justify;
476 | text-indent: 1.5em;
477 | }
478 | body.print-compact main h1 + div > p:first-child + p,
479 | body.print-compact main h2 + div > p:first-child,
480 | body.print-compact main h3 + div > p:first-child,
481 | body.print-compact main h4 + div > p:first-child,
482 | body.print-compact main h5 + div > p:first-child,
483 | body.print-compact main h6 + div > p:first-child,
484 | body.print-compact main figure + p + p,
485 | body.print-compact main div.table + p,
486 | body.print-compact main aside + p + p,
487 | body.print-compact main ul + p,
488 | body.print-compact main ol + p,
489 | body.print-compact main blockquote + p,
490 | body.print-compact main p.info-box,
491 | body.print-compact main p.info-box + p + p {
492 | text-indent: 0;
493 | }
494 |
495 | body.print-compact main table {
496 | border: none;
497 | }
498 | body.print-compact main figure {
499 | border: none;
500 | margin: 1em 0 .5em 0;
501 | padding: .5em 0;
502 | }
503 | body.print-compact main blockquote {
504 | margin: .5em 0;
505 | padding: 0 0 0 .5em;
506 | }
507 | body.print-compact main figure blockquote {
508 | margin: 0;
509 | }
510 | body.print-compact main p.info-box {
511 | margin: .5em 0;
512 | }
513 | body.print-compact main ul,
514 | body.print-compact main ol {
515 | margin-left: .5em;
516 | margin: 0;
517 | padding: 0;
518 | list-style-position: inside;
519 | }
520 | body.print-compact main ul > li,
521 | body.print-compact main ol > li {
522 | margin-left: 0;
523 | }
524 | body.print-compact main ul ul,
525 | body.print-compact main ul ol,
526 | body.print-compact main ol ul,
527 | body.print-compact main ol ol,
528 | body.print-compact main ul ul li,
529 | body.print-compact main ul ol li,
530 | body.print-compact main ol ul li,
531 | body.print-compact main ol ol li {
532 | margin-left: .5em;
533 | }
534 | body.print-compact main ul li::marker,
535 | body.print-compact main ol li::marker {
536 | display: inline-block;
537 | float: none;
538 | }
539 | body.print-compact main ul li div.li,
540 | body.print-compact main ol li div.li {
541 | display: inline;
542 | }
543 | body.print-compact main ul div.li,
544 | body.print-compact main ol div.li {
545 | text-align: justify;
546 | }
547 |
548 | /* media detail */
549 | body.mediadetail figure {
550 | border: none;
551 | background: transparent none;
552 | }
553 | body.mediadetail figure table ul {
554 | margin: 0;
555 | }
556 |
557 | /* allow user to force keep-together rules: */
558 | .keep-together,
559 | .wrap_keep-together {
560 | page-break-inside: avoid;
561 | break-inside: avoid;
562 | }
563 | .break-before,
564 | .wrap_break-before {
565 | page-break-before: always;
566 | break-before: always;
567 | }
568 | .print-wide,
569 | .wrap_print-wide {
570 | clear: both;
571 | column-span: all;
572 | }
573 | .print-outline {
574 | margin-top: 1em;
575 | border: #666 solid .5pt;
576 | border-radius: 1em;
577 | padding: 0 1em;
578 | }
579 |
580 | /* site-banners */
581 | .site-banner {
582 | clear: both;
583 | column-span: all;
584 | margin-top: 1em;
585 | border: #666 solid 1pt;
586 | border-radius: 1em;
587 | padding: 0 1em;
588 | page-break-inside: avoid;
589 | break-inside: avoid;
590 | text-align: left;
591 | }
592 | .site-banner h4 {
593 | margin: .75em 0 .15em 0;
594 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
595 | font-size: 11pt;
596 | font-style: normal;
597 | }
598 | .site-banner p {
599 | font-size: 9pt;
600 | line-height: 13pt;
601 | }
602 | .site-banner img {
603 | margin: 0 .25em .25em .5em;
604 | }
605 |
606 | /* boxes */
607 | main .box,
608 | main .wrap_box {
609 | border: #666 solid 1px;
610 | background-color: @ini_background_alt;
611 | padding: .5em .25em .5em .5em;
612 | font-size: small;
613 | line-height: 1.5em;
614 | }
615 |
--------------------------------------------------------------------------------
/css/_media_fullscreen.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This file provides the styles for the fullscreen media manager
3 | * (?do=media).
4 | *
5 | * What most templates would probably need to change (depending on
6 | * their site width) are the 4 min-width's (search for @change).
7 | */
8 |
9 |
10 | /*____________ structure ____________*/
11 |
12 | #mediamanager__page h1 {
13 | margin-bottom: .5em;
14 | }
15 |
16 | #mediamanager__page {
17 | /* min-width must be summary of all 3 panels' min-widths */
18 | min-width: 50em; /* @change */
19 | width: 100%;
20 | text-align: left;
21 | }
22 | [dir=rtl] #mediamanager__page {
23 | text-align: right;
24 | }
25 | #mediamanager__page .panel {
26 | float: left;
27 | }
28 | [dir=rtl] #mediamanager__page .panel {
29 | float: right;
30 | }
31 |
32 | #mediamanager__page .namespaces {
33 | width: 20%;
34 | min-width: 10em; /* @change */
35 | left:0 !important; /* overrules jQuery UI resizable in rtl */
36 | }
37 | #mediamanager__page .filelist {
38 | width: 50%;
39 | min-width: 25em; /* @change */
40 | left:0 !important; /* overrules jQuery UI resizable in rtl */
41 | }
42 | #mediamanager__page .file {
43 | width: 30%;
44 | min-width: 15em; /* @change */
45 | }
46 |
47 | #mediamanager__page .tabs li {
48 | white-space: nowrap;
49 | }
50 |
51 | #mediamanager__page .panelHeader {
52 | background-color: @ini_background_alt;
53 | margin: 0 10px 10px 0;
54 | padding: 10px 10px 8px;
55 | text-align: left;
56 | min-height: 20px;
57 | overflow: hidden;
58 | text-overflow: ellipsis;
59 | white-space: nowrap;
60 | }
61 | [dir=rtl] #mediamanager__page .panelHeader {
62 | text-align: right;
63 | margin: 0 0 10px 10px;
64 | }
65 | #mediamanager__page .panelContent {
66 | overflow-y: auto;
67 | overflow-x: hidden;
68 | padding: 3px 0 0 0;
69 | margin: 0 10px 10px 0;
70 | position: relative;
71 | }
72 | [dir=rtl] #mediamanager__page .panelContent {
73 | text-align: right;
74 | margin: 0 0 10px 10px;
75 | }
76 |
77 | #mediamanager__page .file .panelHeader,
78 | #mediamanager__page .file .panelContent {
79 | margin-right: 0;
80 | }
81 | [dir=rtl] #mediamanager__page .file .panelHeader,
82 | [dir=rtl] #mediamanager__page .file .panelContent {
83 | margin-left: 0;
84 | }
85 |
86 | #mediamanager__page .ui-resizable-handle.ui-resizable-e,
87 | [dir=rtl] #mediamanager__page .ui-resizable-handle.ui-resizable-w {
88 | width: 6px;
89 | right: 2px;
90 | background: @ini_background_neu url(../../images/resizecol.png) center center no-repeat;
91 | }
92 | #mediamanager__page .ui-resizable-e:hover,
93 | [dir=rtl] #mediamanager__page .ui-resizable-w:hover {
94 | background-color: @ini_background;
95 | }
96 |
97 | #mediamanager__page dd {
98 | margin: 0;
99 | }
100 |
101 | #mediamanager__page .panelHeader h3 {
102 | float: left;
103 | font-weight: normal;
104 | font-size: 1em;
105 | padding: 0;
106 | margin: 0 0 3px;
107 | }
108 | [dir=rtl] #mediamanager__page .panelHeader h3 {
109 | float : right
110 | }
111 |
112 |
113 | /*____________ namespaces panel ____________*/
114 |
115 | [dir=rtl] #mediamanager__page .namespaces {
116 | text-align: right;
117 | }
118 |
119 | /* make it look like a tab (as in _tabs.css) */
120 | #mediamanager__page .namespaces h2 {
121 | font-size: 1em;
122 | display: inline-block;
123 | padding: .3em .8em;
124 | margin: 0 0 0 .3em;
125 | border-radius: .5em .5em 0 0;
126 | font-weight: normal;
127 | background-color: @ini_background_alt;
128 | color: @ini_text;
129 | border: 1px solid @ini_border;
130 | border-bottom-color: @ini_background_alt;
131 | line-height: 1.4em;
132 | position: relative;
133 | bottom: -1px;
134 | z-index: 2;
135 | }
136 | [dir=rtl] #mediamanager__page .namespaces h2 {
137 | margin: 0 .3em 0 0;
138 | position: relative;
139 | right: 10px;
140 | }
141 | #mediamanager__page .namespaces .panelHeader {
142 | border-top: 1px solid @ini_border;
143 | z-index: 1;
144 | }
145 |
146 | #mediamanager__page .namespaces ul {
147 | margin: 0 2px 0 0;
148 | padding: 0;
149 | list-style: none;
150 | }
151 | [dir=rtl] #mediamanager__page .namespaces ul {
152 | margin: 0 0 0 2px;
153 | }
154 | #mediamanager__page .namespaces ul ul {
155 | margin-left: 1em;
156 | }
157 | [dir=rtl] #mediamanager__page .namespaces ul ul {
158 | margin-left: 0;
159 | margin-right: 1em;
160 | }
161 | #mediamanager__page .namespaces ul ul li {
162 | margin: 0;
163 | }
164 | #mediamanager__page .namespaces ul a {
165 | display: block;
166 | overflow: hidden;
167 | text-overflow: ellipsis;
168 | white-space: nowrap;
169 | }
170 | #mediamanager__page .namespaces ul li::before {
171 | content: none !important;
172 | }
173 |
174 | #mediamanager__page .namespaces ul .selected {
175 | background-color: __highlight__;
176 | font-weight: bold;
177 | }
178 |
179 |
180 | /*____________ file list panel ____________*/
181 |
182 | /* file list header */
183 |
184 | #mediamanager__page .panelHeader form.options {
185 | float: right;
186 | margin-top: .25rem;
187 | }
188 | [dir=rtl] #mediamanager__page .panelHeader form.options {
189 | float : left
190 | }
191 | #mediamanager__page .panelHeader ul {
192 | list-style: none;
193 | margin: 0;
194 | padding: 0;
195 | }
196 | #mediamanager__page .panelHeader ul li {
197 | color: @ini_text;
198 | float: left;
199 | line-height: 1;
200 | padding-left: 3px;
201 | }
202 | [dir=rtl] #mediamanager__page .panelHeader ul li {
203 | padding-right: 3px;
204 | padding-left: 0;
205 | float: right;
206 | }
207 |
208 | #mediamanager__page .panelHeader ul li.ui-controlgroup-horizontal {
209 | padding-left: 2px;
210 | margin: 0 0 0 5px;
211 | }
212 | /* #mediamanager__page .panelHeader ul li.listType {
213 | background: url('../../images/icon-list.png') 3px 1px no-repeat;
214 | }
215 | #mediamanager__page .panelHeader ul li.sortBy {
216 | background: url('../../images/icon-sort.png') 3px 1px no-repeat;
217 | } */
218 | [dir=rtl] #mediamanager__page .panelHeader ul li.ui-controlgroup-horizontal {
219 | padding-left: 0;
220 | padding-right: 2px;
221 | margin: 0 5px 0 0;
222 | background-position: right 1px;
223 | }
224 |
225 | #mediamanager__page .panelHeader form.options .ui-controlgroup-horizontal label{
226 | font-size: 90%;
227 | margin-right: -0.4em;
228 | padding: .3em .5em;
229 | line-height: 1;
230 | }
231 |
232 | /* file list content */
233 |
234 | #mediamanager__page .filelist ul {
235 | padding: 0;
236 | margin: 0 10px 0 0;
237 | }
238 | [dir=rtl] #mediamanager__page .filelist ul {
239 | margin: 0 0 0 10px;
240 | }
241 | #mediamanager__page .filelist ul.rows {
242 | margin: 0;
243 | }
244 | #mediamanager__page .filelist .panelContent ul li:hover {
245 | background-color: @ini_background_alt;
246 | }
247 |
248 | #mediamanager__page .filelist li dt a {
249 | vertical-align: middle;
250 | display: table-cell;
251 | overflow: hidden;
252 | }
253 | #mediamanager__page .filelist ul dl dt {
254 | display: block;
255 | border-radius: 2px;
256 | box-shadow: inset 1px 1px 2px 1px #00000066;
257 | background: @ini_background_alt url("data:image/gif;base64,R0lGODlhEAAQAHAAACwAAAAAEAAQAIHd3d3u7u4AAAAAAAACH4RvoauIzNyBSyYaLMDZcv15HAaSIlWiJ5Sya/RWVgEAOw==") center;
258 | }
259 | #mediamanager__page .filelist ul dl dt img {
260 | -webkit-filter: drop-shadow(2px 2px 2px #00000066);
261 | filter: drop-shadow(2px 2px 2px #00000066);
262 | }
263 | /* file list as thumbs */
264 |
265 | #mediamanager__page .filelist .thumbs li {
266 | width: 114px;
267 | min-height: 132px;
268 | display: inline-block;
269 | /* the right margin should visually be 10px, but because of its inline-block nature the whitespace inbetween is about 4px more */
270 | margin: 0 6px 10px 0;
271 | background-color: @ini_background_neu;
272 | color: @ini_text;
273 | padding: 5px;
274 | vertical-align: top;
275 | text-align: center;
276 | position: relative;
277 | line-height: 1.2;
278 | }
279 | [dir=rtl] #mediamanager__page .filelist .thumbs li {
280 | margin-right: 0;
281 | margin-left: 6px;
282 | }
283 |
284 | #mediamanager__page .filelist .thumbs li dt a {
285 | width: 110px;
286 | height: 110px;
287 | }
288 |
289 | #mediamanager__page .filelist .thumbs li dt a img {
290 | display: block;
291 | max-width: 150px;
292 | max-height: 150px;
293 | padding: 5px;
294 | margin: auto;
295 | }
296 |
297 | #mediamanager__page .filelist .thumbs li .name,
298 | #mediamanager__page .filelist .thumbs li .size,
299 | #mediamanager__page .filelist .thumbs li .filesize,
300 | #mediamanager__page .filelist .thumbs li .date {
301 | display: block;
302 | overflow: hidden;
303 | text-overflow: ellipsis;
304 | white-space: nowrap;
305 | font-size: 10pt;
306 | }
307 | #mediamanager__page .filelist .thumbs li .name {
308 | padding: 5px 0;
309 | font-weight: bold;
310 | }
311 | #mediamanager__page .filelist .thumbs li .date {
312 | font-style: italic;
313 | white-space: normal;
314 | }
315 |
316 | /* file list as rows */
317 |
318 | #mediamanager__page .filelist .rows li {
319 | list-style: none;
320 | display: block;
321 | position: relative;
322 | max-height: 50px;
323 | margin: 0 0 3px 0;
324 | background-color: @ini_background;
325 | color: @ini_text;
326 | overflow: hidden;
327 | }
328 |
329 | #mediamanager__page .filelist .rows li:nth-child(2n+1) {
330 | background-color: @ini_background_neu;
331 | }
332 |
333 | #mediamanager__page .filelist .rows li dt {
334 | float: left;
335 | width: 10%;
336 | height: 40px;
337 | text-align: center;
338 | }
339 | [dir=rtl] #mediamanager__page .filelist .rows li dt {
340 | float: right;
341 | }
342 | #mediamanager__page .filelist .rows li dt a {
343 | width: 100px;
344 | height: 40px;
345 | }
346 |
347 | #mediamanager__page .filelist .rows li dt a img {
348 | max-width: 40px;
349 | max-height: 40px;
350 | }
351 |
352 | #mediamanager__page .filelist .rows li .name,
353 | #mediamanager__page .filelist .rows li .size,
354 | #mediamanager__page .filelist .rows li .filesize,
355 | #mediamanager__page .filelist .rows li .date {
356 | overflow: hidden;
357 | text-overflow: ellipsis;
358 | float: left;
359 | margin-left: 1%;
360 | white-space: nowrap;
361 | }
362 | [dir=rtl] #mediamanager__page .filelist .rows li .name,
363 | [dir=rtl] #mediamanager__page .filelist .rows li .size,
364 | [dir=rtl] #mediamanager__page .filelist .rows li .filesize,
365 | [dir=rtl] #mediamanager__page .filelist .rows li .date {
366 | float: right;
367 | margin-left: 0;
368 | margin-right: 1%;
369 | }
370 |
371 | #mediamanager__page .filelist .rows li .name {
372 | width: 30%;
373 | font-weight: bold;
374 | }
375 | #mediamanager__page .filelist .rows li .size,
376 | #mediamanager__page .filelist .rows li .filesize {
377 | width: 15%;
378 | }
379 | #mediamanager__page .filelist .rows li .date {
380 | width: 20%;
381 | font-style: italic;
382 | white-space: normal;
383 | }
384 |
385 | /* upload form */
386 |
387 | #mediamanager__page div.upload {
388 | padding-bottom: 0.5em;
389 | }
390 |
391 | /*____________ file panel ____________*/
392 |
393 | #mediamanager__page .file ul.actions {
394 | text-align: center;
395 | margin: 0 0 5px;
396 | padding: 0;
397 | list-style: none;
398 | }
399 | #mediamanager__page .file ul.actions li {
400 | display: inline;
401 | margin: 0;
402 | }
403 |
404 | #mediamanager__page .file div.image {
405 | margin-bottom: 5px;
406 | text-align: center;
407 | }
408 |
409 | #mediamanager__page .file div.image img {
410 | width: 100%;
411 | }
412 |
413 | #mediamanager__page .file dl {
414 | margin-bottom: 0;
415 | }
416 | #mediamanager__page .file dl dt {
417 | font-weight: bold;
418 | display: block;
419 | background-color: @ini_background_alt;
420 | padding-left: .25em;
421 | }
422 | #mediamanager__page .file dl dd {
423 | display: block;
424 | background-color: @ini_background_neu;
425 | padding-left: 1em;
426 | }
427 |
428 | /* file meta data edit form */
429 |
430 | #mediamanager__page form.meta div.row {
431 | margin-bottom: 5px;
432 | }
433 |
434 | #mediamanager__page form.meta label span {
435 | display: block;
436 | }
437 |
438 | #mediamanager__page form.meta input {
439 | width: 50%;
440 | }
441 |
442 | #mediamanager__page form.meta button {
443 | width: auto;
444 | }
445 |
446 | #mediamanager__page form.meta textarea.edit {
447 | height: 6em;
448 | width: 95%;
449 | min-width: 95%;
450 | max-width: 95%;
451 | }
452 |
453 | /* file revisions form */
454 |
455 | #mediamanager__page form.changes ul {
456 | margin-left: 10px;
457 | padding: 0;
458 | list-style-type: none;
459 | }
460 | [dir=rtl] #mediamanager__page form.changes ul {
461 | margin-left: 0;
462 | margin-right: 10px;
463 | }
464 |
465 | #mediamanager__page form.changes ul li div.li div {
466 | font-size: 90%;
467 | color: @ini_text_neu;
468 | padding-left: 18px;
469 | }
470 | [dir=rtl] #mediamanager__page form.changes ul li div.li div {
471 | padding-left: 0;
472 | padding-right: 18px;
473 | }
474 | #mediamanager__page form.changes ul li div.li input {
475 | position: relative;
476 | top: 1px;
477 | }
478 |
479 | /* file diff view */
480 |
481 | #mediamanager__diff table {
482 | table-layout: fixed;
483 | border-width: 0;
484 | }
485 |
486 | #mediamanager__diff td,
487 | #mediamanager__diff th {
488 | width: 48%;
489 | margin: 0 5px 10px 0;
490 | padding: 0;
491 | vertical-align: top;
492 | text-align: left;
493 | border-color: @ini_background;
494 | }
495 | [dir=rtl] #mediamanager__diff td,
496 | [dir=rtl] #mediamanager__diff th {
497 | margin: 0 0 10px 5px;
498 | text-align: right;
499 | }
500 |
501 | #mediamanager__diff th {
502 | font-weight: normal;
503 | background-color: @ini_background;
504 | line-height: 1.2;
505 | }
506 | #mediamanager__diff th a {
507 | font-weight: bold;
508 | }
509 | #mediamanager__diff th span {
510 | font-size: 90%;
511 | }
512 |
513 | #mediamanager__diff dl dd strong{
514 | background-color: __highlight__;
515 | color: @ini_text;
516 | font-weight: normal;
517 | }
518 |
519 | /* image diff views */
520 |
521 | #mediamanager__page .file form.diffView {
522 | margin-bottom: 10px;
523 | display: block;
524 | }
525 |
526 | #mediamanager__diff div.slider {
527 | margin: 10px;
528 | width: 95%;
529 | }
530 |
531 | #mediamanager__diff .imageDiff {
532 | position: relative;
533 | }
534 | #mediamanager__diff .imageDiff .image2 {
535 | position: absolute;
536 | top: 0;
537 | left: 0;
538 | }
539 |
540 | #mediamanager__diff .imageDiff.opacity .image2 {
541 | opacity: 0.5;
542 | }
543 |
544 | #mediamanager__diff .imageDiff.portions .image2 {
545 | border-right: 1px solid red;
546 | overflow: hidden;
547 | }
548 |
549 | #mediamanager__diff .imageDiff.portions img {
550 | float: left;
551 | }
552 |
553 | #mediamanager__diff .imageDiff img {
554 | width: 100%;
555 | max-width: none;
556 | }
557 |
558 | /* dark mode overrides */
559 | @media (prefers-color-scheme: dark) {
560 | body.darkmode #mediamanager__page .panelHeader,
561 | body.darkmode ul.tabs li strong {
562 | background-color: transparent;
563 | border-color: @ini_text_alt_dark;
564 | color: @ini_text_alt_dark;
565 | font-weight: bold;
566 | border-bottom-color: @ini_background_alt_dark;
567 | }
568 | body.darkmode .tabs > ul li a,
569 | body.darkmode ul.tabs li a {
570 | background-color: transparent;
571 | border-color: @ini_text_dark;
572 | color: @ini_text_dark;
573 | }
574 |
575 | body.darkmode #mediamanager__page .namespaces h2 {
576 | background-color: @ini_background_alt_dark;
577 | border-color: @ini_text_dark;
578 | border-bottom-color: @ini_background_alt_dark;
579 | color: @ini_headlines_dark;
580 | }
581 | body.darkmode #mediamanager__page .filelist .thumbs li {
582 | background-color: @ini_background_neu_dark;
583 | color: @ini_text_dark;
584 | }
585 | body.darkmode #mediamanager__page .filelist .panelContent ul li:hover {
586 | background-color: rgba(0,0,0,.2);
587 | }
588 |
589 | body.darkmode #mediamanager__page .filelist .rows li {
590 | background-color: @ini_background_dark;
591 | color: @ini_text_dark;
592 | }
593 | body.darkmode #mediamanager__page .filelist .rows li:nth-child(2n+1) {
594 | background-color: @ini_background_alt_dark;
595 | }
596 |
597 | #mediamanager__page .filelist ul dl dt {
598 | background: @ini_background_alt_dark url("data:image/gif;base64,R0lGODlhEAAQAHAAACwAAAAAEAAQAIFeXmJISEwAAAAAAAACH4RvoauIzNyBSyYaLMDZcv15HAaSIlWiJ5Sya/RWVgEAOw==") center;
599 | }
600 |
601 |
602 | body.darkmode #mediamanager__page .ui-resizable-e {
603 | background-color: @ini_background_dark;
604 | }
605 | body.darkmode #mediamanager__page .ui-resizable-e:hover,
606 | body.darkmode [dir=rtl] #mediamanager__page .ui-resizable-w:hover {
607 | background-color: @ini_background_neu_dark;
608 | }
609 | body.darkmode #mediamanager__page .file dl dt { background-color: rgba(0,0,0,.5); }
610 | body.darkmode #mediamanager__page .file dl dd { background-color: rgba(0,0,0,.2); }
611 | body.darkmode #mediamanager__page .namespaces ul .selected { background-color: @ini_background_alt_dark; }
612 |
613 | }
--------------------------------------------------------------------------------