FrameBeurk File
Fmbk/Module/Zenpa/fonctionsZenpa.css.php
<?php //FrameBeurk V0.65 Copyright ToolOscope 2016. Licence CeCILL-C.
//fonctions de génération de css du module Zenpa
// renvoie une image encodée en base64 pour incorporation au fichier css
function Zenpa_encodeImage($typeMime, $nomFicher) {
return 'url("data:image/' . $typeMime . ';base64,' . base64_encode(file_get_contents(INSTALL_PATH . $nomFicher)) . '")';
}
// renvoie la propriété css envoyée en paramètre, préfixée par les navigateurs courant
function Zenpa_prefixePropriete($propriete, $valeur) {
if ($propriete == 'box-sizing' or $propriete == 'appearance')
$special = '-moz-' . $propriete . ':' . $valeur . ";\n"
. '-webkit-' . $propriete . ':' . $valeur . ";\n";
elseif ($propriete == 'box-shadow')
$special = '-webkit-' . $propriete . ':' . $valeur . ";\n";
elseif ($propriete == 'border-radius')
$special = '-webkit-' . $propriete . ':' . $valeur . ";\n";
else
$special = '-o-' . $propriete . ':' . $valeur . ";\n"
. '-moz-' . $propriete . ':' . $valeur . ";\n"
. '-webkit-' . $propriete . ':' . $valeur . ";\n"
. '-ms-' . $propriete . ':' . $valeur . ";\n"
. '-khtml-' . $propriete . ':' . $valeur . ";\n";
return $special
. $propriete . ':' . $valeur . ";\n";
}
// renvoie la propriété css envoyée en paramètre en préfixant la valeur pour les navigateurs courant
function Zenpa_prefixeValeurPropriete($propriete, $valeur, $parametres) {
if ($valeur == 'linear-gradient')
$special = $propriete . ': -webkit-' . $valeur . $parametres . ";\n";
//filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf');
else
$special = $propriete . ': -o-' . $valeur . $parametres . ";\n"
. $propriete . ': -moz-' . $valeur . $parametres . ";\n"
. $propriete . ': -webkit-' . $valeur . $parametres . ";\n"
. $propriete . ': -ms-' . $valeur . $parametres . ";\n"
. $propriete . ': -khtml-' . $valeur . $parametres . ";\n";
return $special
. $propriete . ': ' . $valeur . $parametres . ";\n";
}
// formate la classe envoyée comme un bouton. ex : ('a.maj', '8080FF', 'DDDDDD')
// la couleur de fond doit être en hexa sur 6 caractères
function Zenpa_bouton($classe, $couleurTexte, $couleurFond, $pasDActive = false) {
$couleurFondClair = Zenpa_eclaircie($couleurFond);
$couleurFondFonce = Zenpa_fonce($couleurFond);
// etat normal
echo $classe . '{ /* Généré par Zenpa_bouton */
margin-top:4px;
padding:3px 8px;
color:#' . $couleurTexte . ';
border:0px; /* solid #' . $couleurFond . ';*/
background-color:#' . $couleurFond . ';
' . Zenpa_prefixeValeurPropriete('background-image', 'linear-gradient', '(to top, #' . $couleurFond . ', #' . $couleurFondClair . ')') . '
' . Zenpa_prefixePropriete('border-radius', '3px') . '
' . Zenpa_prefixePropriete('box-shadow', 'inset 0px 2px 1px 0px #FFFFFF') . '
text-decoration:none;
text-align:center;
text-shadow:0px -1px 0px #' . $couleurFondClair . ';
cursor:pointer;
line-height:', (substr($classe, 0, 2) == 'a.' ? '180' : '100'),'%;
white-space:nowrap
}
';
// curseur sur le bouton
echo $classe . ':hover {' . "\n"
. Zenpa_prefixeValeurPropriete('background-image', 'linear-gradient', '(to top, #' . $couleurFondClair . ', #' . $couleurFond . ')') . "\n"
. "}\n";
// bouton enfoncé
if (! $pasDActive)
echo $classe . ':active {' . "\n"
. 'position:relative;' . "\n"
. 'top:1px;' . "\n"
. "}\n";
}
// éclairci la couleur hXXXXXX de x %
function Zenpa_eclaircie($couleur, $taux = 0.5) {
return Zenpa_eclaircieXX(substr($couleur, 0, 2)) . Zenpa_eclaircieXX(substr($couleur, 2, 2)) . Zenpa_eclaircieXX(substr($couleur, 4));
}
// fonce la couleur hXXXXXX de x %
function Zenpa_fonce($couleur, $taux = 0.5) {
return Zenpa_fonceXX(substr($couleur, 0, 2)) . Zenpa_fonceXX(substr($couleur, 2, 2)) . Zenpa_fonceXX(substr($couleur, 4));
}
// éclairci la couleur hXX de x %
function Zenpa_eclaircieXX($couleurXX, $taux = 0.5) {
return dechex(hexdec($couleurXX) + ((255 - hexdec($couleurXX)) * $taux));
}
// fonce la couleur hXX de x %
function Zenpa_fonceXX($couleurXX, $taux = 0.5) {
return dechex(hexdec($couleurXX) * (1 - $taux));
}
// renvoie une image encodée en base64 après l'avoir colorisée (en conservant l'alpha)
function Zenpa_encodeImageColorisee($typeMime, $nomFicher, $couleur) {
$image = imagecreatefrompng(INSTALL_PATH . $nomFicher);
imagesavealpha($image, true);
imagefilter($image, IMG_FILTER_COLORIZE, hexdec(substr($couleur, 0, 2)), hexdec(substr($couleur, 2, 2)), hexdec(substr($couleur, 4)));
ob_start();
imagepng($image);
$imageColorisee = ob_get_clean();
return 'url("data:' . $typeMime . ';base64,' . base64_encode($imageColorisee) . '")';
}
// formate les styles des cases d'un tableau responsive, par tranches de taille de media
function Zenpa_casesTableau($radicalStyle, $tabColonnes) {
global $TRANSAC, $CONFIG;
if ($TRANSAC['Responsive']) {
// pour chaque tranche du tableau
foreach ($tabColonnes as $tabTranche) {
list($minWith, $maxWidth) = $tabTranche['limitesTranche'];
echo '
@media ', (($minWith) ? ('(min-width:' . $minWith . 'px)') : ''),
(($minWith && $maxWidth) ? ' and ' : ''),
(($maxWidth) ? ('(max-width:' . $maxWidth . 'px)') : ''),
' {
';
$noCol = 0;
foreach ($tabTranche['tailleColonnes'] as $width) {
$noCol += 1;
echo '.', $radicalStyle, '_c', $noCol, ' { width:', $width, '%; }
';
}
// fin de la tranche
echo '}
';
}
// browser non responsive : seulement la 1ère tranche
} else {
$tabTranche = $tabColonnes[0];
$noCol = 0;
foreach ($tabTranche['tailleColonnes'] as $width) {
$noCol += 1;
echo '.', $radicalStyle, '_c', $noCol, ' { width:', $width, '%; }
';
}
}
// caractéristiques communes
$nbCol = $noCol;
for ($noCol = 1; $noCol <= $nbCol; $noCol++)
echo '.', $radicalStyle, '_c', $noCol, (($noCol < $nbCol) ? ', ' : '');
echo ' {
padding:3px;
word-wrap:break-word; /* ancienne */
overflow-wrap:break-word; /* nouvelle */
overflow:hidden;
float:left;
}
';
}
// formate le style d'une entité classique
function Zenpa_cssCarteEntite($entite) {
global $TRANSAC;
// style des cases des cartes entités
Zenpa_cssCaseEntite($entite, 'float:left;');
if ($TRANSAC['Responsive'])
echo '
@media (min-width:520px) {
.', $entite, '_c1 { width:50%; }
.', $entite, '_c2 { width:30%; clear:none; }
.', $entite, '_c3 { width:20%; }
}
@media (max-width:519px) {
.', $entite, '_c1 { width:100%; }
.', $entite, '_c2 { width:60%; clear:left; }
.', $entite, '_c3 { width:40%; }
}
';
else
echo '
.', $entite, '_c1 { width:50%; }
.', $entite, '_c2 { width:30%; clear:none; }
.', $entite, '_c3 { width:20%; }
';
echo '
.', $entite, '_c6 { width:100%; }
.', $entite, '_c1 { font-size:140%; font-weight:bold; }
.', $entite, '_c2, .', $entite, '_c3 { font-size:80%; line-height:100%; }
';
// style des lignes des cartes entités (0= lignes paires, 1= lignes impaires)
echo '
.', $entite, '_l0, .', $entite, '_l1 {
overflow: hidden;
margin:3px;
}
.', $entite, '_l0 td, .', $entite, '_l1 td {
overflow: hidden;
padding:0px 3px;
}
';
// css dépendant du style
Zenpa_cssCarteEntite_style($entite);
Zenpa_cssTitreEntite_style($entite);
}
// formate le style d'une case d'une entité
function Zenpa_cssCaseEntite($entite, $special) {
global $TRANSAC;
// style des cases des cartes entités
echo '
.', $entite, '_c1, .', $entite, '_c2, .', $entite, '_c3, .', $entite, '_c6 {
padding:5px 1.5%;
word-wrap:break-word; /* ancienne */
overflow-wrap:break-word; /* nouvelle */
overflow:hidden;
', $special, '
}
';
}
// formate une entrée au menu pour une entité
function Zenpa_cssMenuEntite($entite, $topAfficheCache = false, $special = '') {
global $TRANSAC;
if ($TRANSAC['Responsive'])
echo '
@media (min-width:720px) {
.', $entite, '_m0, .', $entite, '_m1 { padding-top:1px; padding-bottom:1px; overflow:hidden; }
}
@media (max-width:719px) {
.', $entite, '_m0, .', $entite, '_m1 { padding-top:3px; padding-bottom:3px; overflow:hidden; }
}
';
else
echo '
.', $entite, '_m0, .', $entite, '_m1 { padding-top:1px; padding-bottom:1px; overflow:hidden; }
';
// css dépendant du style
Zenpa_cssMenuEntite_style($entite, $topAfficheCache);
// spécial
if ($special != '')
echo '
.', $entite, '_m0, .', $entite, '_m1 { ', $special, ' }
';
}