Newsgroup: it.comp.software.newsreader
Titolo: [Dialog] Segnalazione "Followup-To"

Sarebbe carino che impostando un "Followup-To" (o un'altra di quelle
voci), Dialog lo segnalasse automaticamente scrivendo un avviso alla
fine del messaggio, prima della firma. Credete si possa fare?
-- 
Saluti,
GIUSEPPE C. ~ news:it-alt.scienze.biologia.botanica
Per rispondere in privato togli "vulgaris_L." dall'indirizzo.

 fine del messaggio, prima della firma. Credete si possa fare?
Puoi impostare Dialog in modo che nella barra gricia sopra il pannello dei
corpi appaia "Followup-To:xxx" se viene impostato. In realta' non ho capito
se intendi riconoscere "a occhio" i post in cui e' impostato un F/up o
altro...
-- 
    *Felpone §Coven§ (con Pompa di Calore)*
   «O risplendente Sole, cosa mai saresti tu,
se non ci fossi io, quaggiu', su cui risplendere?»

 fine del messaggio, prima della firma. Credete si possa fare?
Su Wiki c'è uno script che lo fa (anche per il X-Post):
http://www.40tude.com/dialog/wiki/index.php/ScriptFup2Warning
-- 
Maria Luisa C - 16/10/2004 21.41.41

 fine del messaggio, prima della firma. Credete si possa fare?
Uno script che fa questo è pubblicato sul wiki di Dialog, accessibile
anche da Aiuto/ ... 40tude Dialog Wiki (ho Dialog in inglese ora, non
ricordo la voce esatta in italiano), poi cerca nel sito.
-- 
daRkSidE, 16.10.2004 21:08:24
Foobar: Cat Stevens - Into White

 altro...
Se ho capito bene vuole che quando imposta un Follow-up Dialog scriva in
fondo al messaggio che ciň č stato fatto, in modo da rendere piů visibile
la cosa.
Personalmente in generale lo trovo uno spreco di banda, ma mi pare che
esistano script in grado di farlo sul wiki.
-- 
Fact of life #15: Heads bleed, walls don't.

 
http://www.40tude.com/dialog/wiki/index.php/ScriptFup2Warning
Eccolo, grazie tante. ;-)


 esistano script in grado di farlo sul wiki.
Il fatto è che non tutti i newsreader notificano il followup in un campo
apposito.


 
http://www.40tude.com/dialog/wiki/index.php/ScriptFup2Warning
Vorrei apportare delle modifiche a questo scrip, perň non oso metter
mani.
Noto che il messaggio su cui č impostato il Followup-To č visualizzato
cosě:
_______
Testo del messaggio.
F'up2: 
nome.gruppo.it
--
Firma
_______
Io vorrei modificare lo script in modo che il messaggio sia visualizzato
cosě (e questo vale anche per l'xpost):
_______
Testo del messaggio.
Followup-To: news:
nome.gruppo.it
--
Firma
_______
In pratica vorrei che:
1. "Followup-To" e "Crosspost-To" siano scritti per esteso;
2. il nome del gruppo sia completo del prefisso "news:";
3. prima della firma vi sia un rigo vuoto.
Come devo modificare lo script?
Grazie degli eventuali suggerimenti.


 Grazie degli eventuali suggerimenti.
Ciao Giuseppe,
Bisogna che ti accontenti, nel senso che il "news:" l'ho aggiunto solo al
"Followup-To", perché nel "Crosspost-To" andrebbe aggiunto davanti ad ogni
possibile gruppo elencato, il cui numero non si sa a priori, e mi
richiederebbe troppo tempo.
Poi, sempre per far presto, ho aggiunto la riga bianca prima della firma, ma
ogni volta che fai un crosspost devi fare anche il followup (come del resto
la netiquette consiglia). In altre parole:
crosspost con followup: sì riga bianca
followup da solo: sì riga bianca
crosspost da solo: no riga bianca
* All'inizio cambia la costante MessageFup2 in:
 const
  MessageFup2  = 'Followup-To: news:';
* Poi usa la funzione "Trova..." dello script editor e cerca il comando:
   Message.Insert(Sigline,MessageFup2+Fup2Group);
 Sostituiscilo con:
   Message.Insert(Sigline,MessageFup2+Fup2Group+#13+#10);
Faccio un Crosspost con it.test e un Followup qui, così vedi come viene.
Crosspost-To: it.comp.software.newsreader,it.test
Followup-To: news:it.comp.software.newsreader
-- 
Maria Luisa C - 17/10/2004 17.34.02

_MLC_, domenica 17/ott/2004:
[...]
Naturalmente mi sono dimenticata di indicarti un altro cambiamento:
Cerca il comando
Fup2Group:=copy(s,13,length(s)-12);
e cambia il 13 in 14.
-- 
Maria Luisa C - 17/10/2004 17.42.10

 Faccio un Crosspost con it.test e un Followup qui, cosě vedi come viene.
Chiaro, ora provo anch'io. :-)
Tante grazie.
X'Posted to: free.binaries.test,it.comp.software.newsreader
Followup-To: news:free.it.comp.software.newsreader


 richiederebbe troppo tempo.
Io glielo faccio fare molto semplicemente così:
|| XPostGroups:='news:'+copy(s,13,length(s)-11);
|| SeparatorXpost   = ', news:'
|| if Pos(',',XPostGroups)>0 then
||   XPostGroups:=StringReplace(XPostGroups, ',',  SeparatorXpost, [rfReplaceAll]);
per il FUP2 è simile, e poi gestisco separatamente un caso particolare:
|| if Pos('news:poster',Fup2Group)>0 then
||    Fup2Group:=StringReplace(Fup2Group, 'news:poster', 'a me (via email)', [rfReplaceAll]);
Non incolla la mia versione perché l'ho fusa con lo script boxquote, che
però non uso quasi mai... prima o poi farò un po' di pulizia, magari poi
aggiungo anche un po' di configurabilità (ad esempio per inserire o meno
la riga bianca). Inoltre ho anche aggiunto la possibilità di allineare i
newsgroup su più righe... faccio un esempio, così è più chiaro :)
Xpost: news:it.comp.software.newsreader,
       news:it-alt.test,
       news:free.it.test
F/up2: news:it.comp.software.newsreader
-- 
Fare Well!    40tude Dialog (2.0.14.1, beta 37): 
http://snurl.com/dialog
G             Free It-Alt Group (it-alt/
free.it
 USG): 
http://www.fiag.it
      ICQ#    News server (gratuito ed anonimo): 
http://www.x-privat.org
  16553733    Estirpa Outlook Express ~ news:it.comp.software.newsreader

 F/up2: news:it.comp.software.newsreader
Perň č un bell'effetto questo, lo voglio pur'io! :-)
-- 
Saluti,
GIUSEPPE C. ~ news:it-alt.scienze.biologia.botanica
Per rispondere in privato togli "vulgarisL." dall'indirizzo.

 Però è un bell'effetto questo, lo voglio pur'io! :-)
Al diavolo la configurabilità, ecco lo script in cui ho fuso insieme due 
script OnBeforeSendingMessage, cioè XPostFup2Information e Boxquote (che 
in ogni caso viene disabilitato lasciando «false» l'apposita costante):
program OnBeforeSendingMessage;
// ** Introduction for XPost/Fup2-Message
// ** change message as you want to
const
    ApplyBoxquote = false;
    MessageXPost = 'Xpost: ';
    MessageFup2  = 'F/up2: ';
    Indent       = '       ';
    SeparatorXp  = ','+#13+#10+Indent+'news:';
    Fup2poster = 'a me (via email)';
    StartLine      = 'bq';
    Separator = '-';
 
    bq1a=',';
    bq1b='-';
    bq1c='.';
    bq2a='|';
    bq2c='|';
    bq3a=''+#39+'';
    bq3b='-';
    bq3c='''';
 
    LineWidthTop    = 2;
    LineWidthBottom = 2;
 
    // If you set "CloseBox = false;" the boxquote will be not closed
    CloseBox = true;
 
    maxint= 
2147483647
;
 
// ** Begin of code   
Procedure XPost_and_FUp2_Information (var Message: TStringlist;
Servername: string; IsEmail: boolean);
var  
  FUP2,  XPost, Header: boolean;    
  i, SigLine: integer;
  s, Fup2Group, XPostGroups: string;
begin      
  if IsEmail=true then exit;   
  FUP2:=false;
  XPost:=false;  
  Header:=true;
  SigLine:=0;        
  for i:=0 to Message.count-1 do   
    begin;  
    s:= message.strings[i];    
    if s='' then header:=false;      
    if header=true then
      begin;
      if Pos('Followup-To:',s)>0 then    
        begin;
        FUP2:=true;
        Fup2Group:='news:'+copy(s,14,length(s)-12);
        if Pos(',',Fup2Group)>0 then
           Fup2Group:=StringReplace(Fup2Group, ',',  SeparatorXp, [rfReplaceAll]);
        if Pos('news:poster',Fup2Group)>0 then
           Fup2Group:=StringReplace(Fup2Group, 'news:poster', Fup2poster, [rfReplaceAll]);
//        Fup2Group:=Fup2Group+#13+#10+'-'+#13+#10;
//      WriteToLog(MessageFup2+Fup2Group,1);
        end; 
      if Pos('Newsgroups:',s)>0 then    
        if Pos(',',s)>0 then
          begin;
          XPost:=true;
          XPostGroups:='news:'+copy(s,13,length(s)-11);
          if Pos(',',XPostGroups)>0 then
             XPostGroups:=StringReplace(XPostGroups, ',',  SeparatorXp, [rfReplaceAll]);
//          XPostGroups:=XPostGroups+#13+#10+'-'+#13+#10;
//        WriteToLog(MessageXPost+XPostGroups,1);
          end;
      end
    else
      if s='-- ' then                  
        SigLine:=i;
//  WriteToLog('Analysierte Zeile: '+s,1);
    end;    
  if FUP2=true then
    if Sigline=0 then     
      Message.Add(MessageFup2+Fup2Group) 
    else    
      Message.Insert(Sigline,MessageFup2+Fup2Group);
  if XPost=true then
    if Sigline=0 then     
      Message.Add(MessageXPost+XPostGroups) 
    else    
      Message.Insert(Sigline,MessageXPost+XPostGroups);  
  if (FUP2=true) or (XPost=true) then
    if Sigline=0 then     
      Message.Add('') 
    else    
      Message.Insert(SigLine,'');
end;
function StringReplaceM(S, OldPattern, NewPattern: string;replaceall,ignorecase:boolean): string;
var
  SearchStr, Patt, NewStr: string;
  Offset: Integer;
begin
  if IgnoreCase then
  begin
    SearchStr := AnsiUpperCase(S);
    Patt := AnsiUpperCase(OldPattern);
  end else
  begin
    SearchStr := S;
    Patt := OldPattern;
  end;
  NewStr := S;
  Result := '';
  while SearchStr <> '' do
  begin
    Offset := AnsiPos(Patt, SearchStr);
    if Offset = 0 then
    begin
      Result := Result + NewStr;
      Break;
    end;
    Result := Result + Copy(NewStr, 1, Offset - 1) + NewPattern;
    NewStr := Copy(NewStr, Offset + Length(OldPattern), MaxInt);
    if not (ReplaceAll) then
    begin
      Result := Result + NewStr;
      Break;
    end;
    SearchStr := Copy(SearchStr, Offset + Length(Patt), MaxInt);
  end;
end;
function RepeatChar(c : char;Count : integer) : string;
var i:integer;
begin
  if count<0 then count:=0;
  SetLength(Result,Count);
  for i:=1 to count do Result[i]:=c;
end;
function CountChars(s : string;c:char) : integer;
var i : integer;
begin
  Result := 0;
  for i := 1 to Length(s) do if s[i]=c then Result:=result+1;
end;
const	s_no_bq=0;
	s_bq_title=1;
	s_bq_content=2;
procedure boxquote(var Message: TStringlist);
var i,j,k:integer;
    state:word;
    bq_startline:integer;
    bq_title:string;
    bq_content:string;
    maxwidth:integer;
    sl:Tstringlist;
begin
state:=s_no_bq;
i:=0;
bq_startline:=-1;
while i<=message.count-1 do
    begin
    case state of
    s_no_bq: begin
    	     if message.strings[i]=StartLine then
    	     	begin
    	     	bq_startline:=i;
    	     	bq_title:='';
    	     	bq_content:='';
    	     	maxwidth:=1;
    	     	state:=s_bq_title;
    	     	end
    	     end;
    s_bq_title: begin
    	     	if message.strings[i]=Separator then state:=s_bq_content
    	     					else bq_title:=trim(bq_title+' '+message.strings[i]);
    		end;
    s_bq_content: begin
    	     	  if message.strings[i]=Separator then
    	     	  	begin
    	     	  	state:=s_no_bq;
    	     	  	if length('['+bq_title+']')>maxwidth then maxwidth:=length('['+bq_title+']');
    	     	  	//delete the raw boxquote
    	     	  	for j:=bq_startline to i do message.delete(bq_startline);
    	     	  	//middle part
    	     	  	bq_content:=stringreplacem(#13#10+bq_content,#13#10,#13#10+bq2a+' ',true,false);
    	     	  	delete(bq_content,1,2);
    	     	  	//first line
    	     	  	if bq_title<>'' then bq_content:=bq1a+RepeatChar(bq1b,LineWidthTop)+' ['+bq_title+'] '+#13#10+bq_content
    	     	  		        else bq_content:=bq1a+RepeatChar(bq1b,LineWidthTop)+#13#10+bq_content;
    	     	  	//last line
    	     	  	bq_content:=bq_content+#13#10+bq3a+RepeatChar(bq3b,LineWidthBottom);
    	     	  	sl:=Tstringlist.create;
    	     	  	try
			sl.text:=bq_content;
    	     	  	//close the box
    	     	  	if CloseBox then
    	     	  	 for j:=0 to sl.count-1 do
    	     	  	    begin
    	     	  	    k:=maxwidth-length(sl.strings[j]);
			    if j=0 then sl.strings[j]:=sl.strings[j]+repeatchar(bq1b,k+3)+bq1c
			    else if j=sl.count-1 then sl.strings[j]:=sl.strings[j]+repeatchar(bq3b,k+3)+bq3c
			    else sl.strings[j]:=sl.strings[j]+repeatchar(' ',k+3)+bq2c;
    	     	  	    end;
    	     	  	message.insert(bq_startline,trim(sl.text));
    	     	  	i:=bq_startline;
    	     	  	finally
    	     	  	sl.free;
    	     	  	end;
    	     	  	end
    	     	  	else
    	     	  	begin
    	     	  	if bq_content='' then bq_content:=message.strings[i]
    	     	  			 else bq_content:=bq_content+#13#10+message.strings[i];
    	     	  	if length(message.strings[i])>maxwidth then maxwidth:=length(message.strings[i]);
    	     	  	end;
                  end;
    end; //case
    i:=i+1;
    end;
end;
function OnBeforeSendingMessage(var message: TStringlist; Servername: string; IsEmail: boolean):boolean;
begin
  XPost_and_FUp2_Information (message, Servername, IsEmail); 
  if (message.count<500) and ApplyBoxquote then boxquote(message);
 
  result := true;
end;
begin
end.
-- 
Fare Well!    40tude Dialog (2.0.14.1, beta 37): 
http://snurl.com/dialog
G             Free It-Alt Group (it-alt/
free.it
 USG): 
http://www.fiag.it
      ICQ#    News server (gratuito ed anonimo): 
http://www.x-privat.org
  16553733    Le FAQ italiane su 40tude Dialog ~ 
http://snurl.com/dlgfaq

 script OnBeforeSendingMessage
Senti ma questo script lo devo sostituire alll'originale
"OnBeforeSendingMessage"? Mi segnala un errore proprio alla prima riga
(program OnBeforeSendingMessage;):
Compilato correttamente
[Warning] OnBeforeSendingMessage.ds(1:1): Calculation always evaluates
to False
Cos'č?
