Period in news

La discussione sul CMS Made Simple in italiano.

Moderator: magallo

alby

Period in news

Post 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
Last edited by alby on Mon Feb 18, 2008 11:33 am, edited 1 time in total.
User avatar
blast2007
Power Poster
Power Poster
Posts: 508
Joined: Wed Aug 01, 2007 5:36 pm

Period in news

Post 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
Last edited by blast2007 on Fri Feb 15, 2008 11:30 am, edited 1 time in total.
alby

Period in news

Post 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
User avatar
blast2007
Power Poster
Power Poster
Posts: 508
Joined: Wed Aug 01, 2007 5:36 pm

Period in news

Post 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
Last edited by blast2007 on Fri Feb 15, 2008 4:38 pm, edited 1 time in total.
alby

Period in news

Post 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
Last edited by alby on Fri Feb 15, 2008 5:15 pm, edited 1 time in total.
User avatar
blast2007
Power Poster
Power Poster
Posts: 508
Joined: Wed Aug 01, 2007 5:36 pm

Period in news

Post 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
Last edited by blast2007 on Fri Feb 15, 2008 5:57 pm, edited 1 time in total.
User avatar
blast2007
Power Poster
Power Poster
Posts: 508
Joined: Wed Aug 01, 2007 5:36 pm

Period in news

Post 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
Last edited by blast2007 on Mon Feb 18, 2008 11:21 am, edited 1 time in total.
alby

Re: Period in news

Post 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
Last edited by alby on Mon Feb 18, 2008 12:42 pm, edited 1 time in total.
User avatar
blast2007
Power Poster
Power Poster
Posts: 508
Joined: Wed Aug 01, 2007 5:36 pm

Re: Period in news

Post 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
alby

Re: Period in news

Post 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
alby

Re: Period in news

Post 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
Last edited by alby on Mon Feb 18, 2008 2:48 pm, edited 1 time in total.
User avatar
blast2007
Power Poster
Power Poster
Posts: 508
Joined: Wed Aug 01, 2007 5:36 pm

Re: Period in news

Post 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
Last edited by blast2007 on Mon Feb 18, 2008 3:22 pm, edited 1 time in total.
alby

Re: Period in news

Post 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
Attachments

[The extension mpg has been deactivated and can no longer be displayed.]

[The extension mpg has been deactivated and can no longer be displayed.]

Last edited by alby on Fri Apr 25, 2008 12:03 pm, edited 1 time in total.
User avatar
blast2007
Power Poster
Power Poster
Posts: 508
Joined: Wed Aug 01, 2007 5:36 pm

Re: Period in news

Post by blast2007 »

Grazie di nuovo
alby

Re: Period in news

Post 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
Post Reply

Return to “Italian - Italiano”