• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Digitale renovaties - Congres 2008 - V-ICT-OR
 

Digitale renovaties - Congres 2008 - V-ICT-OR

on

  • 728 views

Lithium is looking ahead when using new techologies in our webprojects

Lithium is looking ahead when using new techologies in our webprojects

Statistics

Views

Total Views
728
Views on SlideShare
725
Embed Views
3

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 3

http://www.linkedin.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Digitale renovaties - Congres 2008 - V-ICT-OR Digitale renovaties - Congres 2008 - V-ICT-OR Presentation Transcript

    • Nieuwe technologieën Propel, patForms en Ext Jan Fabry – jan.fabry@lithium.be V-ICT-OR Shopt IT 2008
    • Introductie Ext (Javascript-library) patForms (Formulieren) Propel (DB-toegang)
    • Eigenschappen   Open source software   transparantie, goedkoop, mogelijkheden   Aparte onderdelen, maar werken mooi samen   patForms heeft Propel-ondersteuning (naast andere)   Ext is overal te integreren (servertaal-onafhankelijk, dus ook met PHP (of ASP, Java, Cobol…))   Ext werkt ook samen met Prototype+script.aculo.us, JQuery of YUI
    • Wanneer gebruiken?   Altijd    Nieuwe projecten   Uiteraard analyse van alle mogelijkheden maken   Anders werken voor wie ervaring heeft met PHP, maar zeker doenbaar   Bestaande projecten   Ideaal als je al met bestaande code zit, en een bestaande databank   Die willen we uiteraard behouden   Maar bestaande “fouten” willen we maskeren   Lithium heeft voor dit trio gekozen bij start eGo v3
    • Propel http://propel.phpdb.org
    • Wat is Propel?   Object-Relational Mapping (ORM) framework voor PHP5   Database als objecten   Geen gedoe met connecties, escaping, type-casting, …   Werk met objecten, niet met queries   Gegenereerde klassen die uitbreidbaar zijn voor eigen implementaties   Geen SQL meer   “Criteria”-objecten worden opgebouwd   Volgt complexe business-logica   Maar wel nog mogelijk indien gewenst   Database-onafhankelijk   MySQL, Oracle, PostgreSQL, SQLite, en MS SQL Server   Maskeert DB-specifieke dialecten (LIMIT, AUTO_INCREMENT…)   DB-schema in XML-formaat
    • Voorbeeld INSERT INTO author (first_name, last_name) VALUES ('Jack', 'London'); $author = new Author(); $author->setFirstName(quot;Jackquot;); $author->setLastName(quot;Londonquot;); $author->save(); Voordeel?
    • Voorbeeld (uitgebreid) $method = ', opsturen='.$_REQUEST['FDELIVERY']; if ( ctype_digit( $_REQUEST['FADATE'] ) ) { $method .= ', afhaling_date=quot;'.strftime( '%Y-%m-%d’, $_REQUEST['FADATE'] ) . 'quot;'; } mysql_query (quot;INSERT loket SET doc='$ID', var1='$VAR1', var2='$VAR2', var3='$VAR3', var4='$VAR4', var5='$VAR5', var6='$VAR6', var7='$VAR7', var8='$VAR8', var9='$VAR9', var10='$VAR10', var11='$VAR11', var12='$VAR12', var13='$VAR13', var14='$VAR14', var15='$VAR15', var16='$VAR16', var17='$VAR17', var18='$VAR18', var19='$VAR19', var20='$VAR20', date='$DATUM', name='$FNAME', gebdate='$GEBDATE', tel='$FTEL', organisation='$datadoc->organisation', department='$datadoc- >organisation', user='$datadoc->user', users='$datadoc->users', user_level='$datadoc->user_level', email='$FEMAIL', forms_advanced_submission_id=$FORMS_ADVANCED_SUBMISSION_IDquot;.$method. $rijksregister);
    • Voorbeeld (uitgebreid) $loket = new Loket(); $loket->setDoc( $record->getId() ); $loket->setDate( time() ); foreach ( $standardFields as $field => $value ) { if ( isset( $value ) ) { $loket->setByName( $field, $value ); } } $loket->setFormsAdvancedSubmissionId( $faSid ); $loket->setOrganisation( $record->getOrganisation() ); $loket->setDepartment( $record->getDepartment() ); $loket->setUser( $record->getUser() ); $loket->setUsers( $record->getUsers() ); $loket->setUserLevel( $record->getUserLevel() ); if ( isset( $faDate ) ) { $loket->setOpsturen( 1 ); $loket->setAfhalingDate( $faDate ); } $loket->save();
    • Conversielaag public function getNameNl(){ return html_entity_decode( parent::getNameNl(), ENT_COMPAT, 'UTF-8' ); } public function getUsers(){ return explode( '@', parent::getUsers() ); } public function addToHistory( $message, $eGoUser ) { $history = $this->getHistory(); $history .= '[' . $eGoUser->eGoTitle() . '] ’; $history .= $message; $history .= date( ' (d/m/y - H:i)' ); $history .= quot;n------------------------------nquot;; $this->setHistory( $history ); }
    • Criteria-voorbeeld $curUserLevel = UsersLevelPeer::retrieveByPk( $GLOBALS['eGoUser']->getLevel() )->getLevel(); $ulc = new Criteria(); $ulc->add( UsersLevelPeer::LEVEL, $curUserLevel, Criteria::LESS_THAN ); $uls = UsersLevelPeer::doSelect( $ulc ); $ula = array(); foreach ( $uls as $ul ) { $ula[] = $ul->getId(); } $gridConfig['criteria']->add( ContactsPeer::LEVEL, $ula, Criteria::NOT_IN ); $gridConfig['criteria']->add( ContactsPeer::ID, $GLOBALS['eGoUser']->getId(), Criteria::NOT_EQUAL );
    • patForms http://trac.php-tools.net/patForms
    • Wat is patForms?   Form-abstractie   Form-elementen als objecten   Geen gedoe met escaping, validatie, foutafhandeling…   Werk met objecten, niet met $_POST   Voorgedefinieerde klassen die uitbreidbaar zijn voor eigen implementaties   Definitie herbruikbaar   Geen HTML meer   “Element”-objecten worden opgebouwd   Volgt complexe business-logica   Maar wel nog mogelijk indien gewenst   Output-onafhankelijk   HTML, maar evengoed XML, PDF, …   Gedeelde code voor gedeelde functionaliteit
    • Voorbeeld $elementsDefinition = array( 'username' => array( 'type' => 'String', 'attributes' => array( 'required' => 'yes', 'label' => 'Username', 'description' => 'Enter your username here.', 'maxlength' => '15', 'minlength' => '4', 'title' => 'Username’, ), ), ); $form =& patForms::createForm( $elementsDefinition, array( 'name' => 'myForm' ) ); $renderer =& patForms::createRenderer( quot;Arrayquot; ); $form->setRenderer( $renderer ); $form->setAutoValidate( 'save' ); $elements = $form->renderForm();
    • Elementen tonen (Renderers)   Gewoon in HTML plaatsen   Beetje onhandig, maar het werkt   Nodige code (tags, labels) zit in eenvoudige array   Goed voor integratie in bestaande code   Templating-systeem gebruiken   Code gescheiden van layout   Meer, maar simpele bestanden   Eenvoudig onafhankelijk aan te passen (en door verschillende personen)   Smarty is meest gekend, en ondersteund door patForms
    • Voorbeeld {panelForm title=quot;$formTitlequot; id=quot;formquot; icon=quot;$iconModulequot;} {formRow e=Author} {foreach from=$allLanguages item=lang} {formRow e=quot;Title`$lang`quot; lang=$lang} {/foreach} {formRow e=UserPublish} <div id=quot;uptquot; style=quot;display:nonequot;> {formRow e=UserPublishText} </div> {if isset( $forms.$mainForm.elements.ChiefPublish )} {formRow e=ChiefPublish} {/if} {/panelForm}
    • Voorbeeld
    • Koppeling met Propel   Database-informatie zit in Propel   Namen, datatypes, eventueel relaties   Automatisch formulier aanmaken   Juiste velden voor datatypes (INT, DATE, …)   Eventueel aanpassen voor speciale elementen (afbeeldingen…)   Automatisch formulier opslaan   Geen extra code nodig   patForms converteert naar standaard php-datatypes, Propel kan deze inlezen
    • Voorbeeld $definition = patForms_Definition_Propel::create( $params ); $form = &patForms::createCreator( 'Definition' )->create( $definition ); $form->setValues( array( 'Id' => $ID ) ); $storage = patForms::createStorage( 'Propel' ); $storage->setStorageLocation( $form->attributes['name'].'Peer' ); $form->setStorage( $storage );
    • Ext http://extjs.com
    • Wat is Ext?   Cross-browser Javascript library   Verderzetting (extension) van de Yahoo! UI Library   Sterke UI-widgets   Aanpasbaar en uitbreidbaar   Voorgedefinieerde klassen die uitbreidbaar zijn voor eigen implementaties   Geen geprul meer   Verschillen tussen browsers worden weggewerkt   Ontwikkelen op hoog niveau mogelijk   Maar “gewone” Javascript is natuurlijk nog altijd mogelijk   Goede ondersteuning   “Ext, LLC” is een bedrijf dat betaalde ondersteuning geeft   Grote gemeenschap met vrij te krijgen voorbeelden, uitbreidingen…
    • Voorbeeld var myDiv = document.getElementById('myDiv'); myDiv.className += ' red’; Ext.onReady(function() { var myDiv = Ext.get('myDiv'); myDiv.addClass('red’); }); myDiv.highlight(); myDiv.center(); myDiv.setOpacity(.25); });
    • Koppeling met server-code   Ext is een Javascript-library, en kan dus gekoppeld worden aan eender welke server-side configuratie   Meest gebruikte dataprotocol is JSON   Eenvoudige structuur   Standaard-functies in PHP, maar ook in vele andere talen   Communicatie is standaard over HTTP, dus geen server-requirements (wordt wel eens vergeten bij het kijken naar voorbeelden)   Binnen Lithium: eGo   patForms: Handige user interface voor formulier-elementen   Propel: krachtige configuratie voor overzichtspagina’s   Eenvoudig om standaard overal beveiliging op te plakken
    • Voorbeelden
    • Voorbeelden