Changeset 47526 in spip-zone


Ignore:
Timestamp:
May 7, 2011, 2:53:48 AM (10 years ago)
Author:
patfr@…
Message:

Format des URLs :

+ possibilité de verrouiller l'URL d'un objet
+ prise en charge des multiples URLs possibles d'un objet.

Location:
_plugins_/couteau_suisse
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/fonds/type_urls.html

    r35446 r47526  
    3636        jQuery("#ar_url_objet").val('');
    3737        if(!res) {
    38                 jQuery("#ar_url_objet, #url_objet_input").enable(false);
     38                jQuery("#ar_url_objet, #url_objet_input, #ar_verrouiller").enable(false);
    3939                return;
    4040        }
    4141        res = res.split(/\|\|/);
    42         jQuery("#ar_url_propre").html(res[4]?res[4]:ar_var_vide);
     42//      jQuery("#ar_url_propre").html(res[4]?res[4]:ar_var_vide);
     43        jQuery("#ar_url_propre").html(res[6]?res[6]:ar_var_vide);
    4344        jQuery("#ar_titre").html(res[0]);
    4445        jQuery("#ar_url_calculee").html(res[1]?res[1]:res[4]);
    4546        jQuery("#ar_url_objet").val(res[3]);
     47        jQuery('#ar_verrouiller').attr('checked', res[5]=='oui');
    4648        if(res[2]) ar_type_urls = res[2];
    4749        html_type_urls("#label_url_calculee", ar_url_calculee, ar_type_urls);
    4850        disab = (ar_type_urls=='page') || (ar_type_urls=='standard') || (ar_type_urls=='html');
    49         jQuery("#ar_url_objet, #url_objet_input").enable(!disab);
     51        jQuery("#ar_url_objet, #url_objet_input, #ar_verrouiller").enable(!disab);
    5052        if(disab) {
    5153                html_type_urls("#ar_edit_info", ar_edit_erreur, ar_type_urls);
     
    5557                jQuery("#url_objet_input").removeClass("cs_hidden");
    5658        }
    57         jQuery("#ar_edit_info").removeClass("cs_hidden");
     59        jQuery("#ar_edit_info, #ar_edit_verrou").removeClass("cs_hidden");
    5860}
    5961
     
    9496          
    9597         <label for="ar_num_objet"><b><:couteauprive:urls_num_objet:></b>&nbsp;<input class="ar_num_objet" id="ar_num_objet" name="ar_num_objet" size="5" value="#ENV*{ar_num_objet}"/></label><img id="ar_chercher" style="vertical-align:bottom; cursor:pointer; margin-left:1em;" title="<:couteauprive:urls_rechercher:>" src="#EVAL{_DIR_IMG_PACK}loupe.png" alt="<:bouton_chercher:>"/>
    96          </div>
    97          <div style="text-align:left;">
    98           <b><:couteauprive:urls_titre_objet:></b>&nbsp;<span id="ar_titre"> </span><br />
    99           <b><:couteauprive:urls_url_objet:></b>&nbsp;<span id="ar_url_propre"> </span><br />
    100           <span id="label_url_calculee" style="font-weight:bold;">[(#VAL{<:couteauprive:urls_url_calculee:>}|replace{@type@,#ENV*{type_urls}})]</span>  <span id="ar_url_calculee">&nbsp;</span><br />
    101           <label><b><:couteauprive:urls_nouvelle:></b><input style="width:100%;" id="ar_url_objet" name="ar_url_objet" value="" disabled="disabled"/></label>
    102           <div class="ar_edit_info cs_hidden" id="ar_edit_info">&nbsp;</div>
    103          </div>
     98</div>
     99<div style="text-align:left; margin-top:1em;">
     100         <div style="font-weight:bold"><:couteauprive:urls_titre_objet:></div>
     101     <div style="text-align:center;"><span id="ar_titre"> </span></div>
     102         <div style="font-weight:bold"><:couteauprive:urls_url_objet:></div>
     103     <div style="text-align:center;"><span id="ar_url_propre"> </span></div>
     104         <div style="font-weight:bold"><span id="label_url_calculee" style="font-weight:bold;">[(#VAL{<:couteauprive:urls_url_calculee:>}|replace{@type@,#ENV*{type_urls}})]</span></div>
     105     <div style="text-align:center;"><span id="ar_url_calculee"> </span></div>
     106
     107         <div style="margin-top:1em;">
     108     <label><b><:couteauprive:urls_nouvelle:></b><input style="width:100%;" id="ar_url_objet" name="ar_url_objet" value="" disabled="disabled"/></label>
     109         <div class="ar_edit_info cs_hidden" id="ar_edit_info">&nbsp;</div></div>
     110         <div class="cs_hidden" style="margin-top:1em;" id="ar_edit_verrou">
     111     <label><input id="ar_verrouiller" name="ar_verrouiller" class="checkbox" type="checkbox" value="oui" disabled="disabled"/> [(#VAL{<:couteauprive:urls_verrouiller:>}|replace{@voir@,<:voir_en_ligne:>}|cs_propre)]</label>
     112     </div>
     113</div>
     114
    104115         <div style="text-align:right"><input name="submit" id='url_objet_input' class='fondo' type='submit' disabled="disabled" value="<:couteauprive:urls_enregistrer:>" /></div>
    105116         <div id="ar_url_trouvee" class="cs_hidden">||</div>
  • _plugins_/couteau_suisse/fonds/type_urls_liste.html

    r35061 r47526  
    88
    99<BOUCLE_urls(URLS){type?=#ENV{type}}{par type,id_objet}{fusion concat(type,id_objet)}{pagination 50}>
    10 |[#TYPE ##ID_OBJET->[(#ID_OBJET|cs_url_publique{#TYPE})]]|<BOUCLE_urls2(URLS){type}{id_objet}{par date}{inverse}{'<br />'}>#URL [(#SET{del,#ID_OBJET|concat{',',#TYPE,',',#URL}|base64_encode})]
     10|[#TYPE ##ID_OBJET->[(#ID_OBJET|cs_url_publique{#TYPE})]]|<BOUCLE_urls2(URLS){type}{id_objet}{par date}{inverse}{'<br />'}>#URL[ (#DATE|>{#VAL{Y-m-d H:i:s}|date}|oui) (<:couteau:url_verrouillee:>)] [(#SET{del,#ID_OBJET|concat{',',#TYPE,',',#URL}|base64_encode})]
    1111[x|<:lien_supprimer:>->[(#SELF|replace{'\|',%7C}|parametre_url{suppr,#GET{del}})]]</BOUCLE_urls2>|</BOUCLE_urls>
    1212<html>#PAGINATION</html>
  • _plugins_/couteau_suisse/lang/couteau_fr.php

    r45971 r47526  
    135135        'urls_propres_objet' => 'Sont listées ici les URLs propres stockées en base grâce auxquelles les visiteurs pourront naviguer sur votre site.',
    136136        'urls_propres_titre' => 'URLS PROPRES',
     137        'url_verrouillee' => 'URL verrouillée',
     138
    137139
    138140        // V
  • _plugins_/couteau_suisse/lang/couteauprive_fr.php

    r46449 r47526  
    55
    66$GLOBALS[$GLOBALS['idx_lang']] = array(
     7        'urls_verrouiller' => '{{Verrouiller}} cette URL afin que SPIP ne la modifie plus, notamment lors d\'un clic sur « @voir@ » ou d\'un changement du titre de l\'objet.',
    78
    89        // 2
     
    871872        'urls_id_sauf_rubriques' => 'Exclure les objets suivants (séparés par « : ») :',
    872873        'urls_minuscules' => 'Lettres minuscules',
    873         'urls_nouvelle' => 'Éditer l\'URL « propres » :',
     874        'urls_nouvelle' => 'Éditer l\'URL « propres » principale :',
    874875        'urls_num_objet' => 'Numéro :',
    875876        'urls_purger' => 'Tout vider',
     
    880881        'urls_type_objet' => 'Objet :',
    881882        'urls_url_calculee' => 'URL publique « @type@ » :',
    882         'urls_url_objet' => 'URL « propres » enregistrée :',
    883         'urls_valeur_vide' => '(Une valeur vide entraine le recalcul de l\'URL)',
     883        'urls_url_objet' => 'URL(s) « propres » enregistrée(s) :',
     884        'urls_valeur_vide' => 'Note : Une valeur vide entraine la suppression des URL(s) « propres » enregistrée(s) puis un nouveau calcul de l\'URL principale sans verrouillage.',
     885        'url_verouillee' => 'URL verrouillée',
    884886
    885887        // V
  • _plugins_/couteau_suisse/outils/type_urls_action_rapide.php

    r35441 r47526  
    4747        // chercher dans la table des URLS
    4848        include_spip('base/abstract_sql');
    49         //  Recuperer une URL propre correspondant a l'objet.
    50         $row = sql_fetsel("U.url, O.$champ_titre", "$table AS O LEFT JOIN spip_urls AS U ON (U.type='$type' AND U.id_objet=O.$col_id)", "O.$col_id=$id_objet", '', 'U.date DESC', 1);
    51         if (!$row) return false; # Quand $id_objet n'est pas un numero connu
     49        //  Recuperer les URLs propre correspondant a l'objet.
     50        $rows = sql_allfetsel("U.url, U.date, O.$champ_titre", "$table AS O LEFT JOIN spip_urls AS U ON (U.type='$type' AND U.id_objet=O.$col_id)", "O.$col_id=$id_objet", '', 'U.date DESC');
     51        if (!$rows[0]) return false; # Quand $id_objet n'est pas un numero connu
    5252        // Calcul de l'URL complete
    5353        $url = str_replace('.././','../',generer_url_entite($id_objet, $type, '', '', true));
    54         $row2 = !strlen($url2 = $row['url'])
    55                 // si l'URL n'etait pas presente en base, maintenant elle l'est !
    56                 ?sql_fetsel("url", "spip_urls", "id_objet=$id_objet AND type='$type'", '', 'date DESC', 1)
    57                 :array('url'=>$url2);
     54        $row2 = !strlen($url2 = $rows[0]['url'])
     55                // si l'URL n'etait pas presente en base, maintenant elle l'est ! (non verrouillee du coup...)
     56                ?sql_fetsel("url, date", "spip_urls", "id_objet=$id_objet AND type='$type'", '', 'date DESC', 1)
     57                :array('url'=>$url2, 'date'=>$rows[0]['date']);
     58        // URL verrouilee par sa date ?
     59        $now = date('Y-m-d H:i:s');
     60        $verrou = $row2['date']>$now;
    5861        include_spip('inc/charsets');
    59         //  titre || url complete || type d'URLs || URL recalculee || url propre en base
    60         echo charset2unicode($row['titre']).'||'.$url.'||'.$type_urls.'||'.$row2['url'].'||'.$url2;
     62        $titre = charset2unicode($rows[0]['titre']);
     63        $info = ' ('._T('couteau:url_verrouillee').')';
     64        array_shift($rows); $toutes=$url2.($verrou?$info:'');
     65        foreach($rows as $r) $toutes .= '<br/>'.$r['url'].($r['date']>$now?$info:'');
     66        //  titre || URL complete || type d'URLs || URL recalculee || URL propre en base || verrou || toutes les URLs trouvees en base
     67        echo $titre.'||'.$url.'||'.$type_urls.'||'.$row2['url'].'||'.$url2.'||'.($verrou?'oui':'non').'||'.$toutes;
    6168}
    6269
     
    102109        include_spip('public/assembler');
    103110        echo '<html><head>'.f_jQuery(envoi_link(_T('couteau:urls_propres_titre')))
    104                 .'</head><body style="text-align:center">'
     111                .'<meta http-equiv="Content-Type" content="text/html; charset='.$GLOBALS['meta']['charset'].'" /></head><body style="text-align:center">'
    105112                .propre(recuperer_fond('fonds/type_urls_liste', array('type'=>_request('type'))))
    106113                .'</body></html>';
     
    143150                spip_log("L'URL $type#$id est supprimee");
    144151        } else {
    145                 $row = sql_fetsel("id_objet", "spip_urls", $where);
     152                // pour verrouiller une url, on fixe sa date dans le futur, dans 10 ans
     153                $verrou = _request('ar_verrouiller')=='oui'?10*365.25*24*3600:0;               
     154                $row = sql_fetsel("id_objet, url", "spip_urls", $where, '', 'date DESC', 1);
    146155                if($row) {
    147                         sql_updateq('spip_urls', array('date'=>date('Y-m-d H:i:s'), 'url'=>$url), $where);
    148                         spip_log("L'URL $type#$id est remplacee par : $url");
     156                        sql_updateq('spip_urls', array('date'=>date('Y-m-d H:i:s',time()+$verrou), 'url'=>$url), $where . ' AND url=' . sql_quote($row['url']));
     157                        spip_log("L'URL $type#$id est remplacee par : $url".($verrou?' puis verrouilee':''));
    149158                } else {
    150                         sql_insertq('spip_urls', array('date'=>date('Y-m-d H:i:s'), 'url'=>$url, 'id_objet'=>$id, 'type'=>$type));
    151                         spip_log("L'URL $type#$id a ete cree : $url");
     159                        sql_insertq('spip_urls', array('date'=>date('Y-m-d H:i:s',time()+$verrou), 'url'=>$url, 'id_objet'=>$id, 'type'=>$type));
     160                        spip_log("L'URL $type#$id a ete cree : $url".($verrou?' puis verrouilee':''));
    152161                }
    153162        }
  • _plugins_/couteau_suisse/plugin.xml

    r47479 r47526  
    22        <nom><multi>[en]Swiss Knife[fr]Le Couteau Suisse[ca]El Ganivet Su&#237;s[ar]&#1587;&#1603;&#1610;&#1606; &#1575;&#1604;&#1580;&#1610;&#1576;[nl]Het Zwitserland Mes[gl]A navalla su&#237;za[es]La Navaja Suiza[de]Schweizer Taschenmesser[tr]&#304;svi&#231;re &#199;ak&#305;s&#305;[br]Ar Gontell Suis[pt_br]Canivete Su&#237;&#231;o[ast]La Navaya Suiza[gl]A navalla su&#237;za[ro]Cu&#355;itul Elve&#355;ian[it]Coltellino Svizzero</multi></nom>
    33        <icon>img/couteau-50.gif</icon>
    4         <version>1.8.39.00</version>
     4        <version>1.8.39.01</version>
    55        <version_base>1.0</version_base>
    66        <auteur>Patrice Vanneufville
Note: See TracChangeset for help on using the changeset viewer.