[SPIP Zone] [Spip-zone-commit] r29075 - in /_plugins_/marque-pages: ./ css/ fonds/contenu/ fonds/navigation/ inc/ lang/

Le 9 juin 09 à 18:09, vincent@ldd.fr a écrit :

Author: vincent@ldd.fr
Date: Tue Jun 9 18:09:03 2009
New Revision: 29075

Log:
On peut importer tous ses marque-pages dans SPIP depuis un fichier d'export HTML de navigateur (comme Firefox par exemple).

Prochaine étape : importation depuis un export delicious.

Import ponctuel, ou synchro continue ???

Modified:
   _plugins_/marque-pages/css/marquepages_interface.css
   _plugins_/marque-pages/fonds/contenu/marquepages_auteur.html
   _plugins_/marque-pages/fonds/contenu/marquepages_tout.html
   _plugins_/marque-pages/fonds/navigation/marquepages_editer.html
   _plugins_/marque-pages/fonds/navigation/marquepages_site.html
   _plugins_/marque-pages/fonds/navigation/marquepages_tout.html
   _plugins_/marque-pages/inc/marquepages_api.php
   _plugins_/marque-pages/lang/marquepages_en.php
   _plugins_/marque-pages/lang/marquepages_fr.php
   _plugins_/marque-pages/marquepages_fonctions.php
   _plugins_/marque-pages/plugin.xml

Modified: _plugins_/marque-pages/css/marquepages_interface.css

--- _plugins_/marque-pages/css/marquepages_interface.css (original)
+++ _plugins_/marque-pages/css/marquepages_interface.css Tue Jun 9 18:09:03 2009
@@ -58,6 +58,7 @@
#navigation{
  float:right;
  width:17em;
+ padding-top:1.1em;
  font-size:0.9em;
}
#bloc-bas{
@@ -123,7 +124,7 @@
/* Pour la navigation */
#navigation h2{
  position:relative;
- margin-top:0.2em;
+ margin:0.2em 0;
  padding:0.2em 0;
  font-size:1em;
  font-weight:bold;
@@ -177,6 +178,10 @@
  right:4px;
  top:4px;
}
+#navigation .explication{
+ margin:1em 0;
+ text-align:center;
+}

/* Pour le contenu */
#contenu h2{
@@ -220,6 +225,11 @@
  text-decoration:none;
  background:#6C6C6C;
}
+#contenu .pagination{
+ margin:1em;
+ text-align:center;
+ font-size:1.2em;
+}

/* Pour les formulaires */
.formulaire_spip input.text, .formulaire_spip select, .formulaire_spip #password{
@@ -229,10 +239,29 @@
.formulaire_spip input.text:focus, .formulaire_spip select:focus, .formulaire_spip #password:focus{
  border:1px solid #d90fad;
}
+.formulaire_spip input.submit, .formulaire_spip button, .formulaire_spip .boutons input{
+ padding:0.2em 0.5em;
+ font-weight:bold;
+ color:white;
+ background:#d90fad;
+ -moz-border-radius:3px;
+ -webkit-border-radius:3px;
+}
.formulaire_spip .popular_tags span.selected{
  color:white;
  background:#6C6C6C;
}
-.formulaire_marquepage .formulaire_login legend{
+.formulaire_recherche{
+ margin-bottom:1em;
+ text-align:center;
+}
+.formulaire_recherche input.text{
+ padding-left:25px;
+}
+.formulaire_importer_marquepages, .formulaire_importer_marquepages .boutons{
+ margin:0;
+ text-align:center;
+}
+.formulaire_marquepage .formulaire_login legend, .formulaire_recherche label{
  display:none;
}

Modified: _plugins_/marque-pages/fonds/contenu/marquepages_auteur.html

--- _plugins_/marque-pages/fonds/contenu/marquepages_auteur.html (original)
+++ _plugins_/marque-pages/fonds/contenu/marquepages_auteur.html Tue Jun 9 18:09:03 2009
@@ -2,8 +2,8 @@
<BOUCLE_auteur(AUTEURS){login}>
<h2>[(#SESSION{id_auteur}|=={#ID_AUTEUR}|?{<:marquepages:mes_marquepages:>,<:marquepages:titre_marquepages_de{auteur=#NOM}:>})]</h2>

-<B_etiquettes>
<ul class="etiquettes">
+<B_etiquettes>
  <li><:marquepages:avec_etiquettes:></li>
<BOUCLE_etiquettes(MOTS){titre=#ENV{titre_mot}}>
  <li>
@@ -11,8 +11,8 @@
    <a href="[(#SELF|url_mp_supprimer_tag{#TITRE})]" title="<:marquepages:enlever:>">-</a>
  </li>
</BOUCLE_etiquettes>
+ <li>&nbsp;</li>
</ul>
-</B_etiquettes>

<INCLURE{fond=fonds/marquepages}{ajax}{self=#SELF}{id_rubrique}{id_auteur}{titre_mot}{pagination=#ENV{pagination}}{tri=#ENV{tri}}{senstri=#ENV{senstri}}>
</BOUCLE_auteur>

Modified: _plugins_/marque-pages/fonds/contenu/marquepages_tout.html

--- _plugins_/marque-pages/fonds/contenu/marquepages_tout.html (original)
+++ _plugins_/marque-pages/fonds/contenu/marquepages_tout.html Tue Jun 9 18:09:03 2009
@@ -1,8 +1,8 @@

<h2><:marquepages:tous_les_marquepages:></h2>

-<B_etiquettes>
<ul class="etiquettes">
+<B_etiquettes>
  <li><:marquepages:avec_etiquettes:></li>
<BOUCLE_etiquettes(MOTS){titre=#ENV{titre_mot}}>
  <li>
@@ -10,7 +10,7 @@
    <a href="[(#SELF|url_mp_supprimer_tag{#TITRE})]" title="<:marquepages:enlever:>">-</a>
  </li>
</BOUCLE_etiquettes>
+ <li>&nbsp;</li>
</ul>
-</B_etiquettes>

<INCLURE{fond=fonds/marquepages}{ajax}{self=#SELF}{id_rubrique}{titre_mot}{pagination=#ENV{pagination}}{tri=#ENV{tri}}{senstri=#ENV{senstri}}>

Modified: _plugins_/marque-pages/fonds/navigation/marquepages_editer.html

--- _plugins_/marque-pages/fonds/navigation/marquepages_editer.html (original)
+++ _plugins_/marque-pages/fonds/navigation/marquepages_editer.html Tue Jun 9 18:09:03 2009
@@ -5,4 +5,10 @@
  href="javascript:x=document;a=encodeURIComponent(x.location.href);t=encodeURIComponent(x.title);d=encodeURIComponent(window.getSelection());r=encodeURIComponent('[(#VAL|url_mp|parametre_url{popup,close})]');open('[(#VAL{nouveau}|url_mp_editer)]&popup=oui&mp_url='+a+'&mp_titre='+t+'&mp_description='+d+'&redirect='+r,'#CONFIG{marquepages/titremp}','modal=1,status=0,scrollbars=1,toolbar=0,resizable=1,width=1000,height=750,left='+(screen.width-1000)/2+',top='+(screen.height-750)/2);void%200;">
  <:marquepages:bookmarklet_lien{site=#CONFIG{marquepages/titremp}}:>
</a>
-<p><:marquepages:bookmarklet_explication{site=#CONFIG{marquepages/titremp}}:></p>
+<p class="explication"><:marquepages:bookmarklet_explication{site=#CONFIG{marquepages/titremp}}:></p>
+
+[(#AUTORISER{creermarquepagedans, rubrique, #ENV{id_rubrique}}|oui)
+<h2><:marquepages:importer:></h2>
+#FORMULAIRE_IMPORTER_MARQUEPAGES
+<p class="explication"><:marquepages:importer_explication:></p>
+]

Modified: _plugins_/marque-pages/fonds/navigation/marquepages_site.html

--- _plugins_/marque-pages/fonds/navigation/marquepages_site.html (original)
+++ _plugins_/marque-pages/fonds/navigation/marquepages_site.html Tue Jun 9 18:09:03 2009
@@ -1,4 +1,5 @@

+#FORMULAIRE_RECHERCHE{#SELF}

<BOUCLE_site(SITES){id_syndic}>

Modified: _plugins_/marque-pages/fonds/navigation/marquepages_tout.html

--- _plugins_/marque-pages/fonds/navigation/marquepages_tout.html (original)
+++ _plugins_/marque-pages/fonds/navigation/marquepages_tout.html Tue Jun 9 18:09:03 2009
@@ -1,4 +1,6 @@

+#FORMULAIRE_RECHERCHE{#SELF}
+
<B_popu>
<div class="pliable">
  <h2><:etiquettes:etiquettes_populaires:></h2>

Modified: _plugins_/marque-pages/inc/marquepages_api.php

--- _plugins_/marque-pages/inc/marquepages_api.php (original)
+++ _plugins_/marque-pages/inc/marquepages_api.php Tue Jun 9 18:09:03 2009
@@ -164,6 +164,12 @@
// Retourne true si c'est bon, false sinon
function marquepages_supprimer($id_forum){
  
+ // On commence par retirer tous les mots-clés
+ sql_delete(
+ 'spip_mots_forum',
+ 'id_forum=' . intval($id_forum)
+ );
+
  $r = sql_fetsel(
    'id_syndic',
    'spip_forum',
@@ -203,4 +209,49 @@
  
}

+// Importer des marque-pages depuis un fichier d'export HTML de navigateur
+function marquepages_importer_netscape($chemin, $id_rubrique){
+ $retours = array();
+
+ $html = file_get_contents($chemin);
+
+ // On cree un tableau de tous les liens
+ preg_match_all('/<a\s+(.*?)\s*\/*>([^<]*)/si', $html, $matches);
+ $liens = $matches[1];
+ $titres = $matches[2];
+
+ foreach($liens as $i => $lien){
+ $attributs = preg_split('/\s+/s', $lien);
+ foreach ($attributs as $attribut) {
+ $attribut = preg_split('/\s*=\s*/s', $attribut, 2);
+ $attrTitre = $attribut[0];
+ $attrValeur = eregi_replace('"', '&quot;', preg_replace('/([\'"]?)(.*)\1/', '$2', $attribut[1]));
+ switch (strtolower($attrTitre)) {
+ case "href":
+ $url = $attrValeur;
+ break;
+ case "add_date":
+ $date = date('Y-m-d H:i:s', $attrValeur);
+ if (strtotime($date) > time())
+ $date = date('Y-m-d H:i:s');
+ break;
+ }
+ }
+ $titre = eregi_replace('"', '&quot;', trim($titre[$i]));
+
+ marquepages_ajouter($id_rubrique, $url, $titre, $description, 'mppublic', '');
+ }
+
+ $retours['message_ok'] = _T('marquepages:erreur_importation_ok');
+
+ return $retours;
+}
+
+// Importer des marque-pages depuis un fichier d'export de delicious
+function marquepages_importer_delicious($chemin, $id_rubrique){
+ $retours = array();
+ $retours['message_ok'] = 'Importation delicious';
+ return $retours;
+}
+
?>

Modified: _plugins_/marque-pages/lang/marquepages_en.php

--- _plugins_/marque-pages/lang/marquepages_en.php (original)
+++ _plugins_/marque-pages/lang/marquepages_en.php Tue Jun 9 18:09:03 2009
@@ -23,6 +23,8 @@
'bookmarklet' => 'Bookmarklet',
'bookmarklet_lien' => 'Add to @site@',
'bookmarklet_explication' => 'Move this bookmarklet in your browser\'s bookmarks and click on it every time you want to add a bookmark on @site@.',
+'importer' => 'Import',
+'importer_explication' => 'Export your bookmarks from where they are saved now (Firefox, IE, delicious, etc), then upload the file here.',

// Pour la configuration
'configuration_titre' => 'Bookmarks configuration',
@@ -30,6 +32,12 @@
'configuration_rubrique' => 'Bookmarks section',
'configuration_rubrique_explication' => 'Choose a section where bookmarks will be saved by default.',

+// Erreurs

[... 64 lines stripped ...]
_______________________________________________
Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit

-Nicolas

--
Nicolas HOIZEY
Blog : http://www.gasteroprod.com/
Photos : http://flic.kr/nicolas-hoizey/

Le 10/06/2009 11:31, Nicolas Hoizey a écrit :

Le 9 juin 09 à 18:09, vincent@ldd.fr a écrit :

Author: vincent@ldd.fr
Date: Tue Jun 9 18:09:03 2009
New Revision: 29075

Log:
On peut importer tous ses marque-pages dans SPIP depuis un fichier
d'export HTML de navigateur (comme Firefox par exemple).

Prochaine étape : importation depuis un export delicious.

Import ponctuel, ou synchro continue ???

Pour l'instant je fais de l'import depuis des fichiers d'export. Donc forcément ponctuel.

Après grâce à l'API delicious, on pourrait imaginer que quand on ajoute un marque-page dans son SPIP, ça l'ajoute à son compte delicious en même temps, et que le cron de SPIP aille vérifier régulièrement pour synchroniser dans l'autre sens aussi. Mais c'est une fonctionnalité un peu beaucoup plus complexe qui n'est pas encore à l'ordre du jour. :slight_smile:

Et puis bon, mon but au départ c'est aussi de pouvoir se passer de delicious. :slight_smile:

--
RastaPopoulos

Le 10 juin 09 à 16:21, RastaPopoulos a écrit :

Prochaine étape : importation depuis un export delicious.

Import ponctuel, ou synchro continue ???

Pour l'instant je fais de l'import depuis des fichiers d'export. Donc forcément ponctuel.

OK.

Après grâce à l'API delicious, on pourrait imaginer que quand on ajoute un marque-page dans son SPIP, ça l'ajoute à son compte delicious en même temps, et que le cron de SPIP aille vérifier régulièrement pour synchroniser dans l'autre sens aussi.

Ce serait top !

Mais c'est une fonctionnalité un peu beaucoup plus complexe qui n'est pas encore à l'ordre du jour. :slight_smile:

Plus complexe dans le sens SPIP -> delicious, mais dans l'autre sens, un flux RSS bien parsé doit suffire.

Et puis bon, mon but au départ c'est aussi de pouvoir se passer de delicious. :slight_smile:

OK ! :wink:

-Nicolas

--
Nicolas HOIZEY
Blog : http://www.gasteroprod.com/
Photos : Nicolas Hoizey | Flickr