Changeset 28980 in spip-zone for _plugins_/marque-pages


Ignore:
Timestamp:
Jun 2, 2009, 5:58:16 PM (11 years ago)
Author:
vincent@…
Message:

ce n'est pas fini, mais je commit dans le tas, histoire de pas perdre mon travail

en gros :

  • conformité pour SPIP 2
  • formulaire CVT
  • on peut faire des marque-pages public ou privé
  • un alias permet de faire une boucle (MARQUEPAGES)
  • une super interface clé-en-main comme delicious, pas encore finie mais quand même bien avancée !!

il manque encore et qui est prévu :

  • la recherche plein texte
  • des bookmarklets pour ajouter à son navigateur
  • la gestion des imports / exports (surtout Firefox et delicious)
  • plein de petits trucs à ajouter/corriger encore à l'interface

il faudrait en plus :

  • la possibilité de sélectionner plusieurs mots-clés en même temps (un vrai ET)
Location:
_plugins_/marque-pages
Files:
29 added
6 deleted
11 edited
1 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/marque-pages/balise/formulaire_editer_marquepage.php

    r28952 r28980  
    44if (!defined("_ECRIRE_INC_VERSION")) return;
    55
    6 function balise_FORMULAIRE_MARQUEPAGE($p) {
     6function balise_FORMULAIRE_EDITER_MARQUEPAGE($p) {
    77       
    8     return calculer_balise_dynamique($p, 'FORMULAIRE_MARQUEPAGE', array('id_rubrique'));
     8    return calculer_balise_dynamique($p, 'FORMULAIRE_EDITER_MARQUEPAGE', array('id_forum', 'id_rubrique'));
    99   
    1010}
    1111
    12 function balise_FORMULAIRE_MARQUEPAGE_stat($args, $filtres) {
     12function balise_FORMULAIRE_EDITER_MARQUEPAGE_stat($args, $filtres) {
    1313       
    14     // Pas d'id_rubrique ? Erreur de squelette
    15         if (!$args[0])
    16                 return erreur_squelette(
    17                         _T('zbug_champ_hors_motif',
    18                                 array ('champ' => '#FORMULAIRE_MARQUEPAGE',
    19                                         'motif' => 'RUBRIQUES')), '');
     14        $id_forum = intval($args[0]) ? intval($args[0]) : 'new';
     15        $id_rubrique = $args[1] ? $args[1] : lire_config('marquepages/rubrique');
    2016       
    21         return $args;
     17        return array($id_forum, $id_rubrique);
    2218       
    2319}
    2420
    25 function balise_FORMULAIRE_MARQUEPAGE_dyn($id_rubrique) {
    26        
    27         include_spip('inc/marquepages_api');
    28        
    29         // On récupère les éléments du formulaire
    30         $submit = _request('mp_valider');
    31         $titre  = _request('mp_titre');
    32         $url    = _request('mp_url');
    33         $desc   = _request('mp_description');
    34         $tags   = _request('mp_etiquettes');
    35         $retour = rawurldecode(_request('retour'));
    36        
    37         // Si on a pas le droit, faut proposer le login
    38         if (!marquepages_autoriser_creer($id_rubrique)){
    39                
    40                 $proposer_login = true;
    41                 $message_erreur = _T('marquepages:pas_le_droit');
    42                
    43         }
    44         else $proposer_login = false;
    45        
    46         // Si le formulaire a été rempli
    47         if ($submit) {
    48                
    49                 // Si tout va, on intègre à la base de données
    50                 if (($message_erreur = marquepages_test_parametres($url, $titre, $desc, $tags, $id_rubrique)) == ''){
    51                        
    52                         $ok = marquepages_ajouter($url, $titre, $desc, $tags, $id_rubrique);
    53                         if ($ok != 0) $message_ok = _T('marquepages:enregistre');
    54                         else $message_erreur = "Error with the database.";
    55                        
    56                 }
    57        
    58         }
    59        
    60         // On provoque enfin l'affichage
    61     return array(
    62         'formulaires/marquepage',
    63         0,
    64         array(
    65                 'self' =>       parametre_url(
    66                                                         parametre_url(
    67                                                                 parametre_url(
    68                                                                         parametre_url(
    69                                                                                 str_replace('&', '&', self())
    70                                                                         ,'mp_url', '')
    71                                                                 , 'mp_titre', '')
    72                                                         , 'mp_description', '')
    73                                                 , 'mp_etiquettes', ''),
    74                 'retour' => str_replace('&', '&', $retour),
    75                 'message_ok' => $message_ok,
    76                         'message_erreur' => $message_erreur,
    77                         'proposer_login' => $proposer_login,
    78                         'mp_titre' => $titre,
    79                         'mp_url' => $url,
    80                         'mp_description' => $desc,
    81                         'mp_etiquettes' => $tags                       
    82         )
    83     );
    84    
    85 }
    86 
    8721?>
  • _plugins_/marque-pages/controleurs/marquepage.html

    r20133 r28980  
    66#CACHE{0}
    77
    8 <BOUCLE_marquepage(FORUMS){id_forum=#ENV{id_forum}}{statut=prive}>
     8<BOUCLE_marquepage(MARQUEPAGES){id_forum=#ENV{id_marquepage}}>
     9<div class="formulaire_marquepage">
    910<fieldset style="width:#ENV{largeur}px;">
    1011        <legend><:marquepages:modifier:></legend>
    1112       
    12         <p><label for="titre"><:marquepages:titre:></label></p>
    13         <p><input type="text" class="crayon-active" id="titre" name="#ENV{name_titre}" style="width:#ENV{largeur}px;" value="[(#TITRE**|entites_html)]" size="60" /></p>
    14        
    15         <p><label for="texte"><:marquepages:description:></label></p>
    16         <p><input type="text" class="crayon-active" id="texte" name="#ENV{name_texte}" style="width:#ENV{largeur}px;" value="[(#TEXTE**|entites_html)]" /></p>
    17        
    18         <p><label for="tags"><:etiquettes:etiquettes:></label></p>
    19         <input type="hidden" disabled="disabled" name="#ENV{name_tags}" />
    20         #CHAMP_ETIQUETTES{tags, #ENV{name_tags}}
     13        <ul>
     14                <li>
     15                        <label for="titre"><:marquepages:titre:></label>
     16                        <input type="text" class="crayon-active" id="titre" name="#ENV{name_titre}" style="width:#ENV{largeur}px;" value="[(#TITRE**|entites_html)]" size="60" />
     17                </li>
     18                <li>
     19                        <label for="texte"><:marquepages:description:></label>
     20                        <input type="text" class="text crayon-active" id="texte" name="#ENV{name_texte}" style="width:#ENV{largeur}px;" value="[(#TEXTE**|entites_html)]" size="60" />
     21                </li>
     22                <li>
     23                        <label for="visibilite"><:marquepages:visibilite:></label>
     24                        <select name="#ENV{name_statut}" id="visibilite">
     25                                <option value="mppublic"[ (#STATUT|=={mppublic}|oui)selected="selected"]><:marquepages:visibilite_public:></option>
     26                                <option value="mpprive"[ (#STATUT|=={mpprive}|oui)selected="selected"]><:marquepages:visibilite_prive:></option>
     27                        </select>
     28                </li>
     29                <li>
     30                        <label for="tags"><:etiquettes:etiquettes:></label>
     31                        <input type="hidden" disabled="disabled" name="#ENV{name_tags}" />
     32                        #FORMULAIRE_ETIQUETTES{uniquement_champ=true, name=#ENV{name_tags}, objet=forum-#ID_FORUM, explication=false, nuage=marquepages}
     33                </li>
     34        </ul>
    2135
    2236</fieldset>
     37</div>
    2338</BOUCLE_marquepage>
  • _plugins_/marque-pages/css/marquepages.css

    r15574 r28980  
     1/* Dans le formulaire */
     2#formulaire_marquepage input.text, #formulaire_marquepage select{
     3        width:90%;
     4}
     5
    16/* Le bloc du marque-page */
    2 dl.xfolkentry{
     7.marquepage{
    38        clear:both;
    49        margin:1em 0 0 0;
     
    712}
    813
    9 /* Le titre du marque-page */
    10 dl.xfolkentry dt{
     14.marquepage dl{
    1115        margin:0;
    1216        padding:0;
    13         font-size:1em;
     17}
     18/* Le titre du marque-page */
     19.marquepage dt{
     20        margin:0;
     21        padding:0;
     22        font-size:1.2em;
    1423        font-weight:bold;
    15 }
    16 dl.xfolkentry dt a{
    17         color:#cc6;
    1824}
    1925
    2026/* Les infos du marque-page */
    21 dl.xfolkentry dd{
     27.marquepage dd{
    2228        margin:0;
    2329        padding:0;
     30}
     31.marquepage dd.meta{
     32        color:#aaa;
    2433        font-size:0.8em;
    25 }
    26 dl.xfolkentry dd.meta{
    27         color:#aaa;
    2834}
    2935
    3036/* Les boutons d'actions */
    31 dl.xfolkentry ul.actions{
     37.marquepage .actions{
    3238        float:right;
    33         width:auto;
    34         list-style:none;
     39        width:32px;
     40        padding:0;
     41        margin:-1.2em 0 0 2em;
    3542        text-align:right;
    3643}
    37 dl.xfolkentry ul.actions li{
    38         margin:0 0 0 1em;
    39         display:inline;
     44.marquepage .actions ul{
     45        margin:0;
     46        padding:0;
    4047}
    41 dl.xfolkentry ul.actions a{
    42         color:#cc6;
    43         padding:0.1em;
    44         font-weight:bold;
    45         text-transform:lowercase;
     48.marquepage .actions li{
     49        float:right;
     50        width:16px;
     51        list-style:none;
     52}
     53.marquepage .actions a{
     54        display:block;
     55        width:16px;
     56        height:16px;
     57        opacity:0.5;
     58}
     59.marquepage .actions a span{
     60        position: absolute;
     61        top:-10000px;
     62}
     63.marquepage .actions a:hover{
     64        opacity:1;
     65}
     66.marquepage .actions li.copier a{
     67        background:transparent url(../images/marquepage_copier_gris.png) center center no-repeat;
     68}
     69.marquepage .actions li.supprimer a{
     70        background:transparent url(../images/marquepage_supprimer_gris.png) center center no-repeat;
     71}
     72.marquepage .actions li.copier a:hover{
     73        background-image:url(../images/marquepage_copier.png);
     74}
     75.marquepage .actions li.supprimer a:hover{
     76        background-image:url(../images/marquepage_supprimer.png);
    4677}
    4778
    48 /* Demande de confirmation */
    49 dl.xfolkentry ul.actions span.confirmation{ color:red; }
    50 dl.xfolkentry ul.actions span.confirmation a{ color:#444; }
    51 dl.xfolkentry ul.actions span.confirmation a:hover{ color:green; }
     79
     80/* Pour le crayon */
     81.marquepage .crayon-icones span, .marquepage .crayon-icones em{
     82        top:1em;
     83}
     84
     85.formulaire_crayon .formulaire_marquepage{
     86        padding:1em;
     87        background:white;
     88        border:1px solid black;
     89}
     90
  • _plugins_/marque-pages/fonds/marquepages.html

    r16292 r28980  
    11[(#REM)
    22
    3         Paramètres obligatoires
     3        Paramètres obligatoires
    44        =======================
    55        self :
    6                 ce paramètre est obligatoire, sinon le cache n'est pas bon
     6                ce paramètre est obligatoire, sinon le cache n'est pas bon
    77               
    8         Paramètres
     8        Paramètres
    99        ==========
    1010        historique :
     
    1313                le nom du squelette d'ajout
    1414        pagination :
    15                 de combien en combien on affiche (par défaut c'est 20)
     15                de combien en combien on affiche (par défaut c'est 20)
    1616        tri :
    1717                comment on tri ?
    18                 deux choix : titre ou date (par défaut c'est date)
    19                 si c'est date, ça met en date inverse automatiquement sauf si
    20                 on précise explicitement le sens
     18                deux choix : titre ou date (par défaut c'est date)
     19                si c'est date, ça met en date inverse automatiquement sauf si
     20                on précise explicitement le sens
    2121        senstri :
    2222                pour expliciter le sens du tri
    2323                0 : normal
    24                 1 : inversé
     24                1 : inversé
    2525       
    2626        Filtres
     
    3535                si on veut sortir un marque-page particulier
    3636        titre_mot :
    37                 si on veut les marque-pages associés à un mot-clé
     37                si on veut les marque-pages associés à un mot-clé
    3838       
    3939        Exemple :
     
    4242]
    4343
    44 [(#REM) Calcul du tri]
     44[(#REM) Calcul du tri : par défaut la date inverse]
    4545[(#ENV{tri}|?{#SET{tri,#ENV{tri}},#SET{tri,date}})]
    4646[(#GET{tri}|=={date}|?{#SET{sens,1},#SET{sens,0}})]
     47[(#GET{tri}|=={date}|?{#SET{tri,date_heure}})]
    4748[(#ENV{senstri}|match{^(0|1)$}|?{#SET{sens,#ENV{senstri}}})]
    4849
    49 <div class="resultats">
    5050<B_marquepages>
     51#SET{total,#GRAND_TOTAL}
     52<ul class="infos-liste">
     53<li><:marquepages:nombre_marquepages{nombre=#GET{total}}:></li>
     54</ul>
    5155#ANCRE_PAGINATION
     56<BOUCLE_marquepages(MARQUEPAGES syndic mots_forum mots){syndic.id_rubrique?}{titre_mot?}{id_forum?}{id_syndic?}{id_auteur?}{recherche?}{pagination #ENV{pagination,10}}{par #GET{tri}}{inverse #GET{sens}}>
     57[(#AUTORISER{voir,marquepage,#ID_FORUM}|oui)
     58        [(#INCLURE{fond=fonds/marquepage}{id_forum}{id_rubrique=#ENV{id_rubrique}}{self})]
     59]
     60</BOUCLE_marquepages>
    5261[<p class="pagination">(#PAGINATION{page_precedent_suivant})</p>]
    53 <BOUCLE_marquepages(FORUMS){id_syndic!=0}{statut=prive}{titre_mot?}{id_forum?}{id_syndic?}{id_auteur?}{pagination #ENV{pagination,20}}{par #GET{tri}}{inverse #GET{sens}}>
    54 <BOUCLE_site(SITES){id_syndic}{id_rubrique==^(#ENV{id_rubrique,.*})$}>
    55 <div class="[(#SESSION{id_auteur}|=={#_marquepages:ID_AUTEUR}|?{#_marquepages:EDIT{marquepage}})]">
    56 <dl class="xfolkentry">
    57         <dt>
    58                 <a href="#_site:URL_SITE" class="taggedlink" rel="nofollow">#_marquepages:TITRE</a>
    59         </dt>
    60         [<dd class="description">
    61                 (#_marquepages:TEXTE)
    62         </dd>]
    63         <dd class="meta">
    64                 [<:marquepages:poste_le:> (#_marquepages:DATE|affdate{j-m-Y}), ]
    65                
    66                 <B_auteur>
    67                         <:par_auteur:>
    68                 <BOUCLE_auteur(AUTEURS){tous}{id_auteur=#_marquepages:ID_AUTEUR}>
    69                         <a href="#URL_AUTEUR">
    70                                 [(#SESSION{id_auteur}|=={#ID_AUTEUR}|?{<:marquepages:vous:>})]
    71                                 [(#SESSION{id_auteur}|!={#ID_AUTEUR}|?{' '})[(#MODELE{auteur_nomcomplet}{id=#ID_AUTEUR})]]
    72                         </a>
    73                         <BOUCLE_autres(FORUMS){id_syndic=#_marquepages:ID_SYNDIC}{statut=prive}{plat}> </BOUCLE_autres>
    74                                 [<:marquepages:et:> (#TOTAL_BOUCLE|moins{1}|!={0}|?{' ',''})<a href="[(#URL_PAGE{#ENV{historique,marquepages_historique}}|parametre_url{id_syndic,#ID_SYNDIC})]">[(#TOTAL_BOUCLE|moins{1})] <:marquepages:autres:></a>]
    75                         </B_autres>
    76                 </BOUCLE_auteur>
    77                
    78                 <B_tags>
    79                         <br /><:marquepages:avec_etiquettes:> :
    80                 <BOUCLE_tags(MOTS){type=tags}{id_forum=#_marquepages:ID_FORUM}{", "}{par titre}>
    81                         <a rel="tag" href="#URL_MOT">#TITRE</a>
    82                 </BOUCLE_tags>
    83                
    84                 [(#SESSION{id_auteur}|?{' '})
    85                 <ul class="actions">
    86                         [(#SESSION{id_auteur}|!={#_marquepages:ID_AUTEUR}|?{' '})
    87                                 <li><a href="[(#URL_PAGE{#ENV{ajout,marquepages_ajouter}}|parametre_url{id_rubrique,#ID_RUBRIQUE}|parametre_url{mp_url,#_site:URL_SITE}|parametre_url{mp_titre,#_marquepages:TITRE}|parametre_url{retour,#ENV{self}})]"><:marquepages:copier:></a></li>
    88                         ]
    89                         [(#_marquepages:ID_FORUM|marquepages_autoriser_supprimer|?{' '})
    90                                 <li><a class="confirmer" href="#URL_SITE_SPIP/spip.php?action=marquepages_supprimer&id=#_marquepages:ID_FORUM&r=[(#ENV{self}|replace{&amp;,&}|rawurlencode)]"><:marquepages:supprimer:></a></li>
    91                         ]
    92                 </ul>
    93                 ]
    94         </dd>
    95 </dl>
    96 </div>
    97 </BOUCLE_site>
    98 </BOUCLE_marquepages>
    9962<script type="text/javascript">
     63        function appel_marquepages_confirmer(){
     64                marquepages_confirmer('.supprimer a.confirmer', '[(#VAL{<:marquepages:confirmer:>}|filtrer_entites)]');
     65        }
     66       
    10067        $(function() {
    101                
    102                 confirmer("a.confirmer");
    103                
     68                appel_marquepages_confirmer();
    10469        });
    10570</script>
     
    10772<p><:marquepages:aucun_marquepages:></p>
    10873<//B_marquepages>
    109 </div>
     74
     75<BOUCLE_test(FORUMS){statut=mppublic}{recherche}>
     76        <h3>#TITRE</h3>
     77</BOUCLE_test>
  • _plugins_/marque-pages/inc/marquepages_api.php

    r16292 r28980  
    11<?php
    2 /*
    3  * Plugin marque-pages
    4  * Outils pour gérer un (ou plusieurs) système de marque-pages partagés
    5  *
    6  * Auteur : Vincent Finkelstein
    7  * Distribué sous licence GPL
    8  *
    9  */
    10 
    11 // Teste si on a le droit d'ajouter un marque-page
    12 function marquepages_autoriser_creer($id_rubrique){
    13        
    14         global $auteur_session;
    15         include_spip('inc/autoriser');
    16         return autoriser('creersitedans', 'rubrique', intval($id_rubrique), $auteur_session, NULL);
    17        
    18 }
    19 
    20 // Teste si on peut supprimer un marque-page
    21 function marquepages_autoriser_supprimer($id_forum){
    22        
    23         // On dit que si on a le droit de modifier un MP, alors on a le droit de le supprimer
    24         global $auteur_session;
    25         include_spip('inc/autoriser');
    26         return autoriser('modifier', 'forum', intval($id_forum), $auteur_session, NULL);
    27        
    28 }
    29 
    30 // Teste si tous les paramètres sont bons
    31 // Renvoie un message d'erreur si ça va pas, sinon une chaîne vide
    32 function marquepages_test_parametres($url, $titre, $description, $tags, $id_rubrique){
    33        
    34         $message_erreur = '';
    35        
    36         // Si on a pas le droit faut aussi un message d'erreur
    37         if (!marquepages_autoriser_creer($id_rubrique))
    38                 return $message_erreur = _T('marquepages:pas_le_droit');
    39        
    40         // Tester le nom du site
    41         if (strlen ($titre) < 2)
    42                 $message_erreur = _T('form_prop_indiquer_nom_site');
    43        
    44         // Tester l'URL du site
    45         include_spip('inc/distant');
    46         $url = _request('mp_url');
    47         if (!recuperer_page($url)){
    48                 $message_erreur = _T('form_pet_url_invalide');
    49         }
    50        
    51         return $message_erreur;
    52        
    53 }
    54 
    55 // Renvoie l'identifiant du site s'il existe déjà, 0 sinon
    56 function marquepages_existe($url, $id_rubrique=0){
    57        
    58         include_spip('base/abstract_sql');
    59        
     2
     3// Sécurité
     4if (!defined("_ECRIRE_INC_VERSION")) return;
     5
     6function marquepages_formater_url($url){
     7       
     8        $url = trim($url);
    609        // On enlève le slash à la fin
    6110        $url = preg_replace('|(.*)/$|i', '$1', $url);
     
    6312        $url = preg_replace('|^(http://)?(.*)$|i', 'http://$2', $url);
    6413       
    65         $where = array("url_site=" . _q($url), "statut='publie'");
     14        return $url;
     15       
     16}
     17
     18// Tester si l'url est bonne
     19// Renvoie false si on arrive rien à récupérer
     20// Renvoie le titre si c'est une page HTML
     21// Sinon on essaye de renvoyer un titre pas trop moche
     22function marquepages_tester_url($url){
     23               
     24        include_spip('inc/distant');
     25        include_spip('base/abstract_sql');
     26       
     27        $url = marquepages_formater_url($url);
     28        $infos = recuperer_infos_distantes($url);
     29       
     30        if (!$infos)
     31                return false;
     32        elseif ($titre = trim($infos['titre']))
     33                return $titre;
     34        else{
     35                $chemin = parse_url($url, PHP_URL_PATH);
     36                $fichier = pathinfo($chemin, PATHINFO_FILENAME);
     37                $titre = rawurldecode($fichier);
     38                $titre = str_replace('_', ' ', $titre);
     39                $titre = str_replace('-', ' ', $titre);
     40                $titre = preg_replace('/(\s)+/', ' ', $titre);
     41                return $titre;
     42        }
     43       
     44}
     45
     46// Renvoie l'identifiant du site s'il existe déjà, 0 sinon
     47function marquepages_site_existe($url, $id_rubrique=0){
     48       
     49        include_spip('base/abstract_sql');
     50       
     51        $url = marquepages_formater_url($url);
     52       
     53        $where = array(
     54                array('=', 'url_site', sql_quote($url)),
     55                array('=', 'statut', sql_quote('publie'))
     56        );
     57       
    6658        // On précise id_rubrique s'il est donné
    6759        if($id_rubrique != 0)
    68                 array_push($where, "id_rubrique=" . intval($id_rubrique));
     60                array_push(
     61                        $where,
     62                        array('=', 'id_rubrique', intval($id_rubrique))
     63                );
    6964       
    7065        // On fait la requête
    71         $a = spip_abstract_fetsel(
    72                 array('id_syndic'),
    73                 array('spip_syndic'),
     66        $requete = sql_fetsel(
     67                'id_syndic',
     68                'spip_syndic',
    7469                $where,
    7570                '',
     
    7873        );
    7974       
    80         return ($a['id_syndic']) ? intval($a['id_syndic']) : 0;
     75        return $requete['id_syndic'] ? intval($requete['id_syndic']) : 0;
    8176       
    8277}
    8378
    8479// Ajoute un marque-page, retourne 0 si ça marche pas
    85 function marquepages_ajouter($url, $titre, $description, $tags, $id_rubrique){
    86        
    87         // Si jamais qqn utilise la fonction sans les tests avant
    88         if (marquepages_test_parametres($url, $titre, $description, $tags, $id_rubrique) == ''){
     80function marquepages_ajouter($id_rubrique, $url, $titre, $description, $statut, $tags){
     81       
     82        // Si jamais qqn utilise la fonction sans faire de tests avant
     83        if ($titre_defaut = marquepages_tester_url($url)){
     84               
     85                // Si le titre est vide on met celui par défaut
     86                if (!$titre)
     87                        $titre = $titre_defaut;
    8988               
    9089                // Si le site n'existe pas encore, on le crée
    91                 if (($id_syndic = marquepages_existe($url, $id_rubrique)) == 0){
     90                if (($id_syndic = marquepages_site_existe($url, $id_rubrique)) == 0){
    9291                       
    9392                        // On enlève le slash à la fin
    94                         $url = preg_replace('|(.*)/$|i', '$1', $url);
    95                         // On s'assure qu'il y a http://
    96                         $url = preg_replace('|^(http://)?(.*)$|i', 'http://$2', $url);
     93                        $url = marquepages_formater_url($url);
    9794                       
    98                         sql_insert('spip_syndic', "(nom_site, url_site, id_rubrique, descriptif, date, statut, syndication)", "(" . _q($titre) . ", " . _q($url) . ", " . intval($id_rubrique) .", " . _q($description) . ", NOW(), 'publie', 'non')");
    99                         $id_syndic = spip_insert_id();
     95                        $id_syndic = sql_insertq(
     96                                'spip_syndic',
     97                                array(
     98                                        'nom_site' => $titre,
     99                                        'url_site' => $url,
     100                                        'id_rubrique' => $id_rubrique,
     101                                        'descriptif' => $description,
     102                                        'date' => 'NOW()',
     103                                        'statut' => 'publie',
     104                                        'syndication' => 'non'
     105                                )
     106                        );
    100107                       
    101108                }
    102109               
    103                 // Ensuite on crée le marque-page proprement dit, cad le forum privé
    104                 $id_forum = sql_insert('spip_forum', "(id_syndic, titre, texte, date_heure, maj, statut, id_auteur, auteur, email_auteur)", "($id_syndic," . _q($titre) . ", " . _q($description) . ", NOW(), NOW(), 'prive', " . _q($GLOBALS['auteur_session']['id_auteur']) . ", " . _q($GLOBALS['auteur_session']['nom']) . ", " . _q($GLOBALS['auteur_session']['email']) . ")");
    105                
    106                 // Enfin on ajoute les mots-clés
     110                // Ensuite on crée le marque-page proprement dit, cad le forum
     111                $id_forum = sql_insertq(
     112                        'spip_forum',
     113                        array(
     114                                'id_syndic' => $id_syndic,
     115                                'url_site' => $url, // on remet l'URL, ça permet que la recherche prenne en compte
     116                                'titre' => $titre,
     117                                'texte' => $description,
     118                                'date_heure' => 'NOW()',
     119                                'statut' => $statut,
     120                                'id_auteur' => $GLOBALS['auteur_session']['id_auteur'],
     121                                'auteur' =>  $GLOBALS['auteur_session']['nom'],
     122                                'email_auteur' => $GLOBALS['auteur_session']['email']
     123                        )
     124                );
     125               
     126                // Enfin on ajoute les mots-clés s'il y en a
     127                if ($tags){
     128                        include_spip('inc/tag-machine');
     129                        ajouter_liste_mots($tags, $id_forum, 'tags', 'forum', 'id_forum', true);
     130                }
     131               
     132        }
     133       
     134        return $id_forum ? $id_forum : 0;
     135       
     136}
     137
     138// Edite un marque-page déjà existant
     139// On ne peut pas changer l'URL ça n'a pas de sens
     140function marquepages_modifier($id_forum, $titre, $description, $statut, $tags){
     141       
     142        // On modifie la table
     143        $tout_va_bien = sql_updateq(
     144                'spip_forum',
     145                array(
     146                        'titre' => $titre,
     147                        'texte' => $description,
     148                        'statut' => $statut
     149                ),
     150                'id_forum='.intval($id_forum)
     151        );
     152       
     153        // Enfin on ajoute les mots-clés s'il y en a
     154        if ($tags){
    107155                include_spip('inc/tag-machine');
    108156                ajouter_liste_mots($tags, $id_forum, 'tags', 'forum', 'id_forum', true);
    109                
    110         }
    111        
    112         return $id_forum ? $id_forum : 0;
    113        
    114 }
    115 
    116 // Supprime un marque-page (on supprime jamais les sites)
     157        }
     158       
     159        return $tout_va_bien;
     160       
     161}
     162
     163// Supprime un marque-page et éventuellement le site
    117164// Retourne true si c'est bon, false sinon
    118165function marquepages_supprimer($id_forum){
    119166       
    120         // Si on a pas l'autorisation on quitte
    121         if(!marquepages_autoriser_supprimer($id_forum))
    122                 return false;
    123         else{
    124                
    125                 $r = spip_abstract_fetsel(
    126                         array('id_syndic'),
    127                         array('spip_forum'),
    128                         array('id_forum=' . intval($id_forum))
     167        $r = sql_fetsel(
     168                'id_syndic',
     169                'spip_forum',
     170                array(
     171                        array('=', 'id_forum', intval($id_forum))
     172                )
     173        );
     174        $id_syndic = $r['id_syndic'];
     175       
     176        // on supprime déjà le marque-page
     177        $tout_va_bien = sql_delete(
     178                'spip_forum',
     179                "id_forum=" . intval($id_forum) . " or id_parent=" . intval($id_forum)
     180        );
     181       
     182        if ($tout_va_bien){
     183               
     184                // si ya plus de marque-page sur le site, on le supprime aussi
     185                $r = sql_fetsel(
     186                        'titre',
     187                        'spip_forum',
     188                        array(
     189                                array('=', 'id_syndic', intval($id_syndic))
     190                        )
    129191                );
    130                 $id_syndic = $r['id_syndic'];
    131                
    132                 // on supprime déjà le marque-page
    133                 $tout_va_bien = spip_query("delete from spip_forum where id_forum=" . intval($id_forum) . " or id_parent=" . intval($id_forum));
    134                
    135                 if ($tout_va_bien){
    136                        
    137                         // si ya plus de marque-page sur le site, on le supprime aussi
    138                         $r = spip_abstract_fetsel(
    139                                 array('titre'),
    140                                 array('spip_forum'),
    141                                 array('id_syndic=' . intval($id_syndic))
     192               
     193                if (!$r['titre']){
     194                        $tout_va_bien = sql_delete(
     195                                'spip_syndic',
     196                                "id_syndic=" . intval($id_syndic)
    142197                        );
    143                        
    144                         if (!$r['titre']){
    145                                 $tout_va_bien = spip_query("delete from spip_syndic where id_syndic=" . intval($id_syndic));
    146                         }
    147                        
    148198                }
    149199               
    150                 return $tout_va_bien;
    151                
    152         }
     200        }
     201       
     202        return $tout_va_bien;
    153203       
    154204}
  • _plugins_/marque-pages/lang/marquepages_en.php

    r15785 r28980  
    55// Pour l'affichage
    66'titre_marquepages' => 'Bookmarks',
     7'titre_marquepages_de' => '@auteur@\'s bookmarks',
     8'mes_marquepages' => 'My bookmarks',
     9'tous_les_marquepages' => 'All bookmarks',
    710'historique' => 'Website history',
    811'aucun_marquepages' => 'There is no bookmarks.',
     12'nombre_marquepages' => '@nombre@ bookmarks',
    913'avec_etiquettes' => 'with tags',
    1014'poste_le' => 'post on',
     
    1418'supprimer' => 'Delete',
    1519'copier' => 'Copy',
    16 'confirmer' => 'Are you sure ?',
    17 'oui' => 'yes',
    18 'non' => 'no',
     20'enlever' => 'Remove',
     21'confirmer' => 'Are you really want to delete this bookmark ?',
    1922'de' => 'of',
     23
     24// Pour la configuration
     25'configuration_titre' => 'Bookmarks configuration',
     26'configuration_qui' => 'Who can add bookmarks ?',
     27'configuration_rubrique' => 'Bookmarks section',
     28'configuration_rubrique_explication' => 'Choose a section where bookmarks will be saved by default.',
    2029
    2130// Pour le formulaire de saisi
     
    2635'titre' => 'Title',
    2736'description' => 'Description',
     37'visibilite' => 'Visibility;',
     38'visibilite_public' => 'Public bookmark',
     39'visibilite_prive' => 'Private bookmark',
    2840'pas_le_droit' => 'You are not authorized. You have to log in with an authorized account.',
    2941'se_deconnecter' => 'You can log out by clicking here.',
    30 'enregistre' => 'Your bookmark have been successfully saved.',
     42'enregistre' => 'The bookmark have been successfully saved.',
     43'modifie' => 'The bookmark have been successfully modified.',
     44'erreur' => 'An error occured.',
    3145'revenir' => 'Come back from where you came',
    3246'nouveau' => 'Add a new bookmark'
  • _plugins_/marque-pages/lang/marquepages_fr.php

    r15324 r28980  
    55// Pour l'affichage
    66'titre_marquepages' => 'Marque-pages',
     7'titre_marquepages_de' => 'Marque-pages de @auteur@',
     8'mes_marquepages' => 'Mes marque-pages',
     9'tous_les_marquepages' => 'Tous les marque-pages',
    710'historique' => 'Historique d\'un site',
    811'aucun_marquepages' => 'Il n\'y a pas de marque-pages.',
     12'nombre_marquepages' => '@nombre@ marque-pages',
    913'avec_etiquettes' => 'avec les &eacute;tiquettes',
    1014'poste_le' => 'post&eacute; le',
     
    1418'supprimer' => 'Supprimer',
    1519'copier' => 'Copier',
    16 'confirmer' => '&Ecirc;tes-vous s&ucirc;r ?',
    17 'oui' => 'oui',
    18 'non' => 'non',
     20'enlever' => 'Enlever',
     21'confirmer' => '&Ecirc;tes-vous s&ucirc;r de vouloir supprimer ce marque-page ?',
    1922'de' => 'de',
     23
     24// Pour la configuration
     25'configuration_titre' => 'Configuration des marque-pages',
     26'configuration_qui' => 'Qui peut ajouter des marque-pages ?',
     27'configuration_rubrique' => 'Rubrique des marque-pages',
     28'configuration_rubrique_explication' => 'Choisissez la rubrique dans laquelle les marque-pages seront enregistr&eacute;s par d&eacute;faut.',
    2029
    2130// Pour le formulaire de saisi
     
    2635'titre' => 'Titre',
    2736'description' => 'Description',
     37'visibilite' => 'Visibilit&eacute;',
     38'visibilite_public' => 'Marque-page public',
     39'visibilite_prive' => 'Marque-page priv&eacute;',
    2840'pas_le_droit' => 'Vous n\'avez pas le droit. Veuillez vous connectez avec un compte autoris&eacute;.',
    2941'se_deconnecter' => 'Vous pouvez vous d&eacute;connecter en cliquant ici.',
    30 'enregistre' => 'Votre marque-page a bien &eacute;t&eacute; enregistr&eacute;.',
     42'enregistre' => 'Le marque-page a bien &eacute;t&eacute; enregistr&eacute;.',
     43'modifie' => 'Le marque-page a bien &eacute;t&eacute; modifi&eacute;.',
     44'erreur' => 'Une erreur s\'est produite.',
    3145'revenir' => 'Revenir d\'o&ugrave; vous venez',
    3246'nouveau' => 'Ajouter un nouveau marque-page'
  • _plugins_/marque-pages/marquepages_fonctions.php

    r14642 r28980  
    11<?php
    22
    3 include_spip('inc/marquepages_api');
     3// Sécurité
     4if (!defined("_ECRIRE_INC_VERSION")) return;
     5
     6function marquepages_trier($tableau){
     7        arsort($tableau);
     8        return $tableau;
     9}
     10
     11function filtre_url_mp_dist($login){
     12        $url = generer_url_public('mp');
     13        return $url;
     14}
     15
     16function filtre_url_mp_auteur_dist($login){
     17        $url = generer_url_public('mp');
     18        $url = parametre_url($url, 'login', $login);
     19        return $url;
     20}
     21
     22function filtre_url_mp_editer_dist($id_forum){
     23        $url = generer_url_public('mp');
     24        $url = parametre_url($url, 'id_forum', $id_forum);
     25        return $url;
     26}
     27
     28function filtre_url_mp_site_dist($id_syndic){
     29        $url = generer_url_public('mp');
     30        $url = parametre_url($url, 'id_syndic', $id_syndic);
     31        return $url;
     32}
     33
     34function filtre_url_mp_tag_dist($tag, $login=''){
     35        $url = generer_url_public('mp');
     36        if ($login)
     37                $url = parametre_url($url, 'login', $login);
     38        $url = parametre_url($url, 'titre_mot', $tag);
     39        return $url;
     40}
     41function filtre_url_mp_supprimer_tag_dist($url, $tag){
     42        $url = parametre_url($url, 'titre_mot', '');
     43        return $rurl;
     44}
    445
    546?>
  • _plugins_/marque-pages/marquepages_options.php

    r14642 r28980  
    11<?php
     2
     3// Sécurité
     4if (!defined("_ECRIRE_INC_VERSION")) return;
     5
     6function marquepage_revision($id_forum, $colonnes){
     7        include_spip('actions/crayons_store');
     8       
     9        // D'abord on enlève les tags des trucs à mettre à jour
     10        $colonnes = array_diff_key($colonnes, array('tags' => 'prout'));
     11       
     12        // Ensuite on met la table à jour s'il faut
     13        if(count($colonnes) > 0)
     14                crayons_update($id_forum, $colonnes, 'forum');
     15}
     16
    217?>
  • _plugins_/marque-pages/marquepages_pipelines.php

    r14813 r28980  
    11<?php
    22
     3// Sécurité
     4if (!defined("_ECRIRE_INC_VERSION")) return;
     5
     6// Insérer le CSS nécessaire au bon affichage des marque-pages
    37function marquepages_insert_head($flux) {
    48        $css = "\n<link rel=\"stylesheet\" href=\""
    59                 . direction_css(find_in_path('css/marquepages.css'))
    610                 . "\" type=\"text/css\" media=\"all\" />\n";
    7                  
    8         $js = "\n<script type=\"text/javascript\" src=\""
    9                  . generer_url_public('marquepages.js')
    10                  . "\"></script>\n";
    11         return $css.$js.$flux;
     11       
     12        return $css.$flux;
     13}
     14
     15// Ajouter le javascript qui permet de demander confirmation
     16function marquepages_jquery_plugins($scripts) {
     17        $scripts[] = "javascript/marquepages.js";
     18        return $scripts;
     19}
     20
     21// Si ya pas de critère "statut" on affiche que les forums normaux
     22function marquepages_pre_boucle($boucle){
     23        if ($boucle->type_requete == 'forums') {
     24                $id_table = $boucle->id_table;
     25                $statut = "$id_table.statut";
     26                if (!isset($boucle->modificateur['criteres']['statut'])){
     27                        $boucle->where[] = array(sql_quote('!='), sql_quote($statut), sql_quote("'mppublic'"));
     28                        $boucle->where[] = array(sql_quote('!='), sql_quote($statut), sql_quote("'mpprive'"));
     29                }
     30        }
     31        if ($boucle->type_requete == 'marquepages') {
     32                $id_table = $boucle->id_table;
     33                $statut = "$id_table.statut";
     34                if (!isset($boucle->modificateur['criteres']['statut'])){
     35                        $boucle->where[] = array(sql_quote('!='), sql_quote($statut), sql_quote("'prive'"));
     36                        $boucle->where[] = array(sql_quote('!='), sql_quote($statut), sql_quote("'publie'"));
     37                }
     38        }
     39        return $boucle;
     40}
     41
     42// Déclarer l'alias MARQUEPAGES pour la boucle FORUMS
     43function marquepages_declarer_tables_interfaces($interfaces){
     44        $interfaces['table_des_tables']['marquepages'] = 'forum';
     45        return $interfaces;
     46}
     47function marquepages_declarer_tables_objets_surnoms($surnoms) {
     48        $surnoms['marquepage'] = 'forums';
     49        return $surnoms;
    1250}
    1351
  • _plugins_/marque-pages/plugin.xml

    r25251 r28980  
    44        </nom>
    55        <auteur>        <!-- Auteur du plugin -->
    6                 RastaPopoulos - Distribu&eacute; sous licence GPL
     6                RastaPopoulos
    77        </auteur>
     8        <licence>
     9                GPL v3
     10        </licence>
    811        <version> <!-- Version du plugin -->
    912                0.2
     
    1518Des outils pour d&eacute;velopper un syst&egrave;me de marque-pages en ligne, du style Scuttle.
    1619
    17 N&eacute;cessite les plugins crayons et tag-machine.
     20N&eacute;cessite le plugin Étiquettes et CFG.
    1821        </description>
    19         <lien></lien> <!-- URI de documentation -->
     22        <lien>http://www.spip-contrib.net/Plugin-Marque-pages</lien> <!-- URI de documentation -->
    2023        <prefix>
    2124                marquepages
     
    2427                images/marquepages.png
    2528        </icon>
    26         <options>
    27                 marquepages_options.php
    28         </options>
    29         <fonctions>
    30                 marquepages_fonctions.php
    31         </fonctions>
     29       
     30        <options>marquepages_options.php</options>
     31        <fonctions>marquepages_fonctions.php</fonctions>
    3232        <pipeline>
    3333                <nom>insert_head</nom>
    3434                <inclure>marquepages_pipelines.php</inclure>
    3535        </pipeline>
     36        <pipeline>
     37                <nom>jquery_plugins</nom>
     38                <inclure>marquepages_pipelines.php</inclure>
     39        </pipeline>
     40        <pipeline>
     41                <nom>declarer_tables_interfaces</nom>
     42                <inclure>marquepages_pipelines.php</inclure>
     43        </pipeline>
     44        <pipeline>
     45                <nom>declarer_tables_objets_surnoms</nom>
     46                <inclure>marquepages_pipelines.php</inclure>
     47        </pipeline>
     48        <pipeline>
     49                <nom>pre_boucle</nom>
     50                <inclure>marquepages_pipelines.php</inclure>
     51        </pipeline>
     52        <pipeline>
     53                <nom>autoriser</nom>
     54                <inclure>inc/marquepages_autoriser.php</inclure>
     55        </pipeline>
    3656       
    37         <necessite id="SPIP" version="[1.9.0;]" />
    38         <necessite id='etiquettes' version='[0.2;]' />
     57        <necessite id="SPIP" version="[2.0.0;]" />
     58        <necessite id='cfg' version='[1.10;]' />
     59        <necessite id='etiquettes' version='[0.6.5;]' />
     60        <necessite id='nuage' version='[1.4;]' />
     61        <utilise id='crayons' />
    3962</plugin>
  • _plugins_/marque-pages/vues/marquepage.html

    r15297 r28980  
    88
    99[(#REM) on ajoute les mots-clés]
    10 [(#ENV*{tags}|ajouter_etiquettes{#ENV{id_forum},tags,forum,id_forum,true})]
     10[(#ENV*{tags}|ajouter_etiquettes{#ENV{id_marquepage},tags,forum,id_forum,true})]
    1111
    12 <INCLURE{fond=fonds/marquepages}{self=#ENV{self}}{id_forum#ENV{id_forum}}>
     12<BOUCLE_marquepage(MARQUEPAGES){id_forum=#ENV{id_marquepage}}>
     13<dl class="xfolkentry">
     14        <dt>
     15                <a href="#URL_SITE" class="taggedlink" rel="nofollow">#TITRE</a>
     16        </dt>
     17        <dd class="actions">
     18                [(#SESSION{id_auteur}|oui)
     19                <ul>
     20                        [(#SESSION{id_auteur}|!={#ID_AUTEUR}|oui)
     21                                <li class="copier">
     22                                        <a title="<:marquepages:copier:>" href="[(#URL_PAGE{#ENV{ajout,marquepages_ajouter}}|parametre_url{id_rubrique,#ENV{id_rubrique,#CONFIG{marquepages/rubrique}}}|parametre_url{mp_url,#URL_SITE}|parametre_url{mp_titre,#TITRE}|parametre_url{redirect,#ENV{self}})]">
     23                                                <span><:marquepages:copier:></span>
     24                                        </a>
     25                                </li>
     26                        ]
     27                        [(#AUTORISER{supprimer, marquepage, #ID_FORUM}|oui)
     28                                <li class="supprimer">
     29                                        <a title="<:marquepages:supprimer:>" class="confirmer" href="#URL_ACTION_AUTEUR{supprimer_marquepage,#ID_FORUM,#ENV{self}}">
     30                                                <span><:marquepages:supprimer:></span>
     31                                        </a>
     32                                </li>
     33                        ]
     34                </ul>
     35                ]
     36        </dd>
     37        [<dd class="description">
     38                (#TEXTE*)
     39        </dd>]
     40        <dd class="meta">
     41                [<:marquepages:poste_le:> (#DATE|affdate{j-m-Y}), ]
     42               
     43                <B_auteur>
     44                        <:par_auteur:>
     45                <BOUCLE_auteur(AUTEURS){tous}{id_auteur}>
     46                        #SET{login,#LOGIN}
     47                        <a href="[(#LOGIN|url_mp_auteur)]">
     48                                [(#SESSION{id_auteur}|=={#ID_AUTEUR}|?{<:marquepages:vous:>,#NOM})]
     49                        </a>
     50                        <BOUCLE_autres(MARQUEPAGES){id_syndic}{exclus}> </BOUCLE_autres>
     51                                <:marquepages:et:> <a href="[(#ID_SYNDIC|url_mp_site)]">#TOTAL_BOUCLE <:marquepages:autres:></a>
     52                        </B_autres>
     53                </BOUCLE_auteur>
     54               
     55                <B_tags>
     56                        <br /><:marquepages:avec_etiquettes:> :
     57                <BOUCLE_tags(MOTS){type=tags}{id_forum}{", "}{par titre}>
     58                        <a rel="tag" href="[(#TITRE|url_mp_tag{#GET{login}})]">#TITRE</a>
     59                </BOUCLE_tags>
     60        </dd>
     61</dl>
     62</BOUCLE_marquepage>
Note: See TracChangeset for help on using the changeset viewer.