:-y

Kriss blog (version 3)

lundi 07 mai 2012 - 18:29

Je pense avoir terminé, dans un premier temps, ce que je voulais ajouter à picoblog.
Dans cette version 3 de kriss blog, il est maintenant possible :
- d'ajouter des articles privés (utile pour l'édition de plusieurs articles en parallèle) ;
- de publier des articles dans le futur (il suffit de fixer la date à laquelle on veut que l'article apparaisse (ne fonctionne pas encore si le cache est activé)) ;
- de modérer les commentaires avec du BBCode (si vous dîtes trop de choses méchantes, je pourrais les modérer);
- de lire les articles plus facilement sur les mobiles (HTML5 et CSS simplifié : avec un joli score à gtmetrix Page speed : 100% et Yslow : 98%) ;
- d'activer l'auto sauvegarde pendant l'édition d'article pour éviter de perdre un article en cours d'édition (je stocke dans le localStorage du navigateur).

J'avais partagé sur les liens publics du hollandais volant, un outil permettant de sauvegarder automatiquement les données de formulaire quand Timo avait parlé du problème de perte d'un article en cours d'édition. Ce lien avait été repris par Sebsauvage. C'est peut-être un détail pour vous, mais cela avait flatté mon égo et je m'étais dit à l'époque qu'il fallait vraiment que je commence à penser à faire moi aussi un blog pour que je puisse partager des choses qui je l'espère seront utiles pour vous.

Au final, je ne sais pas comment Timo a résolu son problème pour blogotext, mais pour mes besoins de sauvegarde, j'ai juste écrit 2 petites fonctions javascript légèrement inspirées de howtocreate. Un petit setInterval de 1 min et si l'utilisateur perd son article, il suffit de charger les données sauvegardées.

(pour mettre un peu de couleur, j'ai utilisé highlight_string de php, mais il s'agit effectivement de javascript... Il faudrait que j'ajoute dans les TODOs la coloration syntaxique ?) :

<?php 
var id="edit_form";
function 
saveForm(){
  var 
document.getElementById(id);
  var as;

  for (var 
i=0fO={};f.elements[i]; i++){
    var 
f.elements[i];
    if (
e.type){
      var 
e.type.toLowerCase();
      if( 
== "text"
        
|| == "textarea"
        
|| == "password"
        
|| == "datetime"
        
|| == "datetime-local"
        
|| == "date"
        
|| == "month"
        
|| == "week"
        
|| == "time"
        
|| == "number"
        
|| == "range"
        
|| == "email"
        
|| == "url" ) {
        
fO[e.name]=e.value;
      } else if(( 
== "radio" || == "checkbox" )
                   && 
e.checked) {
        
fO[e.name]=e.value;
      }
    }
  }
  
localStorage.toform=JSON.stringify(fO);
}

function 
loadForm(){
  if (
typeof(localStorage.toform) != "undefined"
      
&& localStorage.toform !== null) {
    var 
document.getElementById(id);

    for (var 
i=0fI=JSON.parse(localStorage.toform);
           
f.elements[i];
           
i++) {
      var 
f.elements[i];
      if (
e.type) {
        var 
e.type.toLowerCase();
        if( 
== "text"
          
|| == "textarea"
          
|| == "password"
          
|| == "datetime"
          
|| == "datetime-local"
          
|| == "date"
          
|| == "month"
          
|| == "week"
          
|| == "time"
          
|| == "number"
          
|| == "range"
          
|| == "email"
          
|| == "url" ) {
          
e.value fI[e.name];
        } else if(( 
== "radio"
                      
|| == "checkbox" )) {
          if (
fI.hasOwnProperty(e.name)
              && 
e.value==fI[e.name]) {
            
e.checked true;  
          }
        }
      }
    }
  }
}
 
?>


Maintenant que kriss blog est pleinement fonctionnel, je vais pouvoir commencer à vous parler un peu d'autres choses, alors à la prochaine :-)
New comment







           __   ___  __  
|  | |  | /  \ |    /  \ 
|  | |  | \__/ |__  | /| 
|  | \  /   /  |    |/ | 
\__/  \/   /   |___ \__/