source: spip-zone/_plugins_/adaptive_images/trunk/formulaires/adapter_image.php @ 118709

Last change on this file since 118709 was 118709, checked in by cedric@…, 2 months ago

Si on utilise la methode html5, il y a pas de probleme a avoir une version mobile avec des proportions différentes, on n'affiche donc pas d'avertissement

File size: 5.4 KB
Line 
1<?php
2/**
3 * Plugin Videos Accessibles
4 * Licence GPL (c) 2011 Cedric Morin yterium pour Temesis
5 *
6 */
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10function formulaires_adapter_image_charger_dist($id_document,$mode){
11        $mode = preg_replace(',\W,','',$mode);
12        include_spip('inc/documents');
13        $doc = sql_fetsel('id_document,mode,extension,largeur,hauteur','spip_documents','id_document='.intval($id_document));
14        if (!$doc)
15                return array('editable'=>false,'id'=>$id_document);
16
17        $valeurs = array(
18                'id_document' => $doc['id_document'],
19                'extension' => $doc['extension'],
20                'id' => $id_document,
21                '_hidden' => "<input name='id_document' value='$id_document' type='hidden' />",
22                'mode' => $mode, // pour les id dans le dom
23                '_bigup_rechercher_fichiers' => true,
24        );
25
26        $annexe = adaptive_images_variante($id_document,$mode);
27        if ($annexe){
28                $valeurs['id_annexe'] = $annexe['id_document'];
29                $annexe['type_document'] = sql_getfetsel('titre as type_document','spip_types_documents','extension='.sql_quote($annexe['extension']));
30
31                // verifier que les proportions de la version mobile et de la version desktop sont les memes
32                // si on utilise la methode 3 couches
33                if (lire_config('adaptive_images/markup_method','3layers') === '3layers') {
34                        $h2 = intval(round($annexe['largeur']*$doc['hauteur']/$doc['largeur']));
35                        if (abs(intval($h2-$annexe['hauteur']))>1){
36                                $size1 = $annexe['largeur']." x {$h2} pixels";
37                                $w2 = intval(round($annexe['hauteur']*$doc['largeur']/$doc['hauteur']));
38                                $size2 = "{$w2} x ".$annexe['hauteur']." pixels";
39                                $valeurs['_warning_ratio'] = _T('adaptive_images:warning_ratio_mobileview',array('size1'=>$size1,'size2'=>$size2));
40                                $valeurs['_warning_ratio'] .= " <input type='submit' name='recadrer' value='".attribut_html(_T('adaptive_images:bouton_recadrer'))."' />";
41                        }
42                }
43        }
44        $valeurs['annexe'] = $annexe;
45        $valeurs['_pipeline'] = array('editer_contenu_objet',array('type'=>'adapter_image','mode'=>$mode,'id'=>$id_document));
46
47        adaptive_images_width_from_mode($mode, $valeurs);
48
49        return $valeurs;
50}
51
52/**
53 * @param array $args
54 * @param \Spip\Bigup\Formulaire $formulaire
55 * @return \Spip\Bigup\Formulaire
56 */
57function inc_bigup_medias_formulaire_adapter_image_dist($args, $formulaire) {
58        $formulaire->preparer_input(
59                'fichier_upload[]',
60                [
61                        'multiple' => false,
62                        'previsualiser' => true,
63                        'input_class' => 'bigup_illustration',
64                        'drop-zone-extended' => '.formulaire_adapter_image .editer_fichier',
65                ]
66        );
67        $formulaire->inserer_js('bigup.adapter_image.js');
68        return $formulaire;
69}
70
71
72function formulaires_adapter_image_verifier_dist($id_document,$mode){
73        $mode = preg_replace(',\W,','',$mode);
74        $erreurs = array();
75        if (_request('supprimer')){
76
77        }
78        elseif (_request('recadrer')){
79
80        }
81        else {
82                $annexe = adaptive_images_variante($id_document,$mode);
83                $id = $annexe['id_document'];
84                $verifier = charger_fonction('verifier','formulaires/joindre_document');
85                $erreurs = $verifier($id,0,'',$mode);
86        }
87        return $erreurs;
88}
89
90function formulaires_adapter_image_traiter_dist($id_document,$mode){
91        $mode = preg_replace(',\W,','',$mode);
92        $annexe = adaptive_images_variante($id_document,$mode);
93        $id = $annexe['id_document'];
94        $res = array('editable'=>true);
95        if (_request('supprimer')){
96                $supprimer_document = charger_fonction('supprimer_document','action');
97                if ($id)
98                        $supprimer_document($id);
99                $res['message_ok'] = _T('adaptive_images:variante_'.$mode.'_supprimee');
100        }
101        elseif (_request('recadrer')){
102                $doc = sql_fetsel('id_document,mode,extension,largeur,hauteur','spip_documents','id_document='.intval($id_document));
103                $h2 = intval(round($annexe['largeur']*$doc['hauteur']/$doc['largeur']));
104                $w = $annexe['largeur'];
105                $h = $annexe['hauteur'];
106                if ($h2<$annexe['hauteur'])
107                        $h = $h2;
108                else
109                        $w = intval(round($annexe['hauteur']*$doc['largeur']/$doc['hauteur']));
110
111                include_spip("filtres/images_transforme");
112                include_spip("inc/documents");
113                $file = get_spip_doc($annexe['fichier']);
114                if (function_exists("image_recadre")){
115                        $ir = extraire_attribut(image_recadre($file,$w,$h),'src');
116                        list($h,$w) = taille_image($ir);
117                        if ($ir AND $h AND $w){
118                                @unlink($file);
119                                @rename($ir,$file);
120                                $set = array(
121                                        "hauteur" => $h,
122                                        "largeur" => $w,
123                                );
124                                sql_updateq("spip_documents",$set,"id_document=".intval($annexe['id_document']));
125                        }
126                }
127        }
128        else {
129                $ajouter_documents = charger_fonction('ajouter_documents', 'action');
130
131                include_spip('inc/joindre_document');
132                $files = joindre_trouver_fichier_envoye();
133
134                $ajoute = $ajouter_documents($id,$files,'document',$id_document,$mode);
135
136                if (is_numeric(reset($ajoute))
137                  AND $id = reset($ajoute)){
138                        $res['message_ok'] = _T('medias:document_installe_succes');
139                }
140                else
141                        $res['message_erreur'] = reset($ajoute);
142        }
143
144        return $res;
145}
146
147/**
148 * Verifier la taille de l'image version mobile
149 * @param $infos
150 * @return bool|mixed|string
151 */
152function inc_verifier_document_mode_mobileview_dist($infos){
153        if (isset($infos['type_image'])){
154                $v = array();
155                adaptive_images_width_from_mode('mobileview',$v);
156                if ($infos['largeur']<$v['_width_hr']){
157                        return _T('adaptive_images:erreur_largeur_mobileview',array('width'=>$v['_width_hr']));
158                }
159        }
160        return true;
161}
162
163function adaptive_images_width_from_mode($mode, &$valeurs){
164
165        include_spip("inc/config");
166        switch ($mode){
167                case 'mobileview':
168                        $valeurs['_width'] = lire_config("adaptive_images/max_width_mobile_version",320);
169                        break;
170                default:
171                        $valeurs['_width'] = 0;
172                        break;
173        }
174        $valeurs['_width_hr'] = 2*$valeurs['_width'];
175}
Note: See TracBrowser for help on using the repository browser.