You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.1 KiB
130 lines
4.1 KiB
<?php |
|
|
|
$GLOBALS['marqueur_skel'] = (isset($GLOBALS['marqueur_skel']) ? $GLOBALS['marqueur_skel'] : '') . ':bootstrap4'; |
|
// la puce sans image si jamais on est pas encore en SPIP 3.3+ |
|
$GLOBALS['puce'] = '<span class="spip-puce ltr"><b>–</b></span>'; |
|
$GLOBALS['puce_rtl'] = '<span class="spip-puce rtl"><b>–</b></span>'; |
|
|
|
// les icones BS4 |
|
// un fichier qui contient toutes les icones, utilise pour la page de demo uniquement |
|
define('_ICON_SPRITE_SVG_FILE', 'img/bi-all-symbols.svg'); |
|
// 2 sprites : celui de base + celui avec les variantes fill |
|
define('_ICON_SPRITE_SVG_NOFILL_FILE', 'img/bi-symbols.svg'); |
|
define('_ICON_SPRITE_SVG_FILL_FILE', 'img/bi-fill-symbols.svg'); |
|
// 1 sprite mini : juste pour les icones de z/spipr |
|
define('_ICON_SPRITE_SVG_MIN_FILE', 'img/bi-min-symbols.svg'); |
|
|
|
define('_ICON_SPRITE_SVG_ID_PREFIX', 'bi-'); |
|
|
|
function filtre_icone_href_class_from_name($name) { |
|
static $sprite_files = []; |
|
if (strpos($name, '#') !== false or strpos($name, '/') !== false or strpos($name, '.svg') !== false) { |
|
return filtre_icone_href_class_from_name_dist($name); |
|
} |
|
else { |
|
if (!$name) { |
|
return [find_in_path(_ICON_SPRITE_SVG_FILE), '']; |
|
} |
|
$icone_anchor_from_name = chercher_filtre('icone_anchor_from_name'); |
|
$anchor = $icone_anchor_from_name($name); |
|
|
|
// on a un petit sprite dedie aux icones utilisees par defaut par Z-core et spipr-xx pour ne pas charger la mule |
|
// c'est un sprite maintenu a la main, lister ici les icones qu'il contient |
|
if (in_array($anchor, ['bi-person','bi-calendar','bi-chevron-left','bi-chevron-right','bi-chat','bi-tag','bi-check-box','bi-skip-start','bi-skip-end'])) { |
|
if (!isset($sprite_files['min'])) { |
|
$sprite_files['min'] = timestamp(find_in_path(_ICON_SPRITE_SVG_MIN_FILE)); |
|
} |
|
$file = $sprite_files['min']; |
|
} |
|
// c'est le sprite par defaut avec un name qui correspond a l'ancre abregee |
|
// et la gestion de quelques historiques de nommage/renommage |
|
elseif (strpos($name, '-fill') !== false) { |
|
if (!isset($sprite_files['fill'])) { |
|
$sprite_files['fill'] = timestamp(find_in_path(_ICON_SPRITE_SVG_FILL_FILE)); |
|
} |
|
$file = $sprite_files['fill']; |
|
} |
|
else { |
|
if (!isset($sprite_files['nofill'])) { |
|
$sprite_files['nofill'] = timestamp(find_in_path(_ICON_SPRITE_SVG_NOFILL_FILE)); |
|
} |
|
$file = $sprite_files['nofill']; |
|
} |
|
// sanitizer l'ancre pour la class |
|
$class = preg_replace(',[^\w\-],', '', $name); |
|
if (_ICON_SPRITE_SVG_ID_PREFIX) { |
|
$class .= ' ' . _ICON_SPRITE_SVG_ID_PREFIX . 'icon'; |
|
} |
|
|
|
return [$file . '#' . $anchor, $class]; |
|
} |
|
} |
|
|
|
function filtre_icone_anchor_from_name($name) { |
|
if (_ICON_SPRITE_SVG_ID_PREFIX) { |
|
if (strpos($name, _ICON_SPRITE_SVG_ID_PREFIX) === 0) { |
|
$name = substr($name, strlen(_ICON_SPRITE_SVG_ID_PREFIX)); |
|
} |
|
} |
|
switch ($name) { |
|
case 'comment': |
|
case 'msg': |
|
$ancre = 'chat'; |
|
break; |
|
case 'ok-circle': |
|
$ancre = 'check-box'; |
|
break; |
|
case 'user': |
|
$ancre = 'person'; |
|
break; |
|
case 'end': |
|
case 'start': |
|
$ancre = 'skip-' . $name; |
|
break; |
|
case 'close': |
|
$ancre = 'x'; |
|
break; |
|
case 'chevron-top': |
|
$ancre = 'chevron-up'; |
|
break; |
|
case 'chevron-bottom': |
|
$ancre = 'chevron-down'; |
|
break; |
|
case 'caret-top': |
|
$ancre = 'caret-up'; |
|
break; |
|
case 'caret-bottom': |
|
$ancre = 'caret-down'; |
|
break; |
|
default: |
|
$ancre = $name; |
|
break; |
|
} |
|
return _ICON_SPRITE_SVG_ID_PREFIX . $ancre; |
|
} |
|
|
|
|
|
function bootstrap4_affichage_final($flux) { |
|
if ( |
|
$GLOBALS['html'] |
|
and isset($GLOBALS['visiteur_session']['statut']) |
|
and $GLOBALS['visiteur_session']['statut'] == '0minirezo' |
|
and $GLOBALS['visiteur_session']['webmestre'] == 'oui' |
|
and strpos($flux, '<!-- insert_head -->') !== false |
|
and $p = stripos($flux, '</body>') |
|
) { |
|
if ($f = find_in_path('js/hashgrid.js')) { |
|
$flux = substr_replace($flux, '<script type="text/javascript" src="' . $f . '"></script>', $p, 0); |
|
} |
|
if ( |
|
(_VAR_MODE === 'debug' || _request('var_profile')) |
|
and $p = stripos($flux, '</head>') |
|
) { |
|
$file_css = direction_css(scss_select_css('css/spip.admin.css')); |
|
$css = file_get_contents($file_css); |
|
$css = "<style type='text/css'>$css</style>"; |
|
$flux = substr_replace($flux, $css, $p, 0); |
|
} |
|
} |
|
return $flux; |
|
}
|
|
|