From 582ed5fd60aed7543ac98d2f80afbbec17121507 Mon Sep 17 00:00:00 2001 From: luxick Date: Wed, 25 Feb 2026 13:34:34 +0100 Subject: [PATCH] Rework handling of icons and tinting of external icons --- README.md | 19 ++++- css/_edit.css | 21 +++++ css/pagetools.less | 1 - css/usertools.less | 2 +- images/button-css.png | Bin 297 -> 0 bytes images/button-donate.gif | Bin 187 -> 0 bytes images/button-dw.png | Bin 398 -> 0 bytes images/button-html5.png | Bin 305 -> 0 bytes images/button-php.gif | Bin 207 -> 0 bytes images/button-rss.png | Bin 178 -> 0 bytes images/license.txt | 5 -- images/pagetools-build.php | 121 --------------------------- images/pagetools-sprite.png | Bin 7759 -> 0 bytes images/pagetools/00_default.png | Bin 494 -> 0 bytes images/pagetools/01_edit.png | Bin 519 -> 0 bytes images/pagetools/02_create.png | Bin 580 -> 0 bytes images/pagetools/03_draft.png | Bin 592 -> 0 bytes images/pagetools/04_show.png | Bin 321 -> 0 bytes images/pagetools/05_source.png | Bin 478 -> 0 bytes images/pagetools/06_revert.png | Bin 462 -> 0 bytes images/pagetools/07_revisions.png | Bin 769 -> 0 bytes images/pagetools/08_backlink.png | Bin 527 -> 0 bytes images/pagetools/09_subscribe.png | Bin 374 -> 0 bytes images/pagetools/10_top.png | Bin 297 -> 0 bytes images/pagetools/11_mediamanager.png | Bin 320 -> 0 bytes images/pagetools/12_back.png | Bin 288 -> 0 bytes images/pagetools/license.txt | 4 - images/usertools.png | Bin 1428 -> 0 bytes script.js | 28 +++++++ style.ini | 1 + tpl_header.php | 2 +- 31 files changed, 70 insertions(+), 134 deletions(-) delete mode 100755 images/button-css.png delete mode 100755 images/button-donate.gif delete mode 100755 images/button-dw.png delete mode 100755 images/button-html5.png delete mode 100755 images/button-php.gif delete mode 100755 images/button-rss.png delete mode 100755 images/license.txt delete mode 100755 images/pagetools-build.php delete mode 100755 images/pagetools-sprite.png delete mode 100755 images/pagetools/00_default.png delete mode 100755 images/pagetools/01_edit.png delete mode 100755 images/pagetools/02_create.png delete mode 100755 images/pagetools/03_draft.png delete mode 100755 images/pagetools/04_show.png delete mode 100755 images/pagetools/05_source.png delete mode 100755 images/pagetools/06_revert.png delete mode 100755 images/pagetools/07_revisions.png delete mode 100755 images/pagetools/08_backlink.png delete mode 100755 images/pagetools/09_subscribe.png delete mode 100755 images/pagetools/10_top.png delete mode 100755 images/pagetools/11_mediamanager.png delete mode 100755 images/pagetools/12_back.png delete mode 100755 images/pagetools/license.txt delete mode 100755 images/usertools.png diff --git a/README.md b/README.md index 1e0bd1c..b8ed41b 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,21 @@ This is a fork of the original default dokuwiki template. ## Changes from the original template - Default font changed to "Perfect DOS VGA 437 Win" -- Enhanced header search with DokuWiki quicksearch suggestions, keyboard navigation, and disabled browser autofill \ No newline at end of file +- Enhanced header search with DokuWiki quicksearch suggestions, keyboard navigation, and disabled browser autofill + +## Icon theming (light/dark) +- Header tool icons (user tools and site tools) are rendered as inline SVG. +- The pagetools footer is intentionally text-only (no icons). +- Icon color is controlled through `@ini_icons` (placeholder `__icons__`) in [replacements] inside `style.ini`. +- Hover/active icon color follows `@ini_link` to match link interaction color. + +## Edit toolbar icons +- The edit page toolbar (`?do=edit`) is generated by DokuWiki core and uses PNG toolbar images. +- This template converts those toolbar `` icons to CSS mask icons at runtime, then applies `@ini_icons`. +- Hover/active/focus color follows `@ini_link`. +- This keeps DokuWiki core files untouched while still allowing light/dark icon theming. + +### About coloring SVG icons from the outside +- Recommended: inline SVG + CSS (`fill`, `stroke`, or `currentColor`). +- Limited: external SVG via `` or `background-image` cannot reliably be recolored with plain CSS. +- Workarounds for external SVG exist (`mask-image`, CSS `filter`), but they are less maintainable and less precise. \ No newline at end of file diff --git a/css/_edit.css b/css/_edit.css index 4888151..de55ba7 100755 --- a/css/_edit.css +++ b/css/_edit.css @@ -30,6 +30,27 @@ float: right; } +.dokuwiki div.toolbar #tool__bar button.toolbutton .toolicon { + display: inline-block; + width: 16px; + height: 16px; + background-color: @ini_icons; + -webkit-mask-image: var(--icon-url); + mask-image: var(--icon-url); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; +} + +.dokuwiki div.toolbar #tool__bar button.toolbutton:hover .toolicon, +.dokuwiki div.toolbar #tool__bar button.toolbutton:active .toolicon, +.dokuwiki div.toolbar #tool__bar button.toolbutton:focus .toolicon { + background-color: @ini_link; +} + /* picker popups (outside of .dokuwiki) */ div.picker { width: 300px; diff --git a/css/pagetools.less b/css/pagetools.less index 8106c40..3fb9eac 100755 --- a/css/pagetools.less +++ b/css/pagetools.less @@ -79,7 +79,6 @@ text-transform: uppercase; } - /* Hide SVG icons - we use text-only status bar style */ svg { display: none; } diff --git a/css/usertools.less b/css/usertools.less index cdd8d40..07239cf 100755 --- a/css/usertools.less +++ b/css/usertools.less @@ -19,7 +19,7 @@ height: 1.4em; width: 1.4em; vertical-align: middle; - fill: @ini_border; + fill: @ini_icons; margin-right: 0.2em; } } diff --git a/images/button-css.png b/images/button-css.png deleted file mode 100755 index 5c0f5a9936e2c0c52b150f138b9df462b58c5724..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmV+^0oMMBP)K~=a4CjcodXPV4VJ#(T~ivj_KbD4HB-<^MP-5Cc03hfj3 zvVX5FJDvqHaRJw=1q?uhO`-Ir`<7e(ax^f4+{m?H6&H}iYNGhh+q);tpXR^-RtPba z3!6gb|I_~lNPcBtfSR}pf-n^_?hpMN#QuYU#R1|*1`xuku$F0O?c8e}eF+47&0xt; vE_pkk=7j(ug^WNH1hN^QLZaiE=+pxMLO3L|k%~*E00000NkvXXu0mjfHHd&9 diff --git a/images/button-donate.gif b/images/button-donate.gif deleted file mode 100755 index bba284e214e3ff94657be76a4b399291bc55768d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187 zcmV;s07U;sNk%w1VNd`M0HFc^iH>>y|NmUfD`sY9EC2ui08juA0007%oR6u??GI0w zwAzca-n^S2gyKk+VF0A+%C_zcyTNDHH5%vo&dvj9698>Ep7GeD5huZ-Y_fu;icTqj zGPNdu#GuI8!ilF@vYDy^Z-*vkGd8}S_aHg~6{$8|%|_hJ_)H|Ur} pc(vE&C4_W|>(N06SCBTRH#$ diff --git a/images/button-dw.png b/images/button-dw.png deleted file mode 100755 index 8d6aea898634683b381f03903c824449f9e22985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmV;90df9`P)IWd0001BP)t-se<}m3 ztVh_{V&&1=`kQw7;^EB9%(Nu}#^uh5+nx%c68re(sEl^z#IVX& zH|F)=ORGM?$h7$J%5H>>r?8-dmYrRBgG+06J6&p1Q&a!{|8{(4C0)l#0002#Nkl5tI7-PVBZ%DN=jaj!CGr<5Lpf9a5rrHQXKDg<5o+j1zRYzBl znUBZ5q$B;lf-wd%0yetn6*CcC!0SjDPIuFW0Hn2kztOWT5e1BQpv)Uk=1oKDW?%9! z45POMklQc-q5ggyzSw#OI2zvm!}C4W??C!E5goD}A2?+Zp`B1fAuWcO3GNlc)PCC0 sjeib8=1n;=VNG5A8lC5y2>5XR0koxs7960U)Bpeg07*qoM6N<$f@=J^;s5{u diff --git a/images/button-html5.png b/images/button-html5.png deleted file mode 100755 index f7b068811dd47da122d16ade76d538978227a71b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmV-10nYx3P)IWd0000mP)t-sho{Ip zYNM~h)*4Qc_WAo>hqdYM^3L7rtgf)$-`>j3(%R(iP*6~2W@i8Y|A~%y(RKvh0002I zNkl+|Hj5M6Mh{;k4Okxsi=XBVy#A2_RhgKi z1^~~iAGrrYm;p`^nD}+Bb?kxDhKEp1Rdg&JR~E?o;XUiMKD>Y)kzy0kOxQc=e1cWH z%B}VWszD+G3Bx!ZOR0Gm|NMuXW>Awxhc!OH5*}63J4g>}&7>vOI?3bs9b~n4P=y&# zfyn5+pJQ*!p!3-o_#CPlkQak}ZA+Bj@Y5&t0{{R2q*;g6u z>$(gmp6Kb~7*fIbbdn=ig8>iA?T`QKrx{H@daQX;_YRfWlMgG%{#|IwZSlHb&x!Je z4Y!iHOCC!+2$H^VQHNLX*er%T*W4MlC-ZljuW77mO_ADlo=5i3wqNZN98MV3*S4>f bd~3;Q70byob83|b&@u*3S3j3^P6 - * @deprecated 2018-06-15 we no longer use PNG based icons - * @todo Maybe add some more error checking - */ -$GAMMA = 0.8; -$OPTIPNG = '/usr/bin/optipng'; - -if('cli' != PHP_SAPI) die('please run from commandline'); - -// load input images -$input = glob('pagetools/*.png'); -sort($input); -$cnt = count($input); -if(!$cnt){ - die("No input images found. This script needs to be called from within the image directory!\n"); -} - -// create destination image -$DST = imagecreatetruecolor(30,$cnt*45*2); -imagesavealpha($DST, true); -$C_trans = imagecolorallocatealpha($DST, 0, 0, 0, 127); -imagefill($DST, 0, 0, $C_trans); - -// load highlight color from style.ini -$ini = parse_ini_file('../style.ini',true); -$COLOR = hex2rgb($ini['replacements']['__link__']); -$C_active = imagecolorallocate($DST, $COLOR['r'],$COLOR['g'],$COLOR['b']); - -// add all the icons to the sprite image -for($i=0; $i<$cnt; $i++){ - $base = $i*90; - - $IN = imagecreatefrompng($input[$i]); - imagesavealpha($IN, true); - imagecolorscale($IN,$GAMMA); - imagecopy($DST,$IN, 0,$base, 0,0, 30,30); - imagedestroy($IN); - - $IN = imagecreatefrompng($input[$i]); - imagesavealpha($IN, true); - imagecolorscale($IN,$GAMMA); - imagecopy($DST,$IN, 0,$base+45, 0,0, 30,30); - imagedestroy($IN); - - imagelayereffect($DST, IMG_EFFECT_OVERLAY); - imagefilledrectangle($DST, 0,$base+45, 30,$base+45+30, $C_active); - imagelayereffect($DST, IMG_EFFECT_NORMAL); -} - -// output sprite -imagepng($DST,'pagetools-sprite.png'); -imagedestroy($DST); - -// optimize if possible -if(is_executable($OPTIPNG)){ - system("$OPTIPNG -o5 'pagetools-sprite.png'"); -} - -/** - * Convert a hex color code to an rgb array - */ -function hex2rgb($hex) { - // strip hash - $hex = str_replace('#', '', $hex); - - // normalize short codes - if(strlen($hex) == 3){ - $hex = substr($hex,0,1). - substr($hex,0,1). - substr($hex,1,1). - substr($hex,1,1). - substr($hex,2,1). - substr($hex,2,1); - } - - // calc rgb - return ['r' => hexdec(substr($hex, 0, 2)), 'g' => hexdec(substr($hex, 2, 2)), 'b' => hexdec(substr($hex, 4, 2))]; -} - -/** - * Scale (darken/lighten) a given image - * - * @param resource $img The truetype GD image to work on - * @param float $scale Scale the colors by this value ( <1 darkens, >1 lightens) - */ -function imagecolorscale(&$img, $scale){ - $w = imagesx($img); - $h = imagesy($img); - - imagealphablending($img, false); - for($x = 0; $x < $w; $x++){ - for($y = 0; $y < $h; $y++){ - $rgba = imagecolorat($img, $x, $y); - $a = ($rgba >> 24) & 0xFF; - $r = ($rgba >> 16) & 0xFF; - $g = ($rgba >> 8) & 0xFF; - $b = $rgba & 0xFF; - - $r = max(min(round($r*$scale),255),0); - $g = max(min(round($g*$scale),255),0); - $b = max(min(round($b*$scale),255),0); - - $color = imagecolorallocatealpha($img, $r, $g, $b, $a); - imagesetpixel($img, $x, $y, $color); - } - } - imagealphablending($img, true); -} - diff --git a/images/pagetools-sprite.png b/images/pagetools-sprite.png deleted file mode 100755 index 8e7f7f876b60b531bf13a32bfc800eee88d53c07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7759 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 diff --git a/images/pagetools/00_default.png b/images/pagetools/00_default.png deleted file mode 100755 index bcb2de0f8b6c775715495a66e023b5db0d612787..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 494 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGy8?VdT>t<7|L)Vb=Wjl}e*fje z=kH&?|GNM5-IG@zzyJLG_wT>EPu>EhzI^-n@8ACyZ$E$j`t!lFcaL9u`0?xa?>~Qm zvJaoX2Pyzcy?XcMWy%pixg= zegvw48v=C3+YeuXP69dxXy9j{f!}_9`~C~)9-z5ElY#a^%sHw3-w5anwUQveU_xt`d zx&Mp%O?vij*81bV@bx~sJ9&(bGcN{9rY_L5uQ~PM`$Q_DMv3<$Az>8$OpcC0QxQQ!cw>vbYP}8bf8($Q9lOiM;Q4F*n$Z6ssD zQ=rtg#w)5u-wifhr^>qF>|7Bt_TsG6gHn@o7|lbQAm;TxRzMXeXFhO7r?l__&UF9Y zd2=12j6TCe0L#bz#P~7=RN~sVGrq!TE^@vkn$}QNw*r^}`~6@5EZ=ZS&bO24 zE+bF?GhiR^WfWdvG#8Ds7Q3!v3(t_T1}rx?&S{K&tbi(m3#DdTYPrE_VNu60cIv_o z{2o?-c>r6~FN5}{r!6Pt2M_`1G!U&##@3zo}_1qI?{+0C)|7|$U3mL{aKW`F#d=6(n0$0Y!d|Pr4FTIfO9%*)T*qB;b$6AmKO||0K0%ylW`BDxmt8oxU7ua78L^~z%DXYfcYJc z_ChJjPWOgQ-Ht#8On_a$?I`SFG}lhFGVMM_M11gx>$;{6KF0$TV19#j^5sc;G{T-k zU;$JZER>qMQgaWZY=h_N&VaTX zgD|C45D9d(NMD=l%aabF_fMPMFz(We4rQP`Uu(Kq24bJi9YXP(&*3C1oG8i3Mlp@1 zS9AaD(BG+r4rh$~rXAYcI8#g`=exI;b<$xN=q0}CIW`S|!^( S?q)&&0000a{!e@a|G&Y<=1FkgG*2FIok8C<_)s?jtB=k6cxSntHvJ3|6$sk^e>bIdtte;xN}m=i9e|DCqGy}yFy%R*rJ zsz|!3^aXKm7Os_=68`zc4+wkkm#`y!u&uz5bhX_xv$!|YPWrekqQ8E*R-4jCvA?@~ zBQPXwU2NJtGmC%E=uso2_ls>mbUc_{_=x$<<62;tcU7(3a~X$OzlUhjx0-$U5Ox$@ z-LEoexbOO5J)X zoa5}`Dv#+2Y~cQB!Mq?o=8~5SUoh(=FWo;Wn3u#)Wm0f>flg&oFfWUr%B0|n%iK@p erc<$e0uTr^Q(7XUcdkH=EK*wAHTi( z^zFmv?;pQ>|Md08=Wjp1eE<3F`!Aqgpe~?kK%;<$0L=#ipiya0qW1%><|_&E3ucg) z*Vp&=@9#f<{{H*-%O3To0%eLlT^vIyZtcCio2$V1U;I(MaV)q+eK};>#}_UGfVV}k{8+B^NsEK z8|;5z%@P~u9@!%mjS|rvAGr+k6pu+C+0hoXZd?772dd&fXXp5^a@lVLTF>C=>gTe~ HDWM4f(mA;> diff --git a/images/pagetools/05_source.png b/images/pagetools/05_source.png deleted file mode 100755 index dffe1931a2839dcc9cd31f3c6655dcb0a2836384..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmV<40U`d0P)urND7=__(zz7+^qhth+(2+bsMqz@+y#;c`A*2lflGF25rmEViiHT7D1nE(c@#j}X zs8a6$T*WQ?7fmB_)Lzc7={~}WVw}D#sf)v&Cim^&dm6OQ{k`_j+Dl&)J|2&X9Dxki zqJIvEWDmhpox{!H5EICpdx-2MP~0h8)y=T38<1_9Lv(hSdu4{eGjwpctQxbg8qj^{ z$HEy+;2ERf@UE;aq1@Ml(6G$NEZN}j+pdBLi~gPu4j1oxQ0K6p4-ap)r6uIsGWb=? zjLeb?4zG)yAyDwg#TiYY@Q*9Y--iUU6orKS3`hru#d7@?6Udw!mAwSAo&Rzz+*T39 zJlmd(bKhswB}F8RdP;^d5emI{lnF z{PdJM(`#5fCQd&l8Gf=!W_k^a@g&pZ$qK(^s@Jf1cwK42Hz$7Me&Xi#pTt$eABH0H U47>Vpg8%>k07*qoM6N<$g3wIqUH||9 diff --git a/images/pagetools/06_revert.png b/images/pagetools/06_revert.png deleted file mode 100755 index 18c6444744c7f03b1789b25c1be0182408caa6ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmV;<0WtoGP)1WKR;OPCTU!7F$D9~I z^J*}PUjY8aC;SX=(C`&-DI^RMzFe=0d_v>z!`005V-7ocQE5UCA*q+Hah8`;G6bn!rloLMIgqF}Aw#S_`D>dP! zy(i@hY}O>NcUVfYVw|LfA#|)y>NUZT>K&HOJcxp>^*GIE1YtVJcXgcPZj|H@W`l%l zr*mcqjrm~VW1MNijWv9TQrx@}=Da2}>|t|CAdLEkIU5oh_VE6gXhI|C6Xl#k5VSSC zJDjHk!Fe{!8IK_N*6@}gf)J9j#N@n7XmL8j(%QrULC|E4bB{}gAc)Il3-4pK+DC>U z%<1ljjn6Cc?#!6_ENfU=?IL%%iwvPnLe_^`(0?)xJGra1hIsgCw07*qoM6N<$ Eg5lfP1^@s6 diff --git a/images/pagetools/07_revisions.png b/images/pagetools/07_revisions.png deleted file mode 100755 index e599d016c4742800404b46eb8b18f2614a9402a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769 zcmV+c1OEJpP)&>;17kRU%hc(XewILLN)(Eh{+P9A8OE)F+iyO_64h#NSh^e7;3 zQ11?2Z}$}hgYEvnn;)b@Y*2Qw&+qM7l)cy?@qHku-yFQ!>=Xn(QNeB~dW)}lZ=ZUz z+U%3ACz9yk#d@b9s7cZgRO`(?XLXRia9D}(Z>d-v8RymY$E$zZNFc9@OZis@8#L?e8$MFEb>sBkBK9BmOTYQeDKIE8wk>; z$@(V39*28kD`briX%spgj9$arihh5Y#shPW`!e26BDx3RM0%DA0sG2cPRu zzv|QY_=3Sx#fcr{hLc0tyGdbhCl1n+!SrHFUheZ@eEmzG$7yRBh ze9nIlpDUOSzm>@SK6x4z0_XdD_?wGDb$vH6kieouhQ#OiHN+JxBrwz`U;4b|3iTD& z2)Tgu`QQ3Me|7tu`fKHS2QaU%+wcGU3-g|Tj7+#(Bch(200000NkvXXu0mjf_eX5z diff --git a/images/pagetools/08_backlink.png b/images/pagetools/08_backlink.png deleted file mode 100755 index aa34e27750dd2034a32a17a86c85cecbc781c687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmV+q0`UEbP)JH4V><~?ch9V@tSDp^$r{89 z4?mgMgN`N8AAXqGm-r43v^`ERgW(ayr-!TNFo9iA#7_%v>wdDUdvikUE?r?fQ^f4y zjdnj_PKX45nUFripom$+>#Ccv6_+3M$o#^<+6VXjOu-5&(zS3Vz0n42Pw54+jCicj-u3UiZ+*seJU3~Aj8$n|+0 z7aly#cOfzVyleWvq6y5e>1EFEDPs0Ni!9mwM*G4i)G)n0uNlHCrW0kFP8Lm)VS1TY zo(T+!m@RxZuVKu*jt-}}yg9Gi%X!TZW;P=$r!WY@f6fIzV_CwI{&<(mlH(&!#k`36v8)O4-zy{fX4g65GqEO5wToT~l56KTvbwa5~TL}f} zr-RM0zE?g-`Y*=t7=G{YKlm8o>+L3#h|qu{O4#Ac<*Ll1f(B5*L$Je5dr?P#hhE?j zpv(@Rn^s+?rkybhBN$l?Qnf;)FZ+nKo0~sM95%=_lL9k z><;Gy$M-2@nBIR!%4drm-qt5Q;WH*kP@a=~uivo4X?N5E2@X?ud_u_6=X-|)^)bWi z?Lj>v90HUDd^GMHB4jbct4%G#9Fsg{G4@^Gz8PMwYyD#OeO(tw`TUgoK8pK$sLKp5 ze(co|;Gq|I1Sqq^-&Q+i9u+iz3Lb(T{<_=>B_cGSh!S@A%VMLyZT#yqhTl8<6P;bu U_|Cr}YXATM07*qoM6N<$f_HwY4*&oF diff --git a/images/pagetools/10_top.png b/images/pagetools/10_top.png deleted file mode 100755 index b930fd25f1f0a1b5741100ca881444a6a261572b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmV+^0oMMBP)&lMpB+XCChR!I2P7q~y%Phhy(3C43_>3wQhDBjE?h)x)7X zBm~k-uNH2@eoBZixj0<6-Gp!ke|ETRf+wk(fLPoK`RH&_hkFvj1?J?U!g;lu(bFj@ zchFG!Wj9m8x~yoSG5PT(Z=f*=ud^B&lkjR=L1Pkr-;~gpgqQ0A8k6v1l|y3^e*F+= vOu{d30*y&{zRaL82|q8k(A;p?z!?4n8+$YI=NBuM00000NkvXXu0mjf!?b^| diff --git a/images/pagetools/11_mediamanager.png b/images/pagetools/11_mediamanager.png deleted file mode 100755 index 71b5a3372321c7393120c1ab41e8b674e4dfb883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmV-G0l)r^|$3jREDM%? z=$ZyQ8RN4w=N{bDY0;_E>w1;ph*-9qG-vZ&5Raetgph6!9T$sD;Fk5%hJFgygnka! zfR=+V{b2Os+~YV&#cXjdz_uw=(#3@+UNRv>ImcW`1cS1vMeb`TNZz>Z7A4;V=1g3T zDS#S`1_CR5m5B|g;M*jwztz%Et7Y@Jn#46FMnhmM+v?ReL<4+{RvXa&{hdzb2nW1(D diff --git a/images/pagetools/12_back.png b/images/pagetools/12_back.png deleted file mode 100755 index 6d6093ed6bb84509e772b7b8584b33c8c2051a74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmV+*0pI?KP)zllEOz;>b1b=+8^8(;0j<5$u zcsoNUui80T2%4PXvhEGV1Z~c+t-5!@9-QI4YJ>d{1zePZnKz_pF>r$A{)W+m5 mEIv|elArvfA69aNkMJLH);B{z8_V$k0000En(4ys93wKYWDZZ|O2;^Ja|f4^F-w%Ker$C{m;-Q3)?SS(7Va(Q_f*JoyC=H})) zJ3F0D=hD*B(9jTMS65d_{?ybIfI^`lqZ*B-r>6(EMn^}%QK?iAK?-Oh1g6z$#lEt# z0vZ4eV0Sni;0z25APa6G1b{+%dwY=!WReCaP=-}_8yp-27#SJCbztlu<084EB2))W zoFgN$<1hHb!^2R(A@=$Cd63Z%+(L`U60n1b{s4dmK>7q97(PjYUayA-;OXgU)Tq^J z(ISX|j1XjD7$)p_}9XP=v6>t|EG?4rY zdkB%1c32)*A^`{xAu--065%~8EG*zT!76Cz9$p~kg^r<8D36bi<5^BjOrT?9V`CU1 z+KbnPrlFrkqY=YG)kudbU<}U#Suk0$nHVnVA9bNE7zgaVysGv`ddd}H%E!cs#qmsn z@QM>8#HLCp4r7d%k^F{cb*9k85kJfc2|sr*ulU!}WIEOV2!mm#GMTN-&2&`^JC8== zdWCSfrvmwm5>8K|zWG?TYBO3Ly>;#Le0i+4GS+%r zDg8U*miCW_ZRhpTHOCUn6JKUue%fl&_~bNN*zKz2Jqg=s&!arqIa*7W52M^;Bf8w_ ze9G;#$oiubl={{H>QeUkt5VrpO5eFsE0cOC@&1MIL%IHjP(j$+_P8palW8np&bu@8 z;KV3}BpHeNxfTa-T;eeM`3pm8Au=(CaTUXai@~KP6ICRGPq0Bu%cBi30eK zZrl`!S>+9X=7h=nOiixxAA~wyXT{yB*Pb(KH*8MnQ}!B7bceyeKGrhKOWHay5?IZn z%HlGsALVi~%GS77_A;`)U!>K9l<1gVg}bw3A3xZou&S>48RFZ5qdl&lKVsAC{Nin_ zzD_2gX?=6)EbHJWPHLXyo4q2vGT7ng?Tq^UGiu{5iOx%O%Y4ohEa`7PP|MByZmYMZ zD3Y^3EV(R*`Ybf6OkCMeG~1TnaIdHCW{@YuviX;PAjixr9jkli>r2Az0)juCekA?D aN%x-jW%~NI+ss)!Ekcl(lF$?', { + 'class': 'toolicon', + 'aria-hidden': 'true' + }); + $icon[0].style.setProperty('--icon-url', 'url("' + src.replace(/"/g, '\\"') + '")'); + $img.replaceWith($icon); + }); + } + + toMaskIcons(); + + var toolbar = document.getElementById('tool__bar'); + if (toolbar && window.MutationObserver) { + new MutationObserver(toMaskIcons).observe(toolbar, {childList: true, subtree: true}); + } + }()); + // enhance header search with suggestions and keyboard navigation (function enhanceSearch(){ var $input = jQuery('#qsearch__in'); diff --git a/style.ini b/style.ini index bf995b3..e09735a 100755 --- a/style.ini +++ b/style.ini @@ -70,6 +70,7 @@ __highlight__ = "#ff9" ; @ini_highlight ; links __link__ = "#2b73b7" ; @ini_link +__icons__ = "#666" ; @ini_icons __luxtools_locationlink__ = "#b57d35" ; @ini_luxtools_locationlink ;-------------------------------------------------------------------------- diff --git a/tpl_header.php b/tpl_header.php index 3b390ee..7025d19 100755 --- a/tpl_header.php +++ b/tpl_header.php @@ -66,7 +66,7 @@ if (!defined('DOKU_INC')) die(); getDropdown($lang['tools']); ?>
    - getListItems('action ', false); ?> + getListItems('action '); ?>