Changeset 95422 in spip-zone


Ignore:
Timestamp:
Feb 24, 2016, 9:13:16 AM (3 years ago)
Author:
teddy.spip@…
Message:
  • On peut enfin ajouter une photo Unsplash en tant que logo d'un objet ;
  • On met un id_photo pour l'id de l'image issue du json d'unsplash ;

TODO : si on change un logo déjà présent, il faut mettre à jour la donnée dans spip_unsplash au lieu de ne fait qu'une insertion sql.

Location:
_plugins_/unsplash/trunk
Files:
4 added
11 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/unsplash/trunk/base/unsplash.php

    r94472 r95422  
    4545                'field' => array(
    4646                        'id_unsplash' => 'bigint(21) NOT NULL',
     47                        'id_photo' => 'bigint(21) NOT NULL',
    4748                        'filename' => "varchar(30) NOT NULL DEFAULT ''",
    4849                        'format' => "varchar(5) NOT NULL DEFAULT ''",
     
    6465                'date' => 'date_ajout',
    6566                'champs_editables' => array(
     67                        'id_photo',
    6668                        'filename',
    6769                        'format',
     
    7476                ),
    7577                'champs_versionnes' => array('format', 'width', 'height', 'author', 'author_url', 'post_url', 'mode'),
    76                 'rechercher_champs' => array('author' => 6, 'author_url' => 5),
     78                'rechercher_champs' => array('author' => 6, 'author_url' => 5, 'id_photo' => 5),
    7779                'tables_jointures' => array(),
    7880                'page' => false,
  • _plugins_/unsplash/trunk/formulaires/editer_unsplash.html

    r94469 r95422  
    88                <input type='hidden' name='id_unsplash' value='#ENV{id_unsplash}' />
    99                <ul class="editer-groupe">
     10
     11                        [(#SAISIE{input, id_photo, obligatoire=oui,
     12                                label=<:unsplash:champ_id_photo_label:>})]
    1013
    1114                        [(#SAISIE{input, filename, obligatoire=oui,
  • _plugins_/unsplash/trunk/formulaires/unsplash_ajout.html

    r94469 r95422  
    1717                <label for="champ_height"><:unsplash:champ_height_label:><:info_obligatoire_02:></label>
    1818                <input type="text" value="850" id="champ_height" class="text" name="height" />
     19            </li>
     20            <li class="editer editer_greyscale saisie_input[(#ENV**{erreurs}|table_valeur{greyscale}|oui)erreur]">
     21                [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{greyscale})</span>]
     22                <label for="champ_greyscale"><:unsplash:champ_greyscale_label:></label>
     23                <input type="checkbox" value="greyscale" id="champ_greyscale" class="checkbox" name="greyscale" />
    1924            </li>
    2025        </ul>
  • _plugins_/unsplash/trunk/formulaires/unsplash_ajout.php

    r94473 r95422  
    2424        $id_objet = _request('id_objet');
    2525        $objet = _request('objet');
    26         $where = array('id_unsplash=' . $id_new, 'mode=' . sql_quote($mode));
     26        $where = array('id=' . $id_new, 'mode=' . sql_quote($mode));
    2727        if (isset($id_objet) and isset($objet)) {
    2828                $where[] = 'id_objet=' . $id_objet;
     
    6161        include_spip('inc/utils');
    6262        $extension = 'jpg';
    63         //Traitement du formulaire.
     63        // Traitement du formulaire.
    6464        $_width = _request('width');
    6565        $_height = _request('height');
    66         $id_objet = _request('id_objet');
    67         $objet = _request('objet');
     66        $_greyscale = _request('greyscale');
    6867        $mode = _request('mode');
     68        $_associer_objet = _request('associer_objet');
     69        if ($_associer_objet and $_associer_objet = explode('|', $_associer_objet) and is_array($_associer_objet)) {
     70                $objet = $_associer_objet[0];
     71                $id_objet = $_associer_objet[1];
     72        }
    6973        $id_new = _request('id_new');
     74
     75        // Par défaut, on retourne une erreur
    7076        $resultats = array('editable' => true, 'message_erreur' => _T('unsplash:erreur_formulaire'), 'redirect' => '');
    7177
     78        // On reprend le fichier json pour récupérer les infos de l'image à importer
    7279        $unsplash_list = json_decode(file_get_contents(_UNSPLASH_JSON), true);
     80        // On cherche l'index de l'image sélectionnée pour la stocker
    7381        $_index_photo = array_search($id_new, array_column($unsplash_list, 'id'));
    7482        $photo_infos = $unsplash_list[$_index_photo];
    7583
    7684        if (is_array($photo_infos)) {
    77                 $photo_infos['id_unsplash'] = $photo_infos['id'];
    78                 unset($photo_infos['id']); /* On ne garde plus ce champ devenu id_unsplash */
    7985                $photo_infos['date_ajout'] = date('Y-m-d H:i:s'); /* On indique la date d'ajout */
    8086                $photo_infos['mode'] = $mode; /* On indique le mode de document pour lequel est utilisé cette photo : document, normal, survol */
     
    8389                }
    8490        }
     91        /*
     92         * On stocke l'extension du fichier mais si on a l'extension 'jpeg', on la reformate en 'jpg'
     93         */
     94        $extension = $photo_infos['format'];
    8595        if ($photo_infos['format'] === 'jpeg') {
    8696                $extension = 'jpg';
    87         } elseif ($photo_infos['format'] === 'png') {
    88                 $extension = 'png';
    8997        }
     98        // Récupérer le nom du fichier image.
    9099        $import_filename = explode('.', $photo_infos['filename']);
    91100        $import_filename = $import_filename[0];
    92         $import_distant = _UNSPLASH_URL . $_width . '/' . $_height . '/?image=' . $id_new;
     101        /*
     102         * On construit l'url vers le fichier
     103         * Si la case greyscale a été coché, alors on récupère la photo en niveaux de gris.
     104         */
     105        $import_distant = _UNSPLASH_URL . (isset($_greyscale) ? 'g/' : '') . $_width . '/' . $_height . '/?image=' . $id_new;
    93106        $import_photo = _DIR_RACINE . copie_locale($import_distant);
    94107        /*
    95108         * On est ici dans le cadre d'un import d'une photo Unsplash en tant que document
    96109         */
    97         if ($mode === 'document') {
     110        if ($mode === 'document' and $import_photo) {
    98111                $import_dir = _DIR_IMG . $extension . '/';
    99112                $import_destination = $import_dir . $import_filename . '.' . $extension;
    100113                $import_result = deplacer_fichier_upload($import_photo, $import_destination, true);
     114                /*
     115                 * Si la copie du fichier physique a réussi, on peut créer
     116                 * le tableau d'informations à enregistrer dans la base de données.
     117                 * cf. spip_documents
     118                 */
    101119                if ($import_result) {
    102120                        $document_info = array(
     
    115133                        );
    116134                        $_id_document = sql_insertq('spip_documents', $document_info);
     135                        $photo_infos['id_photo'] = $photo_infos['id']; // On stocke l'id du json en tant que id_photo
     136                        unset($photo_infos['id']); // On supprime l'index 'id' car on n'en a plus besoin
    117137                        $photo_infos['id_objet'] = $_id_document; // On indique l'identifiant du document fraichement inséré dans la BDD
    118138                        $photo_infos['objet'] = objet_type('documents'); // On indique l'objet
    119                         sql_insertq('spip_unsplash', $photo_infos);
     139                        sql_insertq('spip_unsplash', $photo_infos); // On insère le tout dans spip_unsplash
    120140                        $resultats = array(
    121141                                'editable' => true,
     
    124144                        );
    125145                }
    126         } else {
     146        } elseif ($import_photo) {
    127147                /*
    128                  * Ici on importe uen photo Unsplash en tant que logo
     148                 * Ici on importe une photo Unsplash en tant que logo
    129149                 */
    130150                include_spip('inc/chercher_logo');
     
    133153                $_mode_logo = ($mode === 'normal') ? 'on' : 'off'; // Le mode du logo désiré
    134154                $import_destination = $import_dir . type_du_logo($id_table_objet) . $_mode_logo . $id_objet . '.' . $extension; // On construit le futur logo de l'objet
    135                 $import_result = deplacer_fichier_upload($import_photo, $import_destination, true); // On déplace la photo Unsplash vers le logo de l'objet
     155                $import_result = deplacer_fichier_upload($import_photo, $import_destination,
     156                        true); // On déplace la photo Unsplash vers le logo de l'objet
     157                $photo_infos['id_photo'] = $photo_infos['id']; // On stocke l'id du json en tant que id_photo
     158                unset($photo_infos['id']); // On supprime l'index 'id' car on n'en a plus besoin
    136159                $photo_infos['id_objet'] = $id_objet;
    137160                $photo_infos['objet'] = $objet;
  • _plugins_/unsplash/trunk/lang/unsplash_fr.php

    r94471 r95422  
    1010
    1111        // A
     12        'activer_objets_explication' => 'L\'ajout des photos Unsplash en tant que logo sera permis sur les objets sélectionnés ci-dessous.',
     13        'activer_objets_label' => 'Sélectionner les objets',
    1214        'ajouter_lien_unsplash' => 'Ajouter cette photo (Unsplash)',
    1315
     
    1618        'champ_author_url_label' => 'URL de l\'auteur',
    1719        'champ_filename_label' => 'Nom du fichier',
     20        'champ_greyscale_label' => 'Niveau de gris',
    1821        'champ_height_label' => 'Hauteur',
     22        'champ_id_photo_label' => 'Photo',
    1923        'champ_id_objet_label' => 'Identifiant de l\'objet',
    2024        'champ_mode_label' => 'Mode d\'importation',
     
    3034        // E
    3135        'erreur_formulaire' => 'Des erreurs sont présentes dans le formulaire',
     36
    3237
    3338        // I
     
    4550        'info_unsplash_auteur' => 'Les photo (Unsplash) de cet auteur',
    4651        'info_width' => 'Largeur',
     52
     53        // L
     54        'logo_normal_ajouter' => 'Ajouter un logo',
     55        'logo_normal_modifier' => 'Changer le logo',
     56        'logo_survol_ajouter' => 'Ajouter un logo de survol',
     57        'logo_survol_modifier' => 'Changer le logo de survol',
    4758
    4859        // M
     
    6879        'titre_unsplash' => 'Photos Unsplash',
    6980        'titre_unsplash_rubrique' => 'Photos Unsplash de la rubrique',
     81        'titre_page_configurer_unsplash' => 'Configurer le plugin Unsplash',
    7082
    7183        // V
  • _plugins_/unsplash/trunk/paquet.xml

    r94469 r95422  
    2626        <pipeline nom="affiche_auteurs_interventions" inclure="unsplash_pipelines.php" />
    2727        <pipeline nom="header_prive" inclure="unsplash_pipelines.php" />
     28        <pipeline nom="boite_infos" inclure="unsplash_pipelines.php" />
    2829
    2930        <menu nom="unsplash" titre="unsplash:titre_unsplash" parent="menu_edition" icone="images/unsplash-16.png" action="unsplash" />
  • _plugins_/unsplash/trunk/prive/objets/contenu/unsplash_voir.html

    r94469 r95422  
    11<BOUCLE_unsplash (UNSPLASH) {id_unsplash}>
     2
     3[<div class="champ contenu_id_photo[ (#ID_PHOTO*|strlen|?{'',vide})]">
     4        <div class="label visible"><:unsplash:champ_id_photo_label:> : </div>
     5        <div dir='#LANG_DIR' class='#EDIT{id_photo} id_photo span'>#(#ID_PHOTO)</div>
     6</div>]
    27
    38[<div class="champ contenu_filename[ (#FILENAME*|strlen|?{'',vide})] invisible hidden">
  • _plugins_/unsplash/trunk/prive/objets/infos/unsplash.html

    r94473 r95422  
    66    [(#SET{texte_objet,<:unsplash:titre_unsplash:>})]
    77    <div class='numero'><:titre_cadre_numero_objet{objet=#GET{texte_objet}}:><p>#ID_UNSPLASH</p></div>
    8     <div class="unsplash_preview" style="background-image: url([(#GET{unsplash_url})][(#GET{unsplash_thumb_width})]/[(#GET{unsplash_thumb_height})]/?image=#ID_UNSPLASH)">
     8    <div class="unsplash_preview" style="background-image: url([(#GET{unsplash_url})][(#GET{unsplash_thumb_width})]/[(#GET{unsplash_thumb_height})]/?image=#ID_PHOTO)">
    99    </div>
    1010    [(#URL_ECRIRE{[(#OBJET|=={document}|?{documents,#OBJET})],[(#OBJET|id_table_objet)=]#ID_OBJET}|icone_horizontale{<:unsplash:voir_objet_associe:>,#OBJET})]
  • _plugins_/unsplash/trunk/prive/objets/liste/unsplash.html

    r94469 r95422  
    33        mode,1,
    44        date_ajout,-1,
    5         id_unsplash,1,
     5    id_photo,1,
     6    id_unsplash,1,
    67        points,-1
    78}})]<B_liste_unsplash>
     
    1718                        <th class='objet' scope='col'>[(#TRI{objet,<:unsplash:champ_objet_label:>,ajax})]</th>
    1819                        <th class='date' scope='col'>[(#TRI{date_ajout,<:date:>,ajax})]</th>
     20                        <th class='id_photo' scope='col'>[(#TRI{id_photo,<:unsplash:champ_id_photo_label:>,ajax})]</th>
    1921                        <th class='id' scope='col'>[(#TRI{id_unsplash,<:info_numero_abbreviation:>,ajax})]</th>
    2022                </tr>
     
    2830                        <td class='mode secondaire'>[(#OBJET|objet_info{texte_objet}|_T)]</td>
    2931                        <td class='date secondaire'>[(#DATE_AJOUT|affdate_jourcourt)]</td>
    30                         <td class='id'>[(#AUTORISER{modifier,unsplash,#ID_UNSPLASH}|?{
    31                                 <a href="[(#URL_ECRIRE{unsplash_edit,id_unsplash=#ID_UNSPLASH})]">#ID_UNSPLASH</a>,
    32                                 #ID_UNSPLASH
    33                         })]</td>
     32            <td class='id_photo'>[#(#ID_PHOTO)]</td>
     33            <td class='id'>[(#AUTORISER{modifier,unsplash,#ID_UNSPLASH}|?{
     34                <a href="[(#URL_ECRIRE{unsplash_edit,id_unsplash=#ID_UNSPLASH})]">#ID_UNSPLASH</a>,
     35                #ID_UNSPLASH
     36            })]</td>
    3437                </tr>
    3538        </BOUCLE_liste_unsplash>
  • _plugins_/unsplash/trunk/prive/style_prive_plugin_unsplash.html

    r94473 r95422  
    176176    [height: (#GET{unsplash_thumb_height})px;]
    177177}
     178.box.info .unsplash {
     179    margin-top: 1em;
     180}
     181.box.info .unsplash h3 {
     182    margin-right: -10px;
     183    margin-left: -10px;
     184    margin-bottom: 0.5em;
     185    padding: 5px 10px;
     186    color: [#(#GET{foncee}|replace{'#',''}|couleur_luminance{0})];
     187    background-color: #GET{foncee};
     188}
    178189[(#REM)</style>]
  • _plugins_/unsplash/trunk/unsplash_pipelines.php

    r94472 r95422  
    3434}
    3535
     36/**
     37 * Insérer font-awesome dans le header privé
     38 *
     39 * @param $flux
     40 *
     41 * @return string
     42 */
    3643function unsplash_header_prive($flux) {
    3744        $flux .= "<link rel='stylesheet' id='font-awesome-css'  href='" . find_in_path('lib/font-awesome/css/font-awesome.min.css') . "' type='text/css' media='all' />";
     
    3946        return $flux;
    4047}
     48
     49/**
     50 * Insérer les boutons d'ajout de logo pour l'objet
     51 *
     52 * @param $flux
     53 *
     54 * @return string
     55 */
     56function unsplash_boite_infos($flux) {
     57
     58        $config = lire_config('unsplash/objets');
     59        $activer_logos = lire_config('activer_logos');
     60        $activer_logos_survol = lire_config('activer_logos_survol');
     61        $type = trouver_objet_exec($flux['args']['type']);
     62        $_id_objet = $flux['args']['id'];
     63
     64        if (isset($config) and count($config) > 0 and $activer_logos == 'oui' and $type !== false) {
     65                include_spip('base/objets');
     66                if (in_array(table_objet_sql($type['table_objet_sql']), $config)) {
     67                        /*
     68                         * On vérifie que l'objet a un logo normal et un logo de survol
     69                         * Cela conditionnera l'affichage de l'insertion de unsplash dans la boite d'infos de l'objet
     70                         */
     71                        $chercher_logo = charger_fonction('chercher_logo', 'inc');
     72                        $contexte['logo_normal'] = false;
     73                        $contexte['logo_survol'] = false;
     74                        $_logo_normal = $chercher_logo($_id_objet, $type['id_table_objet'], 'on');
     75                        $_logo_survol = $chercher_logo($_id_objet, $type['id_table_objet'], 'off');
     76                        if (count($_logo_normal) > 0) {
     77                                $contexte['logo_normal'] = true;
     78                        }
     79                        // Il faut que les logos de survol aient été activé dans la configuration du site
     80                        if (count($_logo_survol) > 0 and $activer_logos_survol == 'oui') {
     81                                $contexte['logo_survol'] = true;
     82                        }
     83                        $contexte['associer_objet'] = objet_type($type['type']) . '|' . $_id_objet;
     84                        $contexte['objet'] = objet_type($type['type']);
     85                        $contexte['id_objet'] = $_id_objet;
     86                        $fond = recuperer_fond('prive/squelettes/inclure/unsplash_objet_logo', $contexte);
     87                        $flux['data'] .= $fond;
     88                }
     89        }
     90
     91        return $flux;
     92}
     93
Note: See TracChangeset for help on using the changeset viewer.