Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » SFORM » » SForm et date  
AuteurSForm et date
Pascal
410      

Pascal
  Posté : 26-02-2003 14:33

Bon ça va être long.
J'ai besoin d'un champs date pour l'enregistrer dans la base ou ailleurs.

On rajoute une fonction :
/****************************************************************************** ********/
// ajout un champs date de type hidden
// appel avec add_date(), add_date(nom), add_date("nom","Today") pexemple
// public void
function add_date($name='date', $en='Le') {
$this->form_fields[count($this->form_fields)]=array(
'en'=>$en,
'name'=>$name,
'value'=>strtotime("now"),
'type'=>"date"
);
}

Dans la fonction print_form on rajoute :

case 'date':
$str.="<input class=\"hidden\" type=hidden name='".$this->form_fields[$i]['name']."' value='".$this->form_fields[$i]['value']."'>";
break;

Ca crée un champs hidden avec le timestamp

Dans la fonction make_response on rajoute :

case 'date':
// Charge la valeur de la clef puisqu'on peut indexer sur la date pourquoi pas
if ($this->form_fields[$i]['name']==$this->form_key) {
$this->form_key_value=$GLOBALS[$this->form_fields[$i]['name']];
}
$this->answer[$i].="<DATE>\n";
$this->answer[$i].="<".$this->form_fields[$i]['name']." >".$this->form_fields[$i]['value']."</".$this->form_ fields[$i]['name'].">\n";
$this->answer[$i].="</DATE>";
break;

Ce qui à pour effet d'une part de rajouter une balise <DATE> dans la réponse, et d'autre part d'utiliser cette date comme index pour la base de donnée, index que l'on crée (petit rappel...) avec : add_key(nom)

Enfin dans la fonction aff_response on rajoute :

// Ajout du formatage de la date
case 'date':
$str.="<tr bgcolor=$bg><td>".$this->form_fields[$i]['en'];
$str.="<td>";
$str.="<b>".date("d-m-Y",$GLOBALS[$this->form_fiel ds[$i]['name']])."&nbsp;</b>";
break;

Voilou pour l'instant, reste à modifier 2 3 trucs mais ceux qu'en avait besoin ont deja une base

  Profil  E-mail  www  Citation   
developpeur
24560       
 

developpeur
  Posté : 26-02-2003 17:52

Je modifie SFORM dans la 5.0 (pour l'utiliser dans users.php), alors une fois tes modifs nickel => je les intègre de base dans la classe.

Pense y, comme cela ton travail ne sera pas perdu

  Profil  E-mail  www  Citation   
Pascal
410      

Pascal
  Posté : 27-02-2003 10:31

A priori pour la date y a pas de modifs à rajouter pour que ça marche. Sauf oubli de ma part.

  Profil  E-mail  www  Citation   
developpeur
24560       
 

developpeur
  Posté : 27-02-2003 11:32

on est d'accord que c'est plus un timestamp qu'une date ?

  Profil  E-mail  www  Citation   
Pascal
410      

Pascal
  Posté : 27-02-2003 11:41

Effectivement ça crée un champs caché avec le timestamp au moment où le formulaire est affiché à l'écran.

Si ta question est est-ce un champ où l'on peut saisir une date, pour l'instant non, mais je pourrais regarder ça.

  Profil  E-mail  www  Citation   
developpeur
24560       
 

developpeur
  Posté : 27-02-2003 11:56

je pensais remplacer par et a l'intégration d'un vrai champ date (en reprenant le code de plannification des news par exemple), ce qui permettrais vraimment d'étendre les fonctions de SFORM

  Profil  E-mail  www  Citation   
Pascal
410      

Pascal
  Posté : 27-02-2003 12:10

Je regarde.. que je puisse combiner mes besoins avec :)
Je resume saisie et gestion d'un champ date format dd/mm/yyyy ca ira ?

  Profil  E-mail  www  Citation   
Pascal
410      

Pascal
  Posté : 27-02-2003 15:54

Bon...
Enlevé la fonction add_date, on se sert de add_field :

function add_field($name,$en, $value='', $type='text', $obligation=false, $size='50', $diviseur='5', $ctrl='') {
if ($type=="submit") {$name=$this->submit_value;}
if ($type=="date") {$size=10; $ctrl='date';}

$this->form_fields[count($this->form_fields)]=array(
'name'=>$name,
'type'=>$type,
'en'=>$en,
'value'=>$value,
'size'=>$size,
'diviseur'=>$diviseur,
'obligation'=>$obligation,
'ctrl'=>$ctrl
);
}

Dans print_form rajoute :

case 'date':
$str.="<tr class=\"text\"><td class=\"text\">".$this->form_fields[$i]['en'];
$style = "text";
// Si la date initial est nulle on en crée une à la date du jour
if ($this->form_fields[$i]['value']=="") $this->form_fields[$i]['value']=date("d/m/Y");
// Si key_close, pas la peine de dire que c'est un champs obligatoire
if($this->form_fields[$i]['obligation'] && $this->form_key_status!="close"){
$this->form_check.=" && (f.elements['".$this->form_fields[$i]['name']."'].value!='')" ;
$style = "oblig";
$str.=" <font color=red>*</font><td>";
} else $str.="<td>";

// Charge la valeur et analyse la clef
if ($this->form_fields[$i]['name']==$this->form_key) {
$this->form_key_value=$this->form_fields[$i]['value'];
if ($this->form_key_status=="close") {
$str.="<input type=hidden name='".$this->form_fields[$i]['name']."' value='".$this->form_fields[$i]['value']."'>";
$str.="<b>".$this->form_fields[$i]['value']."</b> ";
} else {
$str.="<input class=$style type=".$this->form_fields[$i]['type']." name='".$this->form_fields[$i]['name']."' value='".$this->form_fields[$i]['value']."' size=".($this->form_fields[$i]['size']+1)." maxlength=".$this->form_fields[$i]['size'].">";
}
} else {
$str.="<input class=$style type=".$this->form_fields[$i]['type']." name='".$this->form_fields[$i]['name']."' value='".$this->form_fields[$i]['value']."' size=".($this->form_fields[$i]['size']+1)." maxlength=".$this->form_fields[$i]['size'].">";
}
break;

Dans make_response :

case 'date':
if ($this->form_fields[$i]['ctrl']!="") {
$this->control($this->form_fields[$i]['name'],$this->form_fields[$i][' en'],$GLOBALS[$this->form_fields[$i]['name']],$this->form_fields[$i]['ctr l']);
}
// Charge la valeur de la clef puisqu'on peut indexer sur la date pourquoi pas
if ($this->form_fields[$i]['name']==$this->form_key) {
$this->form_key_value=$GLOBALS[$this->form_fields[$i]['name']];
}
$this->answer[$i].="<DATE>\n";
$this->answer[$i].="<".$this->form_fields[$i]['name']." >".$GLOBALS[$this->form_fields[$i]['name']]."</".$this- >form_fields[$i]['name'].">\n";
$this->answer[$i].="</DATE>";
break;

Aff_response (pas de changement) :

case 'date':
$str.="<tr bgcolor=$bg><td>".$this->form_fields[$i]['en'];
$str.="<td>";
$str.="<b>".$GLOBALS[$this->form_fields[$i]['name']]."  </b>";
break;

Dans control :

case 'date':
// Date en tableau
$date = explode("/",$valeur);
if (!checkdate($date[1],$date[0],$date[2])) {
$this->error($nom,"Date non valide");
exit ();
}
break;

Je crois que c'est mieux que le premier


[ Message édité par : Pascal : 27-02-2003 15:54 ]

  Profil  E-mail  www  Citation   
developpeur
24560       
 

developpeur
  Posté : 27-02-2003 17:46

voui mais le TimeStamp ? on pourrait avoir les 2

  Profil  E-mail  www  Citation   
Pascal
410      

Pascal
  Posté : 27-02-2003 17:50

C'est vrai que pour moi c'est plus pratique de travailler avec des timestamp dans les champs date de la base entre autre, que de vulgaires dates toutes moches, je jete un oeil.

Mais quand tu dis les deux la j'vois pas.
C'est stockage interne en timestamp affichage en clair


[ Message édité par : Pascal : 27-02-2003 17:57 ]

  Profil  E-mail  www  Citation   
developpeur
24560       
 

developpeur
  Posté : 27-02-2003 18:02

c'est pour : <TIMESTAMP> => qui est automatique et HIDDEN alors que <DATE> serait un champ d'un formulaire.

Le stockage est idem mais ni la représentation XML ni la mécanique du formulaire

Enfin c'est un avis

  Profil  E-mail  www  Citation   
Pascal
410      

Pascal
  Posté : 27-02-2003 18:57

Voila ça roule, je t'envoie sform par email c'est mieux

Une date en timestamp -> champ hidden
nom,intitulé, valeur rien pour date du jour ou timestamp,type stamp
// Date timestamp
$m->add_date("date","","",'stamp');

Une date pour champ de formulaire
nom, intitulé,valeur idem stamp,type date,obli ou nom
La date est tjrs controlee
// Date au format JJ/MM/YYYY type date
$m->add_date("date","Date","",'date',true);

  Profil  E-mail  www  Citation   
developpeur
24560       
 

developpeur
  Posté : 27-02-2003 20:32

bien cooool !

  Profil  E-mail  www  Citation   
  
Sauter à :

Temps : 0.0168 seconde(s)