ERP en LOGICIEL LIBRE dédié aux PME-PMI

           Devenez partenaire Principal ou Majeur de Neogia

Technologie de présentation d'OfbizNeogia (Widget)


Contents

Principe Général

Voici le principe général sur la façon dont les pages sont générées.

La structure générale de chaque entité ( Form, Tree et Menu) est définie dans les fichiers Model et Factory. La mise en forme de la page html est définie dans les fichiers HtmlRenderer. Il récupère via un context le contenu des données et stock dans un buffer le code html correspondant à l'entité. Les Wrappers facilitent l'utilisation des HtmlRenderer. Ce buffer est alors exploité par le ScreenRenderer qui structure la page web finale. L'intéraction entre les différents fichiers suit grossièrement l'organigramme ci dessous ( toutes les intéractions ne sont pas réprésentées).

Image:organigramme.jpg

Forms

les méthodes OFBiz

  • Forms Factory
Récupère et lit le contenu des forms.
  • FormStringRenderer
Interface pour le rendu des champs de formulaire (Field).
  • ModelForm
Créer la structure des forms et en effectue le rendu à l'aide de ModelFormField.
  • ModelFormAction
Assigne les champs des forms et effectue des tests sur les clés.
  • ModelFormField
Permet de récupérer et d'affecter les variables des forms. Certaines variables utiles pour l'objet même ne sont déclarées qu'à l'appel de cet objet, il en va de même pour certaines méthodes (ex also-hidden).Fait appel à HtmlFormRenderer pour obtenir le rendu html des Fields. Utilise par ModelForm pour créer la structure des forms. La même procédure est suivi pour les Trees et les Menus et ne sera donc pas détaillée.

Refactorisation du code

Pourquoi cette tache ?

Détails

Procédure de développement étape 1

  1. Dés qu'un fichier doit être modifié de manière importante, il faut le dupliquer et dans le nouveau supprimer tous les parties de code en commentaire
  2. Compléter le wiki, au niveau de la doc utilisateur chaque fois qu'une fonctionalité est découverte en lisant le code
  3. démarrer le nettoyage et la suppression de tout ce qui n'est pas au bonne endroit (en particulier l'interprétation du context), bien prendre en compte la gestion du cache et si cela apparait y inclure l'héritage et le nom du fichier properties
  4. finaliser le fichier xsd pour single
  5. générer le jar correspondant avec xmlbeans, mettre à jour le build.xml
  6. créer la méthode qui en fonction du context génére l'objet xmlbeans
  7. créer la méthode qui génére le html à partir de l'objet xmlbeans
  8. créer la méthode qui génére du xml à partir de l'objet xmlbeans
  9. trouver comment ajouter dans un widget le renderer à utiliser.

Html

  • HtmlFormRenderer
Implémente l'interface FormStringRenderer. Permet d'effectuer la création de la page en plaçant dans un buffer les balises html des champs du formulaire (Field). Ces méthodes sont utilisé par ModelFormField.
  • HtmlFormWrapper
Permet de faciliter le rendu de HtmlFormRenderer.
  • HtmlMenuRenderer
De la même façon que HtmlFormRenderer, HtmlMenuRenderer créé le menu en faisant appel à ModelMenu.
  • HtmlMenuRendererImage
Créé le code html nécessaire à l'affichage d'une image.
  • HtmlMenuWrapper
Permet de faciliter le rendu et la configuration du menu.
  • HtmlMenuWrapperImage
Permet de faciliter le rendu et la configuration d'une image.
  • HtmlScreenRenderer
Effectue le rendu final de l'écran en récupérant les valeurs via ModelScreenWidget.
  • HtmlTreeRenderer
Effectue le rendu de l'arbre.
  • NsingleHtmlFormWrapper
Etends la class HtmlFormWrapper afin d'ajouter 2, 3 mise à jour de variable Neogia.

Menu

Dans Neogia les menus sont (ou seront ;-) gérer à partir de table de la base de donnée, pour plus de détail voir Spécification des menus paramétrables

  • MenuFactory
Récupère et lit le contenu des menus.
  • MenuStringRenderer
Interface.
  • MenuWrapTransform
Permet à l'utilisateur de modifier le contenu des URLs.
  • ModelMenu
Créé la structure du menu, affecte des valeurs par défaut.
  • ModelMenuAction
Assigne les champs des menus et effectue des tests sur les clés.
  • ModelMenuCondition
Ensemble de méthode effectuant des tests conditions sur certain élément et retournant des booléens.
  • ModelMenuItem
Contient les méthodes affectant et récupérant les variables des items (fonctionnement similaire à HtmlFormField).

Screen

  • HtmlWidget
Passe les ftl en html.
  • IterateSectionWidget
Détermine le nombre de pages et effectue le rendu des boutons next et previous.
  • ModelScreen
Effectue le rendu du texte de l'écran.
  • ModelScreenAction
Assigne les champs des screens et effectue des tests sur les clés.
  • ModelScreenCondition
Ensemble de méthode effectuant des tests conditions sur certain élément et retournant des booléens.
  • ModelScreenWidget
Il fait appel aux différentes méthodes suivant l'objet à afficher. Les données sont prêtes à être utilisées dans HtmlScreenRenderer.
  • ScreenFactory
Renvoie les informations sur un screen.
  • ScreenFopPdfViewHandler
Génère un pdf.
  • ScreenRenderer
Assigne les valeurs qui doivent toujours se trouver dans un screen, il traite aussi les ftls.
  • ScreenStringRenderer
Interface.
  • ScreenWidgetViewHandler
Gère le rendu pour le screen widget.

Tree

  • ModelTree
Créé la structure, assigne des valeurs et les retourne.
  • ModelTreeAction
Assigne les champs des trees et effectue des tests sur les clés.
  • ModelTreeCondition
Ensemble de méthode effectuant des tests conditions sur certain élément et retournant des booléens.
  • TreeFactory
Récupère des informations sur l'arbre.
  • TreeStringRenderer
Interface.

Widget

  • WidgetWorker
Construction d'hyperlinks : stock en buffer l'hyperlink construit.

Les tags :

Tags utilisés dans les forms

"use-details" et "details"

Ce sont des tags utilisé afin de masquer ou d'afficher certain champs d'une forme (simple, liste ou multi).

use-details="true"
details="true"
 listNFacilityD.use-details=true
 listNFacilityD.deleteLink.details=true

Voici une impression d'écran permettant de voir l'utilisation de ce champs : Image:detailsShow.gif

Image:detailsHide.gif

"paginate"

L'utilisation de ce champs permet de masquer ou d'afficher les lients de navigations en haut et bas de liste.

paginate = "true"

La valeur par defaut est true. Lorsque la valeur est a "false" alors aucune pagination n'est utilisée et l'ensemble des données est affiché sur la même page.


"column-size"

L'utilisation de cet attribut permet de spécifier la longueur maximale du texte qui s'affiche et de garder constant la largeur d'une colonne quelque soit le texte de chaque celleule. Si le texte dépasse la longueur indiquée, il est tronqué, et une bulle contenant le texte en entier aparait au survol de la souris.

column-size = "-1"

Cet attribut est disponible pour les balises display, displayEntity et hyperlink. La valeur par defaut est -1 ce qui indique qu'aucune limite de taille du texte n'est spécifiée.

column-size s'exprime en nombre de caractère.


Image:Form_Tag_column-size.png

Zone actionForm ppour les list

There is 2 new fields that you can put into row-action context :

for exemple :

context.put("rowStyle", "background-color:#FFDDDD;");

or

context.put("rowClass", "warningRow");