Newsgroup: it.comp.software.newsreader
Titolo: [Dialog] Script per mostrare la lista delle risposte arrivate

Li ho finalmente finiti (almeno credo).
Sono solo due: PostShow e OnBeforeSavingMessage.
Se qualcuno è interessato li può trovare con le spiegazioni su:
http://www.fido.altervista.org/Dialog/script.html#ps
(in italiano)
oppure su:
http://www.40tude.com/dialog/wiki/index.php?title=PostShow
(in inglese)
Ciao,
-- 
Maria Luisa C - 24/03/04 21.01.49, here.
Tutorial e FAQ in italiano su Dialog:
http://fido.altervista.org/Dialog/dialog.php
http://www.lillathedog.net/dialog/faq.html

 Li ho finalmente finiti (almeno credo).
onbeforesavingmessage:
Fallimento durante la compilazione
[Error] (26:11): String error
[Error] (26:11): Close round expected
:(

 :(
L'altro lo compila bene, invece :)



E' incredibile: c'è un errore di trasmissione del file perché io qui ce l'ho
corretto come deve essere, ma se faccio l'upload viene sempre fuori mancante
di diverse righe, ho già provato tre volte.
Intanto lo incollo qui, poi riprovo con l'upload:
(attento al wrapping)
program OnBeforeSavingMessage;
//---------------------------- Impostazioni
---------------------------------// 
const
   filePost = 'C:\Programmi\40tude Dialog\Post.txt';
   // mettere il percorso per il file che verrà creato dallo script .
 
   myFQDN = '@
ID-187316.user.uni-berlin.de
';
   // mettere il proprio FQDN unico.
 
   depth = 4;
   // mettere la profondità voluta.
 
//------------------------ Fine delle Impostazioni
----------------------------// 
//(non c'è bisogno di cambiare nient'altro nello script)
function GetReferences(Message: TStringList): string;
var
   i: integer; 
   tempStr:String;
begin
  i:=0;
  result:='';
  while (i<Message.count-1) do
  begin    
   if pos('References: ', Message.Strings[i])>0 then
   begin  
tempStr:=copy(Message.Strings[i],pos('<',Message.Strings[i]),Length(Message.Strings[i])-1);
    i := i+1;
    while (i<Message.count-1) and (pos(': ',Message.Strings[i])=0) do
    begin
     tempStr:=tempStr+Message.Strings[i];
     i := i+1;
    end; //while
    break;
   end; //if
   i:=i+1;
  end; //while
  result:=tempStr;
end; 
 
function isFollowingMine(Message: TStringList): boolean;
var
  s: string;  
begin
  s:=GetReferences(Message);
  if pos(myFQDN, s)>0 then result:=true
  else result:=false;
end;
 
function WhichDepth(Message: TStringList): integer;
var
   i,c,p,thisDepth: integer;
   s,t: string;
   listFQDN: TStringList;  
begin
  thisDepth:=0;
  s:=GetReferences(Message);
  listFQDN:=TStringList.Create();
  try
   while length(s)>0 do 
   begin
    p:=pos ('>', s);
    t:=copy(s,1,p);
    listFQDN.Add(t);
    s:=copy(s,p+2,length(s)-p-1);
   end; //while
   c:=listFQDN.Count;
   i:=c-1;
   while i>=0 do
   begin
    if pos(myFQDN, listFQDN.Strings[i])>0 then
    begin
     thisDepth:=c-i;
     break;
    end; //if
    i:=i-1;
   end; //while
  finally
   listFQDN.free;
  end; //try
  result:=thisDepth;
end;
function GetMsgID(Message: TStringList): string;
var
   i: integer;
begin
  i:=0;
  result:='';
  while i<Message.count-1 do
  begin    
   if pos('Message-ID:', Message.strings[i])>0 then break;
   i:=i+1;
  end; //while 
  result:=Message.strings[i];
end; 
 
function isMine(Message: TStringList): boolean;
var
   mid: string;   
begin
  mid:=GetMsgID(Message);
  if pos(myFQDN, mid)>0 then result:=true
  else result:=false;
end;
function GetMessageFrom(Message: TStringList): string;
var
   i: integer;
begin
  i:=0;
  result:='';
  while i<Message.count-1 do
  begin    
   if pos('From:', Message.strings[i])>0 then break;
   i:=i+1;
  end; //while
  result:=Message.strings[i];
end;
function GetMessageNG(Message: TStringList): string;
var
   i: integer;
   s: string;
begin
  i:=0; 
  result:='';
  while i<Message.count-1 do
  begin    
   if pos('Newsgroups:', Message.strings[i])>0 then break;
   i:=i+1;
  end; //while
  s:=Message.strings[i];
  result:='NG'+copy(s,11,Length(s)-10); 
end;
function GetMessageSubject(Message: TStringList): string;
var
   i: integer;
begin
  i:=0;
  result:='';
  while i<Message.count-1 do
  begin    
   if pos('Subject:', Message.strings[i])>0 then break;
   i:=i+1;
  end; //while
  result:=Message.strings[i]; 
end;
function GetMessageDate(Message: TStringList): string;
var
   i: integer;
begin
  i:=0;
  result:='';
  while i<Message.count-1 do
  begin    
   if pos('Date:', Message.strings[i])>0 then break;
   i:=i+1;
  end; //while
  result:=Message.strings[i]; 
end;
procedure OnBeforeSavingMessage(var Message: TStringlist; Servername:
string; IsEmail: boolean);
var
  inf, ns, cod, sep: string;
  list: TStringList;
  num,d,i: integer;
begin
  if not(isMine(Message) or IsEmail) then  //is a post not sent by me
  begin
   num:=0;
   list := TStringList.Create();
   try
    d:=WhichDepth(Message);
    if (isFollowingMine(Message) and (d<=depth)) then  //is a reply inside
depth
    begin
     sep:=StringOfChar('-', 50);
     if fileexists(filePost) then
     begin
      list.LoadFromFile(filePost);       
      for i:=0 to list.Count-3 do       
       if pos(sep, list.strings[i])<>0 then num:=num+1;
     end;  //found num of existing notes
     ns:=IntToStr(num+1);
     if Length(ns)=1 then cod:='[0'+ns+']' else cod:='['+ns+']';
     inf:=sep+cod+sep+#13+#10+'P=' +IntToStr(d)+'  -  ' +
GetMessageFrom(Message);
     inf:=inf+'  -
'+GetMessageNG(Message)+#13+#10+GetMessageSubject(Message);
     inf:=inf+'  -
'+GetMessageDate(Message)+#13+#10+GetMsgID(Message)+#13+#10;
     list.Add(inf);
     list.SaveToFile(filePost);
    end; //if
   finally
    list.Free;
   end; //try
  end; //if
end;
begin
end.
-- 
Maria Luisa C - 24/03/04 22.00.26, here.




Sě ma io sono proprio scema stasera! Ho capito cos'č successo: ho lasciato
nell'html tutti i segni di < o di > cosě come sono, invece di mettere &lt; e
&gt;
Ora vado a correggere, per fortuna che te ne sei accorto!
-- 
Maria Luisa C - 24/03/04 22.13.56, here.


 L'altro lo compila bene, invece :)
Ecco, ora è a posto anche OnBeforeSavingMessage.
P.S. e OT
(A ripensarci però è strano quello che è successo, perché usando i tag <pre>
non c'è mai stato bisogno di codificare i < e i > .
Anche negli altri script ci sono e non hanno mai dato problemi. Boh?)
-- 
Maria Luisa C - 24/03/04 22.26.18, here.


 Ora vado a correggere, per fortuna che te ne sei accorto!
ora funziona tutto... e lo trovo semplicemente fantastico ^_^
I miei più vivi complimenti ^__^
Ora vado a giocare un po' con le possibili personalizzazioni ^_^
[solo una cosa.. a me non ne ha voluto sapere di creare da solo il file
txt, ho dovuto crearne a mano io uno vuoto... non so se possa dipendere
dal fatto che l'ho "collocato" fuori dalla cartella di Dialog...]

 dal fatto che l'ho "collocato" fuori dalla cartella di Dialog...]
No, il file non devi crearlo tu: lo crea lui quando riceve le risposte!
E lo crea nel percorso che metti, qualunque esso sia (purché esista).
Quando poi sceglierai di cancellare tutto con "Reset", verrà cancellato
anche il file, per essere ricreato di nuovo al ricevimento di nuove
risposte.
Se quando schiacci il pulsante di PostShow non succede niente, vuol dire che
non ci sono risposte nuove (il file non esiste).
-- 
Maria Luisa C - 24/03/04 22.55.27, here.


 E lo crea nel percorso che metti, qualunque esso sia (purché esista).
toglimi una curiosità (scusa la domanda, ma la mia imperizia in materia
di script non mi permette di capirlo da solo #^_^#)...
nello script c'è un qualcosa che esclude le risposte dell'autore
originale? ^_^;

mercoledì 24/mar/2004 _Cammagno_ ha scritto:

Sì, non mi sembrava interessante registrare i propri messaggi.
Tu preferiresti?
-- 
Maria Luisa C - 24/03/04 23.31.05, here.


 Tu preferiresti?
no no, è che allora ho capito perchè non mi creava il file :D
Avevo postato su free.it.test, e mi ero autorisposto, per provare lo
script... solo che la mia autorisposta non valeva, e quindi il file non
veniva creato... 
no, nessun problema, va benissimo così :)
[per la verità, esisterebbe una cosa che lo renderebbe ancora più
fantastico, ma temo che sia chiedere un po' troppo, per cui evito :D]

mercoledì 24/mar/2004 _Cammagno_ ha scritto:

No, mi interessa: però fa presto che poi vado a dormire :)
-- 
Maria Luisa C - 24/03/04 23.39.47, here.


 perņ fa presto che poi vado a dormire :)
buonanotte, allora ^_^

 buonanotte, allora ^_^
Buonanotte!
-- 
Maria Luisa C - 24/03/04 23.48.48, here.


 Ci vorrebbe un RichEdit, che in Dialog non è disponibile.
non importa, va già benissimo così :)

 Sì, non mi sembrava interessante registrare i propri messaggi.
Concordo pienamente, solo una curiosità fine a sé stessa, 
quale controllo fa per riconoscermi che sono io me medesimo? 
guarda il FQDN o il nickname o l'indirizzo oppure???
(cmq ora mi funziona! non avevo messo il percorso giusto del file in uno
dei due script)
bellino bellino, grazie tante!

 bellino bellino, grazie tante!
Grazie anche a te!
-- 
Maria Luisa C - 25/03/04 10.48.23, here.


 Ciao,
Finalmente lo hai Rilasciato ne sono felice merita davvero
-- 
,---- [*Firma*] ---------------------------.
| In questo istante Alien321 sta sentendo  |
| Nulla                                    |
`------------------------------------------´

 Finalmente lo hai Rilasciato ne sono felice merita davvero
Sě, č davvero bello :)
-- 
Nuovo indirizzo nel Reply-to

 Finalmente lo hai Rilasciato ne sono felice merita davvero
Beh, se alla fine sono riuscita a rilasciarlo è solo merito tuo che mi hai
risolto il problema delle References "avviluppate" :)
Senza quello non sarebbe stato affidabile.
-- 
Maria Luisa C - 25/03/04 18.48.47, here.


 Sono solo due: PostShow e OnBeforeSavingMessage.
Complimentissimi :)
-- 
Fare Well!    FIAG 
http://www.fiag.it
 ~ X-Privat 
http://www.x-privat.org
G             40tude Dialog 2.0.10.1it (beta 33) 
http://snurl.com/dialog
Programmi gratuiti, freeware e non... news:it-alt.comp.software.gratuito
BG, SoA, ToB, IWD, NWN, P:T, SW:KotOR... news:it-alt.giochi.crpg.bioware

 Senza quello non sarebbe stato affidabile.
Graze anche per il riferimento sul tuo sito web^^


 Guarda solo il tuo FQDN nel Message-ID.
Come detto, anch'io sono d'accordo che non considerare i post propri sia
decisamente meglio, mi ero solo trovato un po' spiazzato perchè non me
lo aspettavo ^_^;
in effetti, per i pirla come me :D forse ^_^; potresti specificarlo, sul
sito, magari fra le avvertenze... (magari specificando anche che l'
"identificazione" avviene tramite FQDN, giusto perchè uno si regoli)...  



Aggiunto :)
-- 
Maria Luisa C - 25/03/04 21.50.45, here.


 Aggiunto :)
^_^
Ehm... io avrei avuto un'altra idea per "migliorare ulteriormente" lo
script... come sempre, è solo una idea da profano dello scripting, per
cui non ho la minima idea se sia realizzabile o meno... io provo a
dirtela, sperando di non passare per presuntuoso rompiscatole ^_^;;;
Sarebbe molto bello se si potesse (modificandone le "impostazioni", per
esempio come si fa per fissare la profondità) "limitare" lo script ad
una gamma di ng... inserendo i nomi dei ng a cui lo si vuole limitare
(e/o, possibilmente, "sottraendo" i nomi dei ng in cui non lo si
vuole)... insomma, un qualcosa di simile a quanto si fa con le parentesi
quadre in "Punteggio e azioni" di dialog...



E' un'idea :)
Probabilmente per l'utente è più facile inserire i NG che NON vuole
registrati, perché immagino che siano di meno, e perché così di default uno
non mette niente e lo script funziona come adesso registrandoli tutti.
Ad occhio mi sembra facile realizzarlo, però non riesco a immaginare perché
uno non vuole vedere l'elenco delle risposte che ha ricevuto in un NG...
Me lo puoi chiarire? (così sono più motivata nel farlo ;))
Io in passato avevo pensato alla possibilità di inserire i "plonk", cioè se
uno che ho killato mi risponde, non lo voglio vedere registrato dallo
script; ma poi ho pensato che era inutile perché immagino che uno abbia
messo le regole in modo da non scaricare i corpi dei messaggi plonkati.
E lo script registra solo allo scaricamento dei corpi, non degli header. 
-- 
Maria Luisa C - 26/03/04 11.03.59, here.


 E lo script registra solo allo scaricamento dei corpi, non degli header.
Si, immagino che sia così, almeno nella maggioranza dei casi ^_^;

 Me lo puoi chiarire? (così sono più motivata nel farlo ;))
Io, per esempio, ho organizzato i gruppi di Dialog che
seguo in due categorie. Nei Sottoscritti quelli che seguo
"intensamente". Nella categoria Gruppi, che ho creato, quelli che
leggo ogni tanto. Di default Dialog mostra la categoria Sottoscritti,
scarico da quei gruppi e lo scrip mi mostra quelle risposte. Quando
invece mi sposto nella categoria dei Gruppi che seguo saltuariamente,
e li scarico, lo script agisce su quelli. 
Magari, chi non ha diviso i gruppi in questo modo e preferisce usare
solo il Sottoscritti, vuole comunque impostare lo script per mostrare
solo le risposte a certi gruppi [quelli che segue più in "tempo
reale"] e non a tutti [perché gli altri li leggerà con calma quando ha
tempo].
-- 
Nuovo indirizzo nel Reply-To

 lo script... perň... ;)
Ottime ragioni.
Mi metto al lavoro in questo weekend :)
-- 
Maria Luisa C - 26/03/04 13.07.11, here.


 tempo].
Grazie: ora ho abbastanza motivazioni per farlo :)
-- 
Maria Luisa C - 26/03/04 13.10.49, here.


 Mi metto al lavoro in questo weekend :)
/me si sente un po' in colpa ^_^;;

 in un NG... Me lo puoi chiarire? (così sono più motivata nel farlo
Te l'hanno già detto, io ci metto il carico da 11: se implementi questa
nuova feature, di sicuro non potrei fare più a meno del tuo script :P
-- 
Fare Well!    FIAG 
http://www.fiag.it
 ~ X-Privat 
http://www.x-privat.org
G             40tude Dialog 2.0.10.1it (beta 33) 
http://snurl.com/dialog
Mozilla Suite, Firefox, Thunderbird... news:it-alt.comp.software.mozilla

 /me si sente un po' in colpa ^_^;;
Non devi, è già pronto:
http://www.fido.altervista.org/Dialog/script.html#ps
Basta cambiare solo OnBeforeSavingMessage.
Ricopiatelo tutto, salvatelo e ricompilatelo, perché all'interno ci sono
parecchi cambiamenti.
Fatemi sapere come va. Dai test che ho fatto dovrebbe andare bene.
-- 
Maria Luisa C - 27/03/04 10.39.09, here.


 nuova feature, di sicuro non potrei fare più a meno del tuo script :P
Oh, allora adesso ti aspetto al varco!!! :-D
http://www.fido.altervista.org/Dialog/script.html#ps
-- 
Maria Luisa C - 27/03/04 10.45.18, here.


 Non devi, è già pronto:
Favoloso! ^_^

 
http://www.fido.altervista.org/Dialog/script.html#ps
Volo ^__^


 Ci vorrebbe un RichEdit, che in Dialog non č disponibile.
Perň potrebbe essere possibile fare una opportuna indentazione, che
permetterebbe di distinguere i livelli abbastanza facilmente comunque.
:-)
-- 
27.03.2004 19:25:32, daRkSidE

 :-)
Ma non basta guardare P=x ?  :-P
Con le indentazioni la finestra diventerebbe magari troppo larga, o si
dovrebbe usare la barra di scorrimento orizzontale.
-- 
Maria Luisa C - 27/03/04 19.42.33, here.


 Volo ^__^
Per chi lo avesse già scaricato, mi sono accorta che verso la fine di
function isExcludedNG(s: string): boolean;
avevo lasciato un
 
writeln('true');
che mi serviva per il debug e non fa niente di male, però è meglio
cancellarlo.
Sul sito l'ho corretto.
Scusate ^_^
-- 
Maria Luisa C - 27/03/04 20.24.27, here.

 Scusate ^_^
Figurati :)
Se a qualcuno interessa, ho «fuso» l'ottimo script di Malù con RemoveAD
che, in origine, serviva a cancellare le schifezze di Yahoo!, ma il mio
rimuove anche la riga di Communigate Trial dalle mail passate da People
[una delle cose per cui più mi mancava Hamster ^___^].


 dovrebbe usare la barra di scorrimento orizzontale.
Ho un 19" apposta... :-)
-- 
27.03.2004 21:08:13, daRkSidE

 Ho un 19" apposta... :-)
eh, beato te... :)
-- 
Maria Luisa C - 28/03/04 10.12.01, here.