Page 1 of 2

Period in news

Posted: Thu Feb 14, 2008 6:12 pm
by alby
blast2007 wrote: Ho cercato un po' nel forum, ma non mi sembra che questa domanda sia mai stata formulata.

E' possibile visualizzare tutte le news di un periodo specifico?

Ad esempio tutte le news avente data di inizio pubblicazione nel periodo 01/02/2008 - 29/02/2008? Ossia le news di un mese specifico?
No, non mi risulta
Alby

Period in news

Posted: Fri Feb 15, 2008 11:26 am
by blast2007
alby wrote: No, non mi risulta

Se pensi che possa interessare posto la modifica che sono riuscito ad eseguire.

In particolare ho aggiunto due parametri: startperiod e endperiod

es. {news category="blabla" startperiod="01/01/2008" endperiod="31/01/2008"}

Ciao
blast

Period in news

Posted: Fri Feb 15, 2008 4:16 pm
by alby
blast2007 wrote: Se pensi che possa interessare posto la modifica che sono riuscito ad eseguire.

In particolare ho aggiunto due parametri: startperiod e endperiod

es. {news category="blabla" startperiod="01/01/2008" endperiod="31/01/2008"}
Bello  ;)
postalo anche nei tracker patch di News

Alby

Period in news

Posted: Fri Feb 15, 2008 4:31 pm
by blast2007
Ecco le modifiche che ho fatto ai file di CMSMS per la nuova funzionalità. Occorre modificare 3 files.

Primo file: /module/News/action.default.php

dopo le righe

Code: Select all

102    $query1 .= ") AND ";
103    $query2 .= ") AND ";
104  }
aggiungere

Code: Select all

// start mod "params period" added by blast 
if (isset($params["startperiod"]) && isset($params["endperiod"]) )
  {
    $query1 .= "(('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 3, 2), substr($params["startperiod"], 0, 2), substr($params["startperiod"], 6, 4)) ) . "' < " .  "mn.news_date" . ")" . " AND " . "(" . "mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 3, 2), substr($params["endperiod"], 0, 2), substr($params["endperiod"], 6, 4)) ) ."')) AND  ";    
    $query2 .= "((" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 3, 2), substr($params["startperiod"], 0, 2), substr($params["startperiod"], 6, 4)) ) . " < " .   "mn.news_date" . ")" . " AND " . "(" . "mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 3, 2), substr($params["endperiod"], 0, 2),  substr($params["endperiod"], 6, 4)) ) ."')) AND  ";
  }
// end mod "params period" added by blast
Secondo file: /module/News/News.module.php

dopo la riga

Code: Select all

88 		$this->CreateParameter('action','default',$this->Lang('helpaction'));
aggiungere

Code: Select all

		$this->CreateParameter('startperiod','default',$this->Lang('helpstartperiod')); //added by blast
		$this->CreateParameter('endperiod','default',$this->Lang('helpendperiod'));     //added by blast


e dopo la riga

Code: Select all

124 		    $this->SetParameterType('inline',CLEAN_STRING);
aggiungere

Code: Select all

		        $this->SetParameterType('startperiod',CLEAN_STRING); //added by blast
		        $this->SetParameterType('endperiod',CLEAN_STRING); //added by blast
Terzo file: /module/News/lang/en_US.php
dopo la riga

Code: Select all

341 $lang['helpaction'] = 'Override the default action.  Possible values are \'default\' to display the summary view, and \'fesubmit\' to display the frontend form for allowing users to submit news articles on the front end.';
Aggiungere

Code: Select all

$lang['helpstartperiod']='Display only a news period. Start date of period formatted as dd/mm/yyyy';
$lang['helpendperiod']='Display only a news period. End date of period formatted as dd/mm/yyyy';
Bisognerebbe editare anche tutti i files delle lingue aggiungendo le descrizioni dei due tags nelle altre lingue.
Ovviamente il controllo della formattazione potrebbe essere migliorato per altri paesi dove non si usa  il formato 'dd/mm/yyyy'.
Se hai dei suggerimenti possiamo integrarli e poi postare la release finale nei tracker patch (magari se puoi mi aiuti a farlo che non l'ho mai fatto).

Ciao e a presto
blast

Period in news

Posted: Fri Feb 15, 2008 4:51 pm
by alby
Ti ho linkato da un post di oggi che chiedeva una funzionalità di questo genere.

blast2007 wrote: Ovviamente il controllo della formattazione potrebbe essere migliorato per altri paesi dove non si usa  il formato 'dd/mm/yyyy'.
E' un pò pericoloso il formato italiano (dd/mm/YYYY)
Conviene sempre utilizzare il formato ISO: YYYY-MM-DD
così da non aver problemi con le lingue

blast2007 wrote:

Code: Select all

// start mod "params period" added by blast 
if (isset($params["startperiod"]) && isset($params["endperiod"]) )
  {
    $query1 .= "(('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 3, 2), substr($params["startperiod"], 0, 2), substr($params["startperiod"], 6, 4)) ) . "' < " .  "mn.news_date" . ")" . " AND " . "(" . "mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 3, 2), substr($params["endperiod"], 0, 2), substr($params["endperiod"], 6, 4)) ) ."')) AND  ";    
    $query2 .= "((" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 3, 2), substr($params["startperiod"], 0, 2), substr($params["startperiod"], 6, 4)) ) . " < " .   "mn.news_date" . ")" . " AND " . "(" . "mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 3, 2), substr($params["endperiod"], 0, 2),  substr($params["endperiod"], 6, 4)) ) ."')) AND  ";
  }
// end mod "params period" added by blast
Secondo me si potrebbero separare e non obbligatori entrambi:
- solo startperiod: tutte le news > di startperiod
- solo endperiod: tutte le news < di endperiod
- entrambi: le news nell'intervallo


EDIT: da verificare le parentesi

Code: Select all

// start mod "params startperiod" added by blast 
if (isset($params["startperiod"]))
  {
    $query1 .= "('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 3, 2), substr($params["startperiod"], 0, 2), substr($params["startperiod"], 6, 4)) ) . "' < " .  "mn.news_date" . ") AND  ";    
    $query2 .= "('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 3, 2), substr($params["startperiod"], 0, 2), substr($params["startperiod"], 6, 4)) ) . "' < " .   "mn.news_date" . ") AND  ";
  }
// end mod "params startperiod" added by blast

// start mod "params endperiod" added by blast 
if (isset($params["endperiod"]))
  {
    $query1 .= "(mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 3, 2), substr($params["endperiod"], 0, 2), substr($params["endperiod"], 6, 4)) ) ."')) AND  ";    
    $query2 .= "(mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 3, 2), substr($params["endperiod"], 0, 2),  substr($params["endperiod"], 6, 4)) ) ."')) AND  ";
  }
// end mod "params endperiod" added by blast

Alby

Period in news

Posted: Fri Feb 15, 2008 5:12 pm
by blast2007
alby wrote: Ti ho linkato da un post di oggi che chiedeva una funzionalità di questo genere.
Ottimo. Speriamo serva anche ad altri.
alby wrote: Conviene sempre utilizzare il formato ISO: YYYY-MM-DD
....
Secondo me si potrebbero separare e non obbligatori entrambi:
- solo startperiod: tutte le news > di startdate
- solo endperiod: tutte le news < di enddate
- entrambi: le news nell'intervallo
Lunedi sistemo il codice per effettuare le modifiche secondo le tue utili osservazioni. Poi al limite ti scrivo un PM per avere le info riguardo al post nel tracker.

Ciao e buon w/e
blast

Period in news

Posted: Mon Feb 18, 2008 11:09 am
by blast2007
Ecco la versione finale. Le modifiche sono state testate ovviamente.

File: /module/News/action.default.php

Code: Select all

// ** start ** Module News mod "period" added by blast2007
// All ISO Data format yyyy/mm/dd
// You can use only one or two parameters together eg.
// {news startperiod="2008/01/01" endperiod="2008/01/31"}
// or
// {news startperiod="2008/01/01"}
//or
// {news endperiod="2008/01/31"}
//
if (isset($params["startperiod"]) && isset($params["endperiod"]) )
  {
    $query1 .= "(('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 5, 2), substr($params["startperiod"], 8, 2), substr($params["startperiod"], 0, 4)) ) . "' < " .  "mn.news_date" . ")" . " AND " . "(" . "mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 5, 2), substr($params["endperiod"], 8, 2), substr($params["endperiod"], 0, 4)) ) ."')) AND  ";    
    $query2 .= "((" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 5, 2), substr($params["startperiod"], 8, 2), substr($params["startperiod"], 0, 4)) ) . " < " .   "mn.news_date" . ")" . " AND " . "(" . "mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 5, 2), substr($params["endperiod"], 8, 2),  substr($params["endperiod"], 0, 4)) ) ."')) AND  ";
  }
elseif (isset($params["startperiod"]))
  {
    $query1 .= "('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 5, 2), substr($params["startperiod"], 8, 2), substr($params["startperiod"], 0, 4)) ) . "' < " .  "mn.news_date" .") AND  ";    
    $query2 .= "('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 5, 2), substr($params["startperiod"], 8, 2), substr($params["startperiod"], 0, 4)) ) . "' < " .  "mn.news_date" .") AND  ";
  }
elseif (isset($params["endperiod"]))
  {
    $query1 .= "("  .  "mn.news_date"  . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["endperiod"], 5, 2), substr($params["endperiod"], 8, 2), substr($params["endperiod"], 0, 4)) )  ."') AND  ";    
    $query2 .= "("  .  "mn.news_date"  . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["endperiod"], 5, 2), substr($params["endperiod"], 8, 2), substr($params["endperiod"], 0, 4)) )  ."') AND  ";
  }
// ** end ** Module News mod "period" added by blast2007
x Alby:
provo a postare su patch tracker...Se ho problemi posso chiederti aiuto?

Ciao
blast

Re: Period in news

Posted: Mon Feb 18, 2008 11:37 am
by alby
blast2007 wrote: x Alby:
provo a postare su patch tracker...Se ho problemi posso chiederti aiuto?
Ok, io nel frattempo ho aperto un nuovo topic e combinato un pò di casino con lo "split" perdendo il primo post

Alby

Re: Period in news

Posted: Mon Feb 18, 2008 1:28 pm
by blast2007
alby wrote: Ok, io nel frattempo ho aperto un nuovo topic e combinato un pò di casino con lo "split" perdendo il primo post
Alby
Nessun problema per questo.

Invece x i patch tracker:
Bene o male ho capito come postare le diff su SVN.

Non ho ben capito invece come mantenere localmente una release trunk funzionante, (comprensiva di moduli aggiuntivi)
Ossia: tenendo aggiornato con SVN la trunk version, ho in locale i files con tutte le ultime modifiche implementate dai developers fino a quel momento.
A questo punto come faccio, senza alterare i files locali dell'archivio SVN a far "girare" una release locale trunk di CMSMS?

Se uso la stessa directory, una volta eseguito "release-cleanup.sh" perdo tutti i riferimenti SVN, quindi come faccio a testare in locale una modifica appena eseguita?

Sono un po' confuso... ???
Forse si potrebbe scrivere un piccolo howto per i developers, in italiano, poichè anche quelli in inglese sono un po' frammentati.

Ciao

Re: Period in news

Posted: Mon Feb 18, 2008 2:39 pm
by alby
blast2007 wrote: Non ho ben capito invece come mantenere localmente una release trunk funzionante, (comprensiva di moduli aggiuntivi)
Ossia: tenendo aggiornato con SVN la trunk version, ho in locale i files con tutte le ultime modifiche implementate dai developers fino a quel momento.
A questo punto come faccio, senza alterare i files locali dell'archivio SVN a far "girare" una release locale trunk di CMSMS?

Se uso la stessa directory, una volta eseguito "release-cleanup.sh" perdo tutti i riferimenti SVN, quindi come faccio a testare in locale una modifica appena eseguita?

Sono un po' confuso... ???
Forse si potrebbe scrivere un piccolo howto per i developers, in italiano, poichè anche quelli in inglese sono un po' frammentati.
Si può anche fare comunque mon c'è una vera linea guida per una cosa del genere, conta sopratutto il "gusto" personale legato alle modalità operative.

Nel mio caso ho un server (può essere benissimo in locale) in cui ho il trunk (in verità più trunk: 1.2X, 2.0 e l'ultima distribuzione) ed i moduli che mi interessano  ed una cartella a fianco con le modifiche mie personali o che reputo buone per me.
La struttura della cartella deve riflettere quella della distribuzione: se io modifico il file modules/News/action.default.php sarà presente il file con tutte le directory modules/News.

Quando voglio una mia distribuzione completa personalizzata per aggiornamento o per test:
- creo una directory temporanea
- copio il trunk in questa directory
- copio la cartella personalizzata in questa directory (va a sovrascrivere i file)
[- nel mio caso copio anche un'altra directory per il multilang]
- ripulisco il tutto (oltre a release-cleanup.sh io ripulisco di molti linguaggi)
- comprimo in tar.bz2 la directory
- cancello la directory temporanea

In verità non c'è neanche bisogno di tenere il trunk (basta fare il download quando serve) l'importante è la tua cartella personale.
Questa però deve essere continuamente aggiornata quando vengono modificati i file relativi (se no dopo un pò si perde il controllo). Per questo che io mantengo anche il trunk: con l'update si vedono subito quali files sono stati modificati dall'ultima volta e quindi vedo subito se devo aggiornare qualcosa o meno

Alby

Re: Period in news

Posted: Mon Feb 18, 2008 2:44 pm
by alby
blast2007 wrote:
if (isset($params["startperiod"]) && isset($params["endperiod"]) )
  {
    $query1 .= "(('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 5, 2), substr($params["startperiod"], 8, 2), substr($params["startperiod"], 0, 4)) ) . "' < " .  "mn.news_date" . ")" . " AND " . "(" . "mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 5, 2), substr($params["endperiod"], 8, 2), substr($params["endperiod"], 0, 4)) ) ."')) AND  ";   
    $query2 .= "((" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 5, 2), substr($params["startperiod"], 8, 2), substr($params["startperiod"], 0, 4)) ) . " < " .  "mn.news_date" . ")" . " AND " . "(" . "mn.news_date" . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0, substr($params["endperiod"], 5, 2), substr($params["endperiod"], 8, 2),  substr($params["endperiod"], 0, 4)) ) ."')) AND  ";
  }
else
if (isset($params["startperiod"]))
  {
    $query1 .= "('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 5, 2), substr($params["startperiod"], 8, 2), substr($params["startperiod"], 0, 4)) ) . "' < " .  "mn.news_date" .") AND  ";   
    $query2 .= "('" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["startperiod"], 5, 2), substr($params["startperiod"], 8, 2), substr($params["startperiod"], 0, 4)) ) . "' < " .  "mn.news_date" .") AND  ";
  }
elseif (isset($params["endperiod"]))
  {
    $query1 .= "("  .  "mn.news_date"  . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["endperiod"], 5, 2), substr($params["endperiod"], 8, 2), substr($params["endperiod"], 0, 4)) )  ."') AND  ";   
    $query2 .= "("  .  "mn.news_date"  . " < '" . strftime("%Y-%m-%d %T", mktime(0, 0, 0,  substr($params["endperiod"], 5, 2), substr($params["endperiod"], 8, 2), substr($params["endperiod"], 0, 4)) )  ."') AND  ";
  }
// ** end ** Module News mod "period" added by blast2007
Le parti in rosso sono inutili, le query nella prima chiamata sono le stesse della seconda ...
si ripete quindi la condizione di WHERE, tipo: (...) AND (XXX < YYY) AND (XXX < YYY)

Alby

Re: Period in news

Posted: Mon Feb 18, 2008 3:13 pm
by blast2007
alby wrote: Le parti in rosso sono inutili, le query nella prima chiamata sono le stesse della seconda ...
si ripete quindi la condizione di WHERE, tipo: (...) AND (XXX < YYY) AND (XXX < YYY)
Hai ragione, non pensavo all'accodamento... Ho modificato il codice.

Invece per quanto riguarda l'invio dei file patch...si puo' inviare il file patch all'autore via mail o viene inviato dall'SVN? Io dovrei avere un account developer, ma non so se posso contribuire con il mio account ad altri progetti.

Ciao

Re: Period in news

Posted: Fri Mar 28, 2008 5:22 pm
by alby
blast2007 wrote: Invece per quanto riguarda l'invio dei file patch...si puo' inviare il file patch all'autore via mail o viene inviato dall'SVN? Io dovrei avere un account developer, ma non so se posso contribuire con il mio account ad altri progetti.
Avevo capito male, pensavo che avessi postato il patch.
In allegato c'è il diff contro la versione News 2.6.1 e 2.7
Rinominare il file a .zip ed estrarre il file patch

I had misunderstood.
I thought that you had posted the patch files.
Attached there is the diff against the News 2.6.1 and 2.7 versions.
Rename to .zip and uncompress for patch file


Alby

Re: Period in news

Posted: Fri Mar 28, 2008 5:27 pm
by blast2007
Grazie di nuovo

Re: Period in news

Posted: Wed Apr 09, 2008 5:04 pm
by alby
blast2007 wrote: Grazie di nuovo
Blast nel copia/incolla era rimasto un elseif (isset($params["endperiod"])) invece di if (isset($params["endperiod"]))
Ho corretto il diff e verificato (ho variato anche l'help con yyyy/mm/dd) ma c'è da ripostare l'attach nel forge

Alby