Salvataggio dei messaggi in corso (cache)

Tutorial Salvataggio dei messaggi in corso (cache)

Messaggio Da Niko Mer 23 Apr 2014 - 16:56

Salvataggio dei messaggi in corso


Ciao popolo di Forumattivo,

A che cosa serve?


tempo fa avevamo fornito una risorsa per salvare i messaggi in corso, così che se per sbaglio una pagina veniva chiusa durante la creazione di un nuovo messaggio o di una risposta, il contenuto non veniva perso ma se la pagina veniva riaperta il contenuto veniva salvato Wink
Purtroppo con l'aggiornamento del nuovo editor WYSIWYG questa risorsa non era più funzionante

Oggi sono qui per fornirvi un alternativa, testata e funzionante che vi permetterà di riavere questa funzione sui vostri forum  :bene: 




Il codice javascript

Tutto quello che dovete fare è andare in questa schermata Pannello di amministrazione ► ► Moduli ► HTML & Javascript ► Gestione del codice Javascript

e creare un nuovo codice Javascript :new:

  • Titolo: Salvataggio dei messaggi in corso
  • Dove: in tutte le pagine
  • Codice:
    Codice:
    window.localStorage&&$(function(){$(function(){if($("#text_editor_textarea").length&&typeof $.sceditor!="undefined"){var a=$(document.post.mode).val(),d=$("#text_editor_textarea").sceditor("instance"),e,f,g=function(){localStorage.setItem(a,d.val());f=0},b=JSON.parse(localStorage.getItem("br-data"))||[],c;switch(a){case"editpost":return;case"reply":a+=$(document.post.t).val();break;case"newtopic":a+=$(document.post.f).val()}a=parseInt((my_getcookie("fa_"+location.hostname.replace(/\./g,"_")+"_data")||"0").replace(/.*s:6:"userid";(i:([0-9]+)|s:[0-9]+:"([0-9]+)");.*/,"$2$3"))+a;-1!=(c=$.inArray(a,b))&&b.splice(c,1);if(20<b.length){for(c=b.length-1;0<=c;c--)/^\s*$/.test(localStorage.getItem(b[c])||"")&&(localStorage.removeItem(b[c]),b.splice(c,1));20<b.length&&(localStorage.removeItem(b[0]),b.splice(0,1))}b.push(a);localStorage.setItem("br-data",JSON.stringify(b));$(document.post).submit(function(){localStorage.setItem("br-target",a)});!d.val()&&((e=localStorage.getItem(a))&&d.val(e));d.keyUp(function(){f||(f=setTimeout(g,3E3))})}})});window.localStorage&&(localStorage.getItem("br-target")&&function(){$("meta[http-equiv='refresh'][content]:first").length&&function(){var a=JSON.parse(localStorage.getItem("br-data")),b=localStorage.getItem("br-target"),c;if(-1!=(c=$.inArray(b,a)))a.splice(c,1),localStorage.setItem("br-data",JSON.stringify(a));localStorage.removeItem(b)}();localStorage.removeItem("br-target")}());


Spero che questa risorsa possa aiutare molti amministratori e utenti dei forum Forumattivo per evitare che lunghi post o topic vengano persi per un errore di chiusura Wink

Ricordo che siamo sempre disponibili per chiarimenti e domande nella sezione di supporto :good:




Ultima modifica di Niko il Sab 16 Gen 2021 - 20:17 - modificato 4 volte.
Niko
Niko
Moderatore
Moderatore

Sesso : Maschio
Età : 27
Messaggi : 9425
Località : Provincia di Varese

https://www.fmcodes.net/
Niko è stato ringraziato dall'autore di questo topic.

Tutorial Re: Salvataggio dei messaggi in corso (cache)

Messaggio Da Niko Sab 10 Mag 2014 - 19:04

Aggiornamento: Inserire un avviso se è stato salvato un messaggio


Oggi vi propongo un aggiornamento a questa risorsa Wink

Definizione

In sostanza vi permetterà di visualizzare una casella che vi dirà che è presente un messaggio salvato. In pratica, se nella casella di testo sarà presente anche solo un carattere, questo verrà salvato e il messaggio comparirà

Salvataggio dei messaggi in corso (cache) Act_bottomRicordatevi che è necessario installare la risorsa e in aggiunta (se si desidera) aggiungere questa risorsa come implementazione di quella iniziale


Installazione

Quello che dovete fare è andare verso PDA ► Moduli ► HTML & Javascript ► Gestione del codice Javascript e aggiungere un nuovo codice Javascript su tutte le pagine

Codice:
$(function(){$(function(){

      var saved = 1; 
 
    if($("#text_editor_textarea").length != 0){
          $("input[type='submit'][name='post']").attr("disabled", true).css("opacity", "0.5");     
          $(".sceditor-container").after("<br/><div id='div_minchars_info'></div></div>");
         
          var sceditor = $("#text_editor_textarea").sceditor("instance");                 
          var str = sceditor.val();
          var regex = new RegExp('\\w{' + saved + ',}\\b', 'g');
          var str_arr = str.match(regex);
          var str_len = str_arr == null ? 0 : str_arr.length;
         
          if(str_len >= 1) $("input[type='submit'][name='post']").attr("disabled", false).css("opacity", "1");
         
          sceditor.keyUp(function(e) {
            str = sceditor.val();
            str_arr = str.match(regex);
            str_len = str_arr == null ? 0 : str_arr.length;
            if(str_len >= 1) {
                $("#div_minchars_info").html("<div id=saved>Messaggio salvato</div>");
            }else{
                $("#div_minchars_info").html("<div id=unsaved>Messaggio non salvato</div>");
            }
          });
      }
    })});


Personalizzare l'avviso

Ecco i parametri che possono essere modificati:

Messaggio salvato: questo è il messaggio visualizzato se verranno inseriti dei dati

Messaggio non salvato: questo è il messaggio se la textarea è vuota


Personalizzare lo stile

E' inoltre possibile personalizzare lo stile della casella che contiene il messaggio. Questo è un esempio:

per il messaggio salvato
Codice:
#saved {
background: #ffffff;
border: 1px solid #00a5cd;
border-radius: 2px;
padding: 3px;
}

per il messaggio non salvato
Codice:
#unsaved {
background: #fafafa;
border: 1px solid #CCC;
border-radius: 2px;
padding: 3px;
}



Niko
Niko
Moderatore
Moderatore

Sesso : Maschio
Età : 27
Messaggi : 9425
Località : Provincia di Varese

https://www.fmcodes.net/
Niko è stato ringraziato dall'autore di questo topic.

Visualizza l'argomento precedente Visualizza l'argomento successivo Torna in alto

- Argomenti simili

 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.