source: spip-zone/_plugins_/lazysizes/trunk/lazysizes_fonctions.php @ 114723

Last change on this file since 114723 was 114723, checked in by arnaud.berard@…, 5 months ago

doc et explications des extensions déjà testées
styles du formulaire sur la page de config

  • Property svn:eol-style set to native
File size: 4.7 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7
8
9/*
10 * function lazysizes_addons
11 *
12 */
13function lazysizes_addons() {
14        $lazy_addons = array(
15                // 'artdirect' => 'ls.artdirect',
16                // 'aspectratio' => 'ls.aspectratio',
17                // 'attrchange' => 'ls.attrchange',
18                'bgset' => 'ls.bgset',
19                // 'blur-up' => 'ls.blur-up',
20                'custommedia' => 'ls.custommedia',
21                // 'fix-io-sizes' => 'fix-ios-sizes',
22                // 'include' => 'ls.include',
23                // 'noscript' => 'ls.noscript',
24                // 'object-fit' => 'ls.object-fit',
25                // 'optimumx' => 'ls.optimumx',
26                'parent-fit' => 'ls.parent-fit',
27                // 'print' => 'ls.print',
28                // 'progressive' => 'ls.progressive',
29                // 'respimg' => 'ls.respimg',
30                // 'rias' => 'ls.rias',
31                // 'static-gecko-picture' => 'ls.static-gecko-picture',
32                // 'twitter' => 'ls.twitter',
33                // 'unload' => 'ls.unload',
34                // 'unveilhooks' => 'ls.unveilhooks',
35                // 'video-embed' => 'ls.video-embed'
36        );
37
38        return $lazy_addons;
39}
40
41function lazysizes_insertion_js($flux = ''){
42        include_spip('inc/config');
43        $lazy_cfg = lire_config('lazysizes');
44        $js_init_options = produire_fond_statique('lazysizes_config.js',$lazy_cfg) ;
45        $flux .= "<script type='text/javascript' src='$js_init_options' ></script>\n";
46
47        // Addons
48        $ls_addons = lazysizes_addons();
49
50        if (is_array($lazy_cfg['addons'])) {
51                foreach($lazy_cfg['addons'] as $addon => $state){
52                        if(array_key_exists($addon, $ls_addons)){
53                                $file = timestamp(find_in_path('javascript/addons/'.$addon.'/'.$ls_addons[$addon].'.js'));
54                                $flux .= "<script type='text/javascript' src='$file' ></script>\n";
55                        }
56                }
57        }
58
59        $lazysizes = timestamp(find_in_path('javascript/lazysizes.js'));
60        $flux .= "<script type='text/javascript' src='$lazysizes' ></script>\n";
61
62        $flux .= "<script type='text/javascript'>window.lazySizes.init();</script>";
63
64        return $flux;
65}
66/*
67 * lazysizes_string2array
68 *
69 *  Pour ne pas necessiter Saisie juste pour saisies_chaine2tableau
70 * ne gère que des cle|valeur
71 *
72 * @param string $string
73 *   cle|valeur
74 *   cle|valeur
75 */
76function lazysizes_string2array($string){
77        // récupérer les lignes
78        $res = array();
79        $lignes = explode("\n",$string);
80        foreach($lignes as $i => $ligne){
81                list($cle,$valeur) = explode('|', $ligne);
82                $res[$cle] = trim($valeur);
83        }
84        return $res;
85}
86/**
87 * filtre custom_media
88 * retourne la liste de breakpoints configurés dans l'espace privé
89 * sous la forme d'un tableau cle => (querie , taille du média)
90 * la cle étant un raccourci de type custom-media tel que défini dans la lib lazysize
91 * '--small': '(max-width: 480px)'
92 *
93 * @var string
94 */
95function filtre_custom_media_dist(){
96        include_spip('inc/config');
97        $breakpoints = array();
98        $cfg = lire_config('lazysizes/options/custom_media');
99        $lignes = explode("\n",$cfg);
100        foreach($lignes as $i => $ligne){
101                list($shortcut,$querie,$recadre) = explode('|', $ligne);
102                $breakpoints[$shortcut] = array('querie'=>$querie,'recadre'=>$recadre);
103        }
104        return $breakpoints;
105}
106
107/**
108 * filtre_unlazy_dist
109 *
110 * supprime les data-src des modèles documents pour rétablir le src du $fichier
111 * rétabli les tailles et attributs, supprimer les balises <noscript> et leur contenu
112 * a utiliser dans les gabarits de newsletter
113 *
114 * @todo mieux transformer les tags figure
115 *
116 */
117function filtre_unlazy_dist($flux){
118  // enlever les balises figure en gardant le contenu
119  // $flux = preg_replace('/(<figure[^>]*>)(.*)(<\/figure>)/Uims','$2',$flux);
120  // enlever les eventuelles balise noscript et les figcaptions
121  // $flux = preg_replace('/(<figcaption[^>]*>)(.*)(<\/figcaption>)/Uims','',$flux);
122  $flux = preg_replace('/(<noscript[^>]*>)(.*)(<\/noscript>)/Uims','',$flux);
123  if(preg_match_all("/(<img\ [^>]*>)/",$flux,$matches)){
124         foreach($matches[1] as $img){
125                 if(null !== extraire_attribut($img,'data-src')){
126                         $src = ' src="'.extraire_attribut($img,'data-src').'"';
127                         ( extraire_attribut($img,'alt') ) ? $alt = ' alt="'.extraire_attribut($img,'alt').'"' : $alt = null;
128                         ( extraire_attribut($img,'width') ) ? $width = ' width="'.extraire_attribut($img,'width').'"' : $width = null ;
129                         ( extraire_attribut($img,'height') ) ? $height = ' height="'.extraire_attribut($img,'height').'"' : $height = null;
130
131                         $flux = str_replace($img,'<img'.$src.$alt.$width.$height.'>',$flux);
132                 }
133         }
134  }
135
136  return $flux;
137 }
138/*
139 * function titrer_document
140 *
141 * transforme un nom de fichier en chaine lisible
142 * tire de la fonction ajouter_document du core
143 * https://zone.spip.org/trac/spip-zone/browser/_core_/plugins/medias/action/ajouter_documents.php#L149
144 *
145 * @param $fichier
146 * @return string
147 */
148
149function titrer_document($fichier) {
150        $titre = substr($fichier, 0, strrpos($fichier, '.')); // Enlever l'extension du nom du fichier
151        $titre = preg_replace(',[[:punct:][:space:]]+,u', ' ', $titre);
152        return preg_replace(',\.([^.]+)$,', '', $titre);
153}
Note: See TracBrowser for help on using the repository browser.