IGWiki Main Page


Ricerca pagine

Ottobre2017
      1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31      

IGSuiteModifiche a IGWebMail già implementate (Bozza) (Documento scaduto)
  Modifica PaginaStorico paginaProprietàGet PdfVisualizza il documento in formato stampabile.Posso Aiutarti

Modifiche a IGWebMail già implementate in IGSuite


Modifiche a IGWebMail proposte
Indice generale modifiche di Ale

Selezione tag in composizione messaggio

Modifica scaricata il 05/05/2007

Visualizza modifiche apportate in CVS link


Questa modifica permette impostare un solo tag (limitatamente, a quelli già presenti nel database) al momento della composizione di un nuovo messaggio.

Viene preimpostato nel caso di risposta ad un email già taggata (se sono presenti più tag viene preso il primo ritornato dal DB), anche un'email in bozza mantiene l'eventuale tag quando viene riaperta in modifica.

So che il limite di un tag potrebbe essere fastidioso, però la modifica è semplice e potrebbe essere una soluzione in attesa di meglio. È sempre possibile aggiungere altri tag una volta spedito il messaggio.
webmail

E' tutto dettagliato nel documento che ti avevo inviato.

LucaS 07.05.2007 implementato con anche le modifiche sotto riportate...

Miglioria selezione email

Modifica scaricata il 06/05/2007
Le modifiche comprendono anche l'aggiunta alla tabella linguaggio web_mail di compose_tag_help.

Visualizza le modifiche apportate in CVS link

Come da te suggerito ho utilizzo una combo invece di una select per permette di inserire più tag separandoli con spazi.

LucaS 07.05.2007 implementato

Condivisione messaggi

Modifiche scaricate il 06/05/2007
Le modifiche comprendono anche l'aggiunta alla tabella linguaggio web_mail di share_mode.

LucaS 07.05.2007 attenzione! share_mode si trova già in base_lang quindi si puo' omettere il suo inserimento

Visualizza le modifiche apportate in CVS link

Impostazione condivisione in composizione messaggio

Questa modifica permette di impostare la modalità di condivisione di un messaggio mentre lo si sta componendo (tramite una combobox).
E' tutto spiegato nella relativo documento che ti avevo inviato.

LucaS 07.05.2007 implementato

Impostazione condivisione in visualizzazione messaggio

Questa modifica permette di impostare la modalità di condivisione di un messaggio in readmessage() tramite una combo box senza passare da setcontact.
Ne abbiamo discusso l'altra sera in chat e mi sembravi d'accordo.

LucaS 07.05.2007 implementato con Ajax link

Visualizzazione/impostazione stato condivisione messaggi in folder

Questa modifica permette di visualizzare/impostare lo stato di condivisione dei messaggi direttamente da displayheaders().

La visualizzazione dello stato di condivisione avviene tramite icone:

  • lucchetto per email non condivise.
  • gruppo per email totalmente condivise.
  • nessuna icona per email condivise solo per quanto riguarda le intestazioni.


LucaS 07.05.2007 per ora implementato così! ma non mi piace tanto esteticamente l'uso di quelle icone e la loro posizione

L' impostazione dello stato di condivisione avviene tramite le azioni ritornate da _get_action_items() e pertanto permettono di modificare lo stato di condivisione di più messaggi alla volta.

LucaS 07.05.2007 implementato. Anche se forse occorre creare delle nuove voci nel dizionario in modo da creare quell'indentazione che hanno le altre "azioni" di message_action

Visualizzazione subject in visualizzazione thread

Questa proposta di modifica è nuova, non te l'avevo ancora comunicata.

Ho provato a modificare la visualizzazione del thread del messaggio per visualizzare anche il titolo del messaggio.

Trovo che potrebbe essere utile, specie quando un messaggio ha avuto più risposte magari cambiando subject.

Che ne dici?

IG/EmailAbstract.pm


sub get_branch
 {
  my $self = shift;
  my ($msg_id) = @_;

* return $messages{$msg_id}{sender} . ' - '.
         $messages{$msg_id}{issue} . ' '.
         substr( $messages{$msg_id}{timeissue},0,5 )
+        .' - '.
+        $messages{$msg_id}{subject}
       ;
 }

Lucas 03.05.07 Sono stato molto combattuto quando ho scritto questa feature. Il problema come al solito è lo spazio! non ho aggiunto il subject perchè avrebbe occupato troppo spazio. Poi il widget tree_folders non mi permette di gestire i vari messaggi su più righe, senno avremmo risolto. Non sono pertanto convinto di aggiungere il subject per i motivi che ti ho detto a meno che trovi un'altra soluzione. Ricorda che a volte si subject sono molto lunghi!

Ale 03.05.07 Si potrebbe utilizzare una funzione per limitare il subject


sub LimitString
 {
  my $s = shift;
  my $limit = shift;
  $limit = 3 if $limit < 3;
  return length($s) <= $limit 
         ? $s 
         : substr( $s, 0, $limit - 3 ).'...';
 }

In questo modo è possibile utilizzare

LimitString( $messages{$msg_id}{subject}, 30 )


LucaS 07.05.2007 E' una buona idea! ma occorre scrivere LimitString in modo che tronca la frase alla fine di una parola (e non a metà) e aggiunge "..." . Chiaramente se la parola è troppo lunga la "tronca", non so se mi sono spiegato. Trall'altro questa funzione potrebbe essere inserita proprio nel framework perchè utile in moltri altri casi

LucaS 08.05.2007 IMPLEMENTATO Ho aggiunto al framework la funzione TextElide che tronca una stringa proprio come ti dicevo e cioè rispettando le parole. L'ho aggiunta a Utils.pm (dove in genere aggiungo le funzioni secondarie). Ho pure risistemato la visualizzazione dell'albero dei thread.

Bug: Thread messaggi tra utenti IGSuite


LucaS 07.05.2007 ritengo che dal momento che spoti un messaggio (che fa parte di un thread e che ha quindi un threadid) ad un altro utente questo (il messaggio) debba essere "staccato" dal thread, debba quindi perdere il threadid. In questo modo il problema dovrebbe essere risolto a monte. Ho fatto in modo che quando un messaggio viene "consegnato" attraverso messageaction() ad un altro utente, tra i vari update venga anche effettuato un threadid=''

Ale 08.05.2007 no, il problema non si manifesta quando il messaggio viene spostato da un utente all'altro (per quanto trovo giusto eliminare il threadid in questo caso). Il problema succede quando due utenti A e B dello stesso sistema IGSuite si scambiano mail, ovvero A scrive a B e B risponde. Occorre proprio limitare la query di cui si parla qui sotto ai messaggio con owner = 'xx', altrimenti, nel thread visto da A ci sono dei riferimenti che usano l'ID dei messaggi presenti nella posta di B.

LucaS 08.05.2007 OK optiamo per: (1) Limitare la query all'$auth_user all'interno di Email::Abstract e (2) fare in modo che se non si è il proprietario del messaggio non appaia il thread_tree. Faccio le modifiche io cosi' stasera ti prendi tutto il lavoro anche Ajax->setsharemode

Dato che il problema sul thread è successo anche sulla mia installazione ho potuto verificare che il problema è successo per email scambiate internamente a IGSuite (quindi tra utenti dello stesso sistema IGSuite) e che l'id del messaggio presente nel link errato nella vista del thread non è l'id del messaggio ricevuto da me, ma l'id del messaggio corrispondente nella cartella SENT dell'altro utente.

Occorrerebbe che la DbQuery eseguita in Email::Abstract::_find_related filtrasse in base all'owner nel messaggio di partenza (quello che si sta visualizzando in webmail::readmessage).

Elenco delle chiamate fino alla suddetta query:
webmail::readmessage

  my $threads_tree =    $IG::tema ne 'printable_'
                     && IG::ConfigParam('webmail.thread')
                   ? _build_thread( $msg{threadid}, $msg{originalid} )
                   : '';

webmail::_build_thread($threadid, $originalid):

my $abstract = new Email::Abstract ( root_id => $threadid );

Email::Abstract::new( %opt ):

%messages = _find_related( $opt{root_id} );

EmailAbstract.pm:55 sub _find_related

DbQuery("select id, originalid, subject, idsreferences, sender, issue,".
    " timeissue, status ".
    "from email_msgs where threadid='$id' order by issue desc, timeissue desc");


Non mi pare che, durante la costruzione della visualizzazione del thread relativo ad un messaggio altrui (ma completamente condiviso), sia previsto il rispetto delle impostazioni di condivisione dei messaggi.

In pratica, se il thread comprende più messaggi e uno di questi non è condiviso, quest'ultimo non dovrebbe comparire (probabilmente anche i figli di questo messaggio non condiviso, anche se condivisi, non dovrebbero comparire nel thread).
Se un messaggio del thread, poi, non è completamente condiviso, non dovrebbe essere cliccabile.

In alternativa, e forse sarebbe meglio, si potrebbe non visualizzare il thread se non si è proprietari del messaggio visualizzato da readmessage.

In conclusione, a seconda della scelta riguardo all'opportunità di visualizzare o meno il thread di messaggi altrui, occorrerebbe che:

  • Se si vuole visualizzare anche il thread di messaggi altrui occorre che l'informazione sull'owner del messaggio visualizzato sia passato dal webmail::readmessage fino a Email::Abstract::find_related in modo che quest'ultimo possa filtrare i messaggi in base all'owner.
  • Se si sceglie di non visualizzare il thread relativo ai messaggi altrui si può fare in modo che Email::Abstract::find_related filtri l'owner = $auth_user senza necessità di passare informazioni sull'owner del messaggio.

Visualizzazione tag in elenco messaggi

chiusa il 10/05/2007 utilizzando una funzione di raggruppamento che contateni i tag per utilizzare solo funzioni supportate dai tre DB supportati di IGSuite.

vedere le modifiche apportate a IG.pm link
e le modifiche apportata a webmail link



C'era il problema di come contatenare i tag sotto postgre (e sqlite).
Per postgre avevo suggerito la creazione (da parte di mkstruct) di una funzione aggregatrice.

LucaS 07.05.2007 Scusa ma continuo a essere un po titubante verso questa implementazione. Ho sempre cercato di mantenere semplice la gestione della struttura del db in modo da non avere problemi tra i vari RDBMS. Per ora l'unica soluzione pratica che vedo è quella di effettuare una query (per scovare i tags) all'interno del ciclo dei risultati della prima query (per visualizzare l'elenco dei msgs). Ma chiaramente comporta un eccessivo numero di query verso il server.

Postgre

Ale 03/05/2007 Ho provato con successo a creare una funzione aggregatrice sotto postgre.

Il seguente codice definisce (o sostituisce) una funzione e un aggregate che utilizza la prima funzione:

drop AGGREGATE if exists group_concat(text);
CREATE or replace FUNCTION concat (text, text) RETURNS text AS $$
 DECLARE
   t text;
 BEGIN
   IF  character_length($1) > 0 THEN
     t = $1 ||', '|| $2;
   ELSE
     t = $2;
   END IF;
   RETURN t;
 END;
$$ LANGUAGE plpgsql;


CREATE AGGREGATE group_concat (
   sfunc = concat,
   basetype = text,
   stype = text,
   initcond = ''
);

In questo modo è possibile, ad esempio, eseguire la seguente query:

select master.masterid, min(nome), group_concat(tag)
from master
left join slave on slave.masterid = master.masterid
group by master.masterid

Rispetto alla sintassi da utilizzare con MySql l'unica cosa che cambia è che in MySql si utilizzava

group_concat(tag separator ',')

SQLite

Per sqlite ho trovato i seguenti siti che affrontano l'argomento:

Allegati text/plain


LucasAnche questo è sistemato grazie a Content-Disposition:attachment

L'intestazione mime di un allegato di solo testo inviato da IGSuite è:

------=IGSUITE_ATT_11788966013nqhe
Content-Type: text/plain;
	name="prova.txt"
Content-Transfer-Encoding: base64


Quando allego un file ascii con pegasus l'intestazione è la seguente:

--Message-Boundary-11405
Content-type: Application/Octet-stream; name="prova.txt"; type=Text
Content-disposition: attachment; filename="prova.txt"
Content-transfer-encoding: BASE64


Credo manchi

Content-disposition: attachment;

Nome: Modifiche di Ale-IGWebMail-fatte - Revisione: 0 - Autore: Forlani Alessandro (05.05.2007) - Modificata da: Forlani Alessandro (12.05.2007) - Categoria: Wiki - Scadenza: 04.05.2008 - Permessi di visualizzazione: Tutti indistintamente - Permessi di modifica: Condiviso con tutti gli utenti - Copyright © Ortolani Luca All right reserved

Need account? Non hai un account?
Login
Password

Documenti correlati
   

Ultimi documenti modificati
   
getrss