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

<?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;
}