You are on page 1of 117

GUIDE DE DEMARRAGE RAPIDE - DIDACTICIEL

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

TABLE DES MATIERES


A PROPOS DE LA DOCUMENTATION DE CODECHARGE STUDIO.......................................................................................... 4 PREAMBULE...................................................................................................................................................................................... 5 INTRODUCTION ................................................................................................................................................................................ 6 CREATION DUN GESTIONNAIRE DE TACHES AVEC LE GENERATEUR DAPPLICATION .................................................. 7 Etape 1 ........................................................................................................................................................................................... 7 Crer un Nouveau Projet ......................................................................................................................................................... 7 Lancer le Gnrateur dApplication ......................................................................................................................................... 7 Spcifier les Proprits du Projet ............................................................................................................................................ 8 Slectionner la Connexion Base de Donnes ........................................................................................................................ 9 Configurer le Gnrateur dApplication ................................................................................................................................. 10 Mise en place de la Scurit du Site et de lAuthentification ............................................................................................... 10 Slectionner les Tables de Bases de Donnes .................................................................................................................... 11 Configurer les Pages du Site ................................................................................................................................................. 11 Spcifier la Mise en Page du Site et les Menus ................................................................................................................... 12 Slectionner le Thme du Site............................................................................................................................................... 13 Passer en Revue les Pages et Crer le Site......................................................................................................................... 13 Etape 2 ......................................................................................................................................................................................... 14 Personnalisation de la Page Liste de Tches....................................................................................................................... 14 Ouvrir la Page Liste de Tches ............................................................................................................................................. 15 Tester la Page......................................................................................................................................................................... 15 Relations Implicites................................................................................................................................................................. 16 Supprimer des Colonnes Inutiles........................................................................................................................................... 18 Changer la Lgende dun Champ.......................................................................................................................................... 18 Synchroniser le code HTML et le Code de Programmation................................................................................................. 19 Visualiser et Tester la Live Page ........................................................................................................................................... 19 Etape 3 ......................................................................................................................................................................................... 20 Ajouter une ListBox Recherche pour les Noms de Projet .................................................................................................... 20 Ajouter une ListBox Recherche - Insrer une ListBox Contrle .......................................................................................... 21 Ajouter une ListBox Recherche - Paramtrer les Proprits de la ListBox......................................................................... 21 Ajouter une ListBox Recherche - Dplacer une Ligne de la Table...................................................................................... 23 Filtrer les Enregistrements de la Grille - Slectionner la Proprit "Where" ....................................................................... 23 Filtrer les Enregistrements de la Grille - Ajouter un Paramtre Recherche........................................................................ 24 Filtrer les Enregistrements de la Grille - Grouper les Paramtres "Where" ........................................................................ 25 Filtrer les Enregistrements de la Grille - Paramtrer lOprateur AND................................................................................ 25 Visualiser la Page Fonctionnelle............................................................................................................................................ 26 Connexion au Systme .......................................................................................................................................................... 27 Accder la Page Maintenance dEnregistrement .............................................................................................................. 27 Etape 4 ......................................................................................................................................................................................... 28 Changer des Etiquettes de Champ ....................................................................................................................................... 28 Crer des Champs Etiquette.................................................................................................................................................. 29 Rorganiser les Champs Etiquette........................................................................................................................................ 30 Prvisualiser la Page Maintenance de Tches..................................................................................................................... 31 Extension des Fonctionnalits de lApplication avec la Programmation dEvnements ......................................................... 33 ASP et VBScript...................................................................................................................................................................... 33 Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (ASP et VBScript)................. 33 Etape 1 ............................................................................................................................................................................... 33 Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte ............................................................. 33 Contrler par Programmation la Valeur Champ ......................................................................................................... 34 Prvisualiser la Page Liste de Tches ........................................................................................................................ 35 Etape 2 ............................................................................................................................................................................... 35 Modifier un Champ Etiquette sur la Page Maintenance de Tches .......................................................................... 36 Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette ............................................................. 36 Etape 3 ............................................................................................................................................................................... 38 Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches ......................... 38 Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement ................................................................ 39 Tester les Champs Etiquette et Cach........................................................................................................................ 39 Etape 4 ............................................................................................................................................................................... 40
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

-1-

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Programmation du Formulaire Enregistrement........................................................................................................... 40 Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails ............................................................... 40 Utiliser lEvnement After Update pour Envoyer des Emails ..................................................................................... 43 Test de lEnvoi dEmail ................................................................................................................................................. 43 Etape 5 ............................................................................................................................................................................... 44 Implmenter la Scurit dEnregistrement dans lEvnement After Initialize............................................................ 44 C# et VB.Net ........................................................................................................................................................................... 45 Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (C# et VB.Net) ...................... 45 Etape 1 ............................................................................................................................................................................... 46 Utiliser lEvnement Before Show Row pour Changer la couleur du Texte .............................................................. 46 Contrler par Programmation la Valeur Champ ......................................................................................................... 46 Prvisualiser la Page Liste de Tches ........................................................................................................................ 47 Etape 2 ............................................................................................................................................................................... 48 Modifier un Champ Etiquette sur la Page Maintenance de Tches .......................................................................... 48 Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette ............................................................. 49 Etape 3 ............................................................................................................................................................................... 52 Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches ......................... 52 Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement ................................................................ 52 Tester les Champs Etiquette et Cach........................................................................................................................ 53 Etape 4 ............................................................................................................................................................................... 54 Programmation du Formulaire Enregistrement........................................................................................................... 54 Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails............................................................... 54 Utiliser lEvnement After Update pour Envoyer des Emails ..................................................................................... 57 Test de lEnvoi dEmail ................................................................................................................................................. 59 Etape 5 ............................................................................................................................................................................... 60 Implmenter la Scurit dEnregistrement dans lEvnement After Initialize............................................................ 60 JSP .......................................................................................................................................................................................... 63 Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (JSP) ..................................... 63 Etape 1 ............................................................................................................................................................................... 63 Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte ............................................................. 63 Contrler par Programmation la Valeur Champ ......................................................................................................... 64 Prvisualiser la Page Liste de Tches ........................................................................................................................ 65 Etape 2 ............................................................................................................................................................................... 66 Modifier un Champ Etiquette sur la Page Maintenance de Tches .......................................................................... 66 Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette ............................................................. 66 Etape 3 ............................................................................................................................................................................... 69 Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches ......................... 69 Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement ................................................................ 70 Tester les Champs Etiquette et Cach........................................................................................................................ 70 Etape 4 ............................................................................................................................................................................... 71 Programmation du Formulaire Enregistrement........................................................................................................... 71 Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails ............................................................... 71 Utiliser lEvnement After Update pour Envoyer des Emails ..................................................................................... 73 Test de lEnvoi dEmail ................................................................................................................................................. 74 Etape 5 ............................................................................................................................................................................... 74 Implmenter la Scurit dEnregistrement dans lEvnement After Initialize............................................................ 74 PHP ......................................................................................................................................................................................... 76 Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (PHP) .................................... 76 Etape 1 ............................................................................................................................................................................... 77 Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte ............................................................. 77 Contrler par Programmation la Valeur Champ ......................................................................................................... 77 Prvisualiser la Page Liste de Tches ........................................................................................................................ 78 Etape 2 ............................................................................................................................................................................... 79 Modifier un Champ Etiquette sur la Page Maintenance de Tches .......................................................................... 79 Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette ............................................................. 80 Etape 3 ............................................................................................................................................................................... 82 Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches ......................... 82 Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement ................................................................ 83 Tester les Champs Etiquette et Cach........................................................................................................................ 84 Etape 4 ............................................................................................................................................................................... 84 Programmation du Formulaire Enregistrement........................................................................................................... 84 Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails............................................................... 85 Utiliser lEvnement After Update pour Envoyer des Emails ..................................................................................... 87 Test de lEnvoi dEmail ................................................................................................................................................. 88 Etape 5 ............................................................................................................................................................................... 89 Implmenter la Scurit dEnregistrement dans lEvnement After Initialize............................................................ 89
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

-2-

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) ColdFusion .............................................................................................................................................................................. 90 Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (ColdFusion) ......................... 90 Etape 1 ............................................................................................................................................................................... 91 Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte ............................................................. 91 Contrler par Programmation la Valeur Champ ......................................................................................................... 91 Prvisualiser la Page Liste de Tches ........................................................................................................................ 92 Etape 2 ............................................................................................................................................................................... 93 Modifier un Champ Etiquette sur la Page Maintenance de Tches .......................................................................... 93 Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette ............................................................. 94 Etape 3 ............................................................................................................................................................................... 96 Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches ......................... 96 Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement ................................................................ 97 Tester les Champs Etiquette et Cach........................................................................................................................ 97 Etape 4 ............................................................................................................................................................................... 98 Programmation du Formulaire Enregistrement........................................................................................................... 98 Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails............................................................... 98 Utiliser lEvnement After Update pour Envoyer des Emails ...................................................................................100 Test de lEnvoi dEmail ...............................................................................................................................................101 Etape 5 ............................................................................................................................................................................. 101 Implmenter la Scurit dEnregistrement dans lEvnement After Initialize..........................................................101 Perl ........................................................................................................................................................................................ 103 Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (Perl) ................................... 103 Etape 1 ............................................................................................................................................................................. 103 Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte ........................................................... 103 Contrler par Programmation la Valeur Champ ....................................................................................................... 104 Prvisualiser la Page Liste de Tches ......................................................................................................................105 Etape 2 ............................................................................................................................................................................. 106 Modifier un Champ Etiquette sur la Page Maintenance de Tches ........................................................................ 106 Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette ........................................................... 106 Etape 3 ............................................................................................................................................................................. 109 Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches ....................... 109 Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement ..............................................................109 Tester les Champs Etiquette et Cach......................................................................................................................110 Etape 4 ............................................................................................................................................................................. 111 Programmation du Formulaire Enregistrement......................................................................................................... 111 Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails............................................................. 111 Utiliser lEvnement After Update pour Envoyer des Emails ...................................................................................113 Test de lEnvoi dEmail ...............................................................................................................................................114 Etape 5 ............................................................................................................................................................................. 114 Implmenter la Scurit dEnregistrement dans lEvnement After Initialize..........................................................114 Conclusion ................................................................................................................................................................................. 116

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

-3-

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

A PROPOS DE LA DOCUMENTATION DE CODECHARGE STUDIO


La documentation du logiciel CodeCharge Studio est dcompose en quatre volumes : Volume n1 : Le Guide Utilisateur est une introduction CodeCharge Studio et il explique comment utiliser les nombreuses fonctionnalits disponibles dans lIDE (Environnement de Dveloppement Intgr) de CodeCharge Studio. Si vous dcouvrez CodeCharge Studio, nous vous recommandons avant toute chose de lire le Guide Utilisateur afin dacqurir une connaissance fonctionnelle de lenvironnement de CodeCharge Studio. Volume n2 : Le Guide de Dmarrage Rapide (Didacticiel) contient des instructions dtailles, tape par tape, destines guider les nouveaux utilisateurs pour raliser diffrents types de fonctions au sein de CodeCharge Studio. Ce guide propose une approche pratique pour se former au logiciel par la construction dexemples dapplications Web de A Z. Volume n3 : Le Guide de Rfrence des Composants contient des informations sur la programmation des diffrents composants qui sont utiliss pour crer des applications Web utilisant CodeCharge Studio. Cela inclut les diffrents Contrles, Mthodes, Proprits, Evnements et Actions. Une fois que vous aurez acquis une bonne connaissance de lIDE de CodeCharge Studio (Cf. Guide Utilisateur), nous vous recommandons de lire le Guide de Rfrence. Ce guide sert galement de rfrence lors de lcriture de code vnementiel ou de code personnalis. Volume n4 : La Section Exemples et Techniques contient des astuces et des exemples de programmes pour raliser des tches communes et varies utilisant du code vnementiel ou du code personnalis. Cette section montre des cas concrets pour appliquer certaines des constructions qui sont dtailles dans le Guide de Rfrence des Composants. Les techniques dmontres peuvent galement tre utilises dans des projets en cours pour atteindre diffrents objectifs.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

-4-

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

PREAMBULE
CodeCharge et CodeCharge Studio sont des logiciels dvelopps par la socit amricaine YesSoftware, Inc. CodeCharge et CodeCharge Studio sont des marques dposes de YesSoftware, Inc. Toutes les autres marques cites sont des marques ou des marques dposes de leurs proprits respectifs. Le prsent Guide de Dmarrage Rapide (Didacticiel) a t traduit en franais par la socit franaise KAPITEC SOFTWARE S.A.S. (mars 2004). KAPITEC SOFTWARE S.A.S. est le distributeur exclusif des logiciels CodeCharge et CodeCharge Studio pour la France.

Coordonnes de lditeur :

YesSoftware, Inc. 6330 S. Eastern Ave. Suite 5 - Las Vegas, NV 89119 - Etats-Unis Tl.: +1 (888) 241-7338 - Fax : +1 (866) 312-8049 - www.codecharge.com

Coordonnes du distributeur franais :

KAPITEC SOFTWARE S.A.S. 57, boulevard de lEmbouchure - 31075 Toulouse Cedex 2 - France Tl. : 05 34 27 90 03 - Fax : 05 34 27 90 04 - www.kapitec.com

NOTE SUR LINTERFACE EN FRANAIS : Linterface en franais de CodeCharge Studio est disponible depuis la version 2. 1 - Pour changer la langue de l'interface de CodeCharge Studio, slectionnez le menu Tools, puis Language et aprs Franais. 2 - Pour que le changement de langue soit effectif, relancez CodeCharge Studio.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

-5-

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

INTRODUCTION
Le Guide de Dmarrage Rapide (Didacticiel) dtaille les diffrentes tapes pour crer des applications Web, et il est destin vous former de faon pratique lutilisation du logiciel CodeCharge Studio. Les applications Web dtailles vont de la simple application avec une page des applications entirement fonctionnelles. La plupart des tapes ncessaires pour construire les applications sont dcrites dans ce guide. Toutefois, si vous aviez besoin de plus de dtails concernant une caractristique spcifique, merci de vous rfrer au Guide Utilisateur. Il est noter que nous partons du principe que vous disposez dun serveur Web compltement fonctionnel (sur lequel les pages Web seront publies) et dune base de donnes fonctionnelle. L o une connexion base de donnes est requise, lexemple de base de donnes Intranet (se trouvant dans le dossier exemples de linstallation de CodeCharge Studio) est utilis. Le Guide de Dmarrage Rapide traduit en franais propose ce jour uniquement le didacticiel sur la Cration dun Gestionnaire de Tches avec le Gnrateur dApplication de CodeCharge Studio.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

-6-

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

CREATION DUN GESTIONNAIRE DE TACHES AVEC LE GENERATEUR DAPPLICATION


Le Gnrateur dApplication est une puissante fonctionnalit de CodeCharge Studio qui peut automatiquement convertir une base de donnes en une application Web oprationnelle. En suivant ces quelques tapes courtes, vous pouvez crer des pages pour ajouter, diter et passer en revue le contenu dune base de donnes, ou crer un squelette dapplication Web que vous pourrez tendre en une application Web complte. Ce didacticiel prsente tape par tape les instructions ncessaires pour crer un Gestionnaire de Tches prt lemploi : la cration se fait principalement avec le Gnrateur dApplication de CodeCharge Studio, et lapplication est ensuite finalise en faisant appel dautres caratristiques du logiciel.

ETAPE 1 Crer un Nouveau Projet

1 - Dmarrez CodeCharge Studio. 2 - Slectionnez Nouveau projet dans lcran initial.

Lancer le Gnrateur dApplication


Pour dmarrer le Gnrateur dApplication :

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

-7-

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

1 - Spcifiez le nom du nouveau projet : TaskManager (Gestionnaire de Tches), lemplacement sur le disque sur lequel le projet sera publi, et le langage de programmation. 2 - Double-cliquez sur licne Gnrateur dApplication. 3 - Slectionnez licne Gnrateur dApplication , et ensuite cliquez sur le bouton OK pour le lancer.

Spcifier les Proprits du Projet


Spcifiez un nombre de paramtres requis par le Gnrateur dApplication pour gnrer le site.

1 - Langage du Code : Langage de programmation ou technologie devant tre gnr. Les technologies actuellement supportes par CodeCharge Studio sont : ASP 3.0 avec Templates : gnre du code ASP 3.0 et des templates .html spares. ASP.Net C# : gnre des fichiers .aspx avec du code C#. ASP.Net VB : gnre des fichiers .aspx avec du code VB.Net. CFML 4.0.1 : gnre du code ColdFusion 4.0.1. CFML 4.0.1 avec Templates : gnre du code ColdFusion 4.0.1 (.cfm) et des fichiers template .html spars. JSP 1.1 JDK 1.3 : gnre du code JSP 1.1.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

-8-

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) PHP 4.0 avec Templates : gnre du code PHP 4.0 (.php) et des fichiers template .html spars. Servlets 2.2 JDK 1.3 avec Templates : gnre du code Java qui utilisent des templates .html. 2 - Langue du Site : Spcifiez la langue parle devant tre utilise lors de la gnration de messages texte pour le site. Par exemple, le texte No records, qui apparat quand il ny a plus dautre enregistrement afficher dans une grille, peut tre gnr dans nimporte laquelle des langues supportes. 3 - Chemin dAccs du Serveur : Le chemin daccs complet o les fichiers gnrs doivent tre publis (localement). Ce chemin est habituellement prdfini par le Gnrateur dApplication et peut tre laiss tel quel. 4 - URL du Serveur : Ladresse Web correspondant au Chemin dAccs du Serveur. Cette URL sera utilise pour visualiser les pages en mode Live Page. Le Gnrateur dApplication dtecte automatiquement lURL approprie qui correspond au chemin daccs du serveur. 5 - Cliquez sur Suivant pour continuer.

Slectionner la Connexion Base de Donnes


Cette application utilise lexemple de base de donnes Intranet, aussi vous navez pas besoin de crer une nouvelle connexion base de donnes. Lexemple de base de donnes Intranet contient les tables tasks (tches), priorities (priorits) et employees (employs) qui seront utilises dans ce projet.

1 - Cochez Base de donnes Intranet. 2 - Cliquez sur Suivant pour continuer. Il est noter que vous pouvez utiliser cet exemple de base de donnes sans tenir compte du langage que vous avez slectionn dans ltape prcdente, car la connexion en mode conception est faite par CodeCharge Studio et est indpendante du langage utilis. Si vous utilisez un langage tel que PHP ou ColdFusion, vous d evrez ultrieurement configurer la connexion ct serveur pour vous connecter MySQL ou une autre base de donnes.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

-9-

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Configurer le Gnrateur dApplication

1 - Configurez le Gnrateur dApplication en spcifiant les options de configuration comme indiqu ci-dessous : Permettre le nommage rapide : Slectionnez cette option aussi le Gnrateur dApplication convertira automatiquement les noms des tables en lgendes en Anglais. Par exemple, la table employees (employs) sera montre comme une grille avec le titre "List of Employees". Des champs comme task_name seront convertis en en-ttes de colonne, tels que "Task Name". Incrmentation automatique des cls primaires : Slectionnez cette option pour indiquer que les tables de base de donnes contiennent des champs cl qui sont automatiquement incrments. Le Gnrateur dApplication cachera alors les champs cl des formulaires Maintenance dEnregistrement puisque les utilisateurs nont pas besoin de saisir des valeurs cl. Utiliser un mot-cl simple pour les champs texte et notes pour Recherche : Slectionnez cette option pour gnrer un seul champ Recherche qui recherche tous les champs texte et notes dans les tables/grilles. Si cette option est dcoche, le Gnrateur dApplication cre une section Recherche avec plusieurs champs Recherche (un champ Recherche pour chaque champ texte ou notes dans la table de la base de donnes). Publication du Site aprs la cration complte des pages par le Gnrateur : Indiquez que vous voulez publier le site ds que le Gnrateur dApplication aura cr toutes les pages ncessaires. Ainsi, vous naurez pas vous inquiter de savoir si vous avez oubli de gnrer/publier des fichiers requis pour le bon fonctionnement de lapplication. Utiliser le popup Saisie de Date pour les champs dEntre de date : Slectionnez cette option aussi les champs qui sont dtects comme tant des champs date sont crs avec un composant Saisie de Date ( Date Picker) correspondant. Le composant Saisie de Date permet lutilisateur de spcifier facilement les valeurs de date. 2 - Cliquez sur Suivant pour continuer.

Mise en place de la Scurit du Site et de lAuthentification


Dans cette tape, vous pouvez indiquer si vous voulez utiliser lauthentification et vrifier les droits daccs des utilisateurs avant de leur permettre daccder certaines pages.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 10 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

1 - Slectionnez Utiliser lauthentification et laissez toutes les options par dfaut. Le Gnrateur dApplication crera alors la page Login et vous permettra de dfinir un niveau de scurit pour chacune des pages cres. 2 - Cliquez sur Suivant pour continuer.

Slectionner les Tables de Bases de Donnes

1 - Slectionnez les tables de bases de donnes suivantes sur lesquelles lapplication sera construite : employees (employs) priorities (priorits) projects (projets) statuses (statuts) tasks (tches) 2 - Cliquez sur Suivant pour continuer.

Configurer les Pages du Site


Maintenant vous devez configurer votre site en spcifiant les options et les paramtres de scurit pour chacune des pages. Le Gnrateur dApplication cre deux pages pour chacune des tables : Page Recherche (Chercher) et Grille Page Maintenance dEnregistrement
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 11 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) En cliquant sur le nom de nimporte laquelle des tables, vous pouvez indiquer si les formulaires Recherche, Grille et Enregistrement doivent tous tre sur la mme page pour chacune des tables. 1 - Pour ce didacticiel, configurez les pages comme indiqu ci-apprs. Le Gnrateur dApplication convertira alors les tables en pages Web :

Table employees : page liste de choix demploys et page informations sur les employs, seulement accessibles par les utilisateurs autoriss (User). Table priorities : page liste des priorits et page maintenance des priorits, seulement accessibles par les administrateurs (Admin). Table projects : page liste de projets et page maintenance des projets, seulement accessibles par les administrateurs ( Admin). Table statuses : liste des statuts et page maintenance des statuts, seulement accessibles par les administrateurs (Admin). Table tasks : liste de choix des tches accessible par nimporte qui (None), et page maintenance des tches accessible par les utilisateurs autoriss (User). 2 - Cliquez sur Suivant pour continuer.

Spcifier la Mise en Page du Site et les Menus


Le Gnrateur dApplication cre un en-tte de page avec un menu qui est alors inclu dans toutes les autres pages pour faciliter la navigation.

Cliquez sur Suivant pour laisser la position horizontale par dfaut des menus pour toutes les pages.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 12 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Slectionner le Thme du Site


Pour terminer

1 - Slectionnez le thme Knockout appliquer au site. Le Gnrateur dApplication utillisera le thme pour appliquer des polices et des couleurs dfinies, chaque page. Le champ 1 Type de Style doit tre paramtr sur le fichier CSS . 2 - Cliquez sur Suivant pour continuer.

Passer en Revue les Pages et Crer le Site


La dernire fentre contient un rsum de lapplication qui sera construite.

CCS : Cascading Style Sheet. Les dfinitions de style sont stockes dans un fichier .css externe.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 13 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Pour construire lapplication, cliquez sur le bouton Terminer.

ETAPE 2 Personnalisation de la Page Liste de Tches


Aprs avoir cr les pages avec le Gnrateur dApplication, vous voudrez probablement personnaliser les pages pour rpondre vos besoins spcifiques. Par exemple, vous pourrez vouloir changer du texte et des lgendes, enlever certaines des colonnes de la grille, ajouter des champs supplmentaires de recherche et des ListBoxes, etc.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 14 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Ouvrir la Page Liste de Tches

Dans la fentre Explorateur de Projet cliquez sur le signe '+' ct de la page tasks_list pour louvrir, ceci afin deffectuer des modifications.

Tester la Page
1 - Une fois la page ouverte, cliquez sur Live Page pour visualiser et tester la page fonctionnelle. 2 - Utilisez george/george comme Login. 3 - Aprs la page Login, vous devriez voir une page similaire celle montre ci-dessous :

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 15 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Le formulaire Grille dans cette page est bas sur la table tasks de la base de donnes. Toutefois, quand le Gnrateur dApplication a cr le formulaire, il a galement pris en compte toutes les relations existantes entre la table tasks de la base de donnes et dautres tables avec des noms de champs similaires. Aussi par exemple, le champ Project Name ci-dessous est bas sur une relation entre la table tasks et la table projects, qui contient les noms de tous les projets.

Relations Implicites
Concrtement le formulaire Grille dans le tasks_list nest pas bas seulement sur la table tasks, mais plutt sur une requte qui runit tous les champs dans les diffrentes tables lies la table tasks. Quand le Gnrateur dApplication cre un formulaire, il tente de dtecter toute relation existante entre la table de la base (dans ce cas prcis la table tasks), et dautres tables au sein de la base de donnes. Si une relation est trouve, le Gnrateur dApplication cr e une requte pour faire une jointure des champs qui constituent la relation. Le diagramme ci-dessous montre la jointure utilise pour le formulaire Grille dans la page tasks_list :

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 16 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Il est noter que la capacit dtecter des relations varie en fonction du type de base de donnes. Alors quil est possible de dtecter des relations dans des bases de donnes, telles que Microsoft Access, dautres bases de donnes, comme MySQL, ne supportent pas cette caractristique. Si le Gnration dApplication nest pas en mesure de dtecter les relations, elles devront alors tre implmentes manuellement en utilisant la proprit Data Source (Source de Donnes) du formulaire concern. A moins que cela ne soit spcifi diffremment pendant le processus de cration, le Gnrateur dApplication construit des formulaires Grille qui incluent tous les champs dans une table donne. Cependant, vous pouvez trs bien vouloir ne pas montrer certains champs.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 17 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Dans notre cas, nous ne voulons pas montrer les champs Type Name , Emp Login, Start Date et Finish Date . Vous noterez aussi quil y a deux champs Emp Login : le premier champ correspond au champ user_id_assign_by field dans la table tasks, et le second correspond user_id_assign_to. Nous enlverons le premier champ qui correspond user_id_assign_by et renommerons alors le second avec un nom plus significatif.

Supprimer des Colonnes Inutiles


Pour supprimer des colonnes :

1 - Repassez en mode Conception et slectionnez la colonne inutile en cliquant et en positionnant le curseur lintrieur de la colonne. 2 - Cliquez sur licne Supprimer une Colonne dans la barre doutils pour enlever la colonne. Utilisez cette mthode pour supprimer les colonnes suivantes : Type Name Emp Login (le premier champ) Start Date Finish Date

Changer la Lgende dun Champ

Toujours en mode Conception, changez le texte de lgende pour les champs suivants : Emp Login Assigned To Project Name Project
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 18 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Priority Name Priority Status Name Status

Synchroniser le code HTML et le Code de Programmation


Des champs ayant t prcdemment supprims, nous avons besoin de synchroniser le code de programmation pour quil corresponde au code HTML. Pour synchroniser :

1 - Cliquez sur longlet Live Page . Une fentre avec un message saffiche pour vous avertir que certains des composants nont pas t trouvs dans le code HTML. 2 - Cliquez sur Oui pour confirmer la suppression des colonnes et continuez.

Visualiser et Tester la Live Page


Enfin, vous pouvez visualiser votre page avec une grille contenant la liste des tches qui peuvent tre tries en cliquant sur les en-ttes de colonnes, ou recherches en saisissant un mot cl.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 19 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

ETAPE 3 Ajouter une ListBox Recher che pour les Noms de Projet
Maintenant, nous allons ajouter un champ supplmentaire de recherche au formulaire Recherche. Nous allons ajouter une ListBox avec des noms de projet, aussi les utilisateurs pourront filtrer la grille en slectionnant un projet depuis la ListBox. En premier lieu, nous avons besoin dajouter une ligne dans le formulaire Recherche dans lequel la ListBox sera place.

1 - Positionnez le curseur quelque part au sein du texte Mot cl en cliquant dessus.


Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 20 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 2 - Slectionnez licne Insrer une ligne pour ajouter une nouvelle ligne de table en haut de la section Recherche.

Ajouter une ListBox Recherche - Insrer une ListBox Contrle

1 - Saisissez le texte Project au sein de la cellule nouvellement cre ( gauche de la table). 2 - Positionnez le curseur dans la cellule de droite, comme montr ci-dessus. 3 - Cliquez sur licne Ajouter une ListBox dans la Bote Outils (Toolbox ) pour lajouter la page.

Ajouter une ListBox Recherche - Paramtrer les Proprits de la ListBox


Configurez les proprits de la ListBox en cliquant dessus et en indiquant les valeurs requises dans l Editeur de Proprits , comme indiqu ci-dessous :

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 21 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Name (Nom) : s_project - ce nom sera utilis plus tard comme un nom de variable dentre (input) pour la valeur slectionne. Connection (Connexion) : IntranetDB - connexion la base de donnes utiliser pour retrouver les valeurs de la ListBox. Data Source (Source de Donnes) : projects - table contenant les valeurs de la ListBox. Bound Column : project_id - champ de la table dont la valeur sera utilise comme paramtre de recherche. Text Column : project_name - champ de la table dont la valeur sera affiche dans la ListBox. Data Type (Type de Donnes) : Integer - type de la valeur qui sera utilise comme paramtre de recherche (project_id est numrique).

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 22 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Ajouter une ListBox Recherche - Dplacer une Ligne de la Table

Pour terminer, dplacez la ligne de la table contenant la ListBox vers le bas en : Double-cliquant ct de la ListBox, En slectionnant Dplacer la ligne vers le Bas. Vous pouvez galement effectuer cette opration en positionnant le curseur ct de la ListBox et en utilisant le raccourci clavier Alt + Flche bas.

Filtrer les Enregistrements de la Grille Slectionner la Proprit "Where"


Une ListBox fonctionnelle est maintenant cre sur la page mais elle ne peut pas tre utilise pour filtrer les enregistrements de la grille tant que la grille elle-mme nutilise pas le paramtre pass la ListBox. Vous devez alors paramtrer le critre WHERE au sein de la source de donnes de la grille.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 23 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

1 - Slectionnez la grille en cliquant nimporte o dans la lgende de la grille sur la page ou en la slectionnant dans lExplorateur de Projet . 2 - Cliquez sur le bouton [...] de la proprit Data Source (Source de Donnes).

Filtrer les Enregistrements de la Grille - Ajouter un Paramtre Recherche

1 - Ajoutez un nouveau paramtre de recherche la grille en : Cliquant sur le bouton [+], Et ensuite en spcifiant le champ tasks.project_id pour quil corresponde au paramtre s_project, qui est le nom de la ListBox
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 24 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) prcdemment cre. 2 - Le champ Type pour le paramtre doit galement tre paramtr Integer (Entier). Le formulaire Grille recevra alors ce nouveau paramtre par lintermdiaire de lURL et montrera seulement les rsultats correspondants. 3 - Cliquez sur OK une fois les informations saisies.

Filtrer les Enregistrements de la Grille - Grouper les Paramtres "Where"


Dans la fentre Source de Donnes, vous verrez trois paramtres, dont deux prcdemment configurs par le Gnrateur dApplication pour le mot cl Recherche, et un que vous venez juste dajouter pour la ListBox Projet. Maintenant la grille renverra des rsultats si nimporte lequel des critres est rencontr. Toutefois nous voulons que les rsultats soient retourns seulement si les paramtres mot cl et listbox correspondent. Par exemple, si un utilisateur saisit le mot cl " bug" et slectionne le projet "CodeCharge", la grille ne renverra pas denregistrements qui sont dans le projet slectionn ou qui contiennent le mot "bug". A la place, nous voudrions que la grille nous affiche les rsultats qui sont dans le projet " CodeCharge " et qui contiennent le mot "bug".

Pour configurer la grille ainsi : 1 - Groupez ensemble tous les paramtres qui correspondent "s_keyword". 2 - Slectionnez les deux premiers paramtres par un glisser de la souris ou en maintenant la touche du clavier Ctrl enfonce et en cliquant sur chacun des paramtres. 3 - Ensuite cliquez sur le bouton [( )] pour ajouter des parenthses autour des paramtres slectionns, ce qui permettra de les grouper ensemble.

Filtrer les Enregistrements de la Grille - Paramtrer lOprateur AND


Maintenant que tous les paramtres de recherche sont en place, il ne reste plus qu indiquer que le dernier paramtre mot cl doit ajouter loprateur " AND" de manire ce que les paramtres de recherche se lisent comme suit : (task_name like '%{s_keyword}%' or task_desc like '%{s_keyword}%') and tasks.project_id equals (=) '{s_project}'

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 25 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Pour configurer loprateur : 1 - Double-cliquez sur le paramtre task_resolution pour ouvrir la fentre Paramtres de la Table. 2 - Changez loprateur Or (Ou) par And (Et).

Visualiser la Page Fonctionnelle


Voil, votre premire page est complte. Vous pouvez rechercher et visualiser la liste des tches, les trier, ou encore cliquer sur une tche donne pour obtenir plus de dtails.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 26 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Une fois que vous avez termin de visualiser la page, cliquez sur un ID de tche pour nimporte laquelle des tches afin de tester la page Maintenance de Tches.

Connexion au Systme
Quand vous cliquez sur nimporte lequel des ID de tche sur la page Liste des Tches (Liste de : Tasks), vous tes redirig (e) vers la page Login sur laquelle vous devez saisir vos login et mot de passe. En effet, la page Enregistrement pour la table tasks (tasks_maint) est configure de manire ce que seuls les utilisateurs connects puissent y accder.

Saisissez george / george pour vous connecter en tant que George Pennington. Cette entre sera stocke dans une variable de session sur le serveur, rendant inutile la reconnexion au systme jusqu lexpiration de la session utilisateur.

Accder la Page Maintenance dEnregistrement


Aprs avoir slectionn un ID de tche dans la page Liste de Tches et avoir dpass la page Login, vous arriverez la page Maintenance dEnregistrement sur laquelle vous pouvez visualiser les dtails de la tche, et les mettre jour. Ltape suivante consiste alors personnaliser cette page.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 27 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

ETAPE 4 Changer des Etiquettes de Champ


Aprs avoir utilis le Gnrateur dApplication pour gnrer une bauche de lapplication et avoir ajust la page Liste de Tches, vous devez maintenant effectuer quelques personnalisations sur la page Maintenance de Tches ( tasks_maint). La premire chose faire est de changer les tiquettes de certains des champs pour quelles soient plus significatives.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 28 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

1 - Dans la fentre Explorateur de Projet , double-cliquez sur la page tasks_maint pour louvrir. 2 - Pour changer les tiquettes des champs, remplacez : Project Id Project Priority Id Priority Status Id Status Type Id Type Desc Description User Id Assign By Assigned By User Id Assign To Assigned To

Crer des Champs Etiquette


Certains des champs sur la page Maintenance de Tches ne ncessitent pas dtre mis jour manuellement, mais peuvent tre mis jour automatiquement. Par exemple, si une personne cre une nouvelle tche, son nom sera automatiquement entr en tant que crateur de la tche, ainsi que la date et lheure de la cration. Ltape qui suit consiste dsactiver ces champs en les convertissant en champs Etiquette.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 29 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

1 - Fates un clic droit sur le champ user_id_assign_by. 2 - Slectionnez : Changer De Etiquette et faites de mme pour le champ task_start_date. Le champ task_start_date ayant t chang en champ Etiquette, nous navons plus besoin du composant Saisie de Date ( Date Picker) qui apparat aprs le champ. Le champ Etiquette ne permettant pas la saisie de donne par lutilisateur, le composant Saisie de Date devient inutile. 3 - Dans lExplorateur de Projet, fates un clic droit sur le composant DatePicker_task_start_date . 4 - Slectionnez loption Supprimer.

Rorganiser les Champs Etiquette


Afin de faciliter la saisie, nous devons maintenant dplacer tous les champs Etiquette en bas du formulaire, ainsi les champs qui requirent une saisie de donnes apparatront ensemble en haut.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 30 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

1 - Placez votre curseur ct du champ Etiquette task_start_date . 2 - Appuyez en mme temps sur les touches du clavier Alt et Flche du bas pour dplacer la ligne en bas. 3 - Recommencez pour le champ user_id _assign_by pour quil apparaisse juste au-dessus du champ task_start_date.

Prvisualiser la Page Maintenance de Tches


Flicitations ! La version de base de votre Gestionnaire de Tches est maintenant prte.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 31 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

1 - Prvisualisez la page fonctionnelle Maintenance de Tches en : Slectionnant la page tasks_list dans lExplorateur de Projet, Et en slectionnant ensuite une des tches existantes. 2 - Vous pouvez galement ajouter une nouvelle tche en cliquant sur Ajouter Nouveau sous la grille tasks sur la page principale tasks_list. Vous remarquerez que la valeur du champ Assigned By est montre comme une valeur numrique. Vous devrez plus tard implmenter une relation pour afficher des noms. La section suivante explique comment le faire, ainsi que comment implmenter dautres amliorations. REMARQUE : La section qui suit se rfre spcifiquement limplmentation en VBScript/ASP de lexemple du Gestionnaire de Tches. Les autres implmentations sont dcrites dans les sections suivantes et selon cet ordre : ASP et VBScript ASP.NET (C#) JSP PHP ColdFusion Perl

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 32 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

EXTENSION DES FONCTI ONNALITES DE LAPPLICATION AVEC LA PROGRAMMATION DEVENEMENTS ASP et VBScript
Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (ASP et VBScript)
Vous avez certainement remarqu que jusqu prsent vous avez construit votre Gestionnaire de Tches sans avoir vous proccuper du code. En effet, CodeCharge Studio peut vous aider construire des systmes fonctionnels sans programmation ; toutefois la cration de systmes plus sophistiqus requiert un minimum de programmation. Heureusement, CodeCharge Studio facilite la programmation en proposant un diteur de code de haut niveau, en plus des Evnements et des Actions qui vous aident insrer des morceaux de code pr-programms dans le programme. Voici les dfinitions dune Action et dun Evnment : Action Composant de gnration de code dfinissable par lutilisateur, qui insre un bloc de code dans une procdure vnementielle. CodeCharge Studio est fourni avec de nombreuses Actions pr-dfinies, qui se trouvent dans le dossier suivant : (CCS folder)\Components\Actions. Intrieurement, les actions consistent en du code XML et XSL pouvant tre facilement personnalis. Par exemple, une action peut tre paramtre sur un Textbox pour valider une adresse e-mail. Procdure Evnementielle Une procdure automatiquement excute en rponse un vnement lanc par un programme son excution. Les vnements sont les meilleurs emplacements pour mettre du Code Personnalis (Custom Code) .

Etape 1
Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte
Dmarrons la programmation basique avec une tche simple de changement de la couleur dun champ grille sur notre page Liste de Tches. Concrtement, nous allons marquer les tches qui vous sont attribues en affichant votre nom en bleu dans la grille. 1 - Ouvrez la page tasks_list dans lExplorateur de Projet. 2 - Ouvrez larborescence de la grille tasks. 3 - Fates un clic droit sur le champ emp_login1 et slectionnez Proprits. 4 - Dans longlet Donnes, paramtrez la valeur de la proprit Name (Nom) user_id_assign_to . 5 - Dans lExplorateur Projet, fates un clic droit sur le champ task_name et slectionnez Proprits. 6 - Dans longlet Donnes, paramtrez la valeur de la proprit Content (Contenu) HTML. 7 - Slectionnez la grille tasks dans lExplorateur de Projet, ou cliquez nimporte o dans la lgende du formulaire. 8 - Slectionnez longlet Evnements dans la fentre Proprits. 9 - Fates un clic droit sur lvnement Before Show Row et slectionnez Ajouter du Code... .

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 33 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Lvnement Before Show Row se dclenche dans le programme aprs que les valeurs champ soient attribues, mais avant dtre gnres en HTML. En ajoutant du code dans cet vnement, vous pouvez modifier la valeur champ avant quelle ne soit montre.

Contrler par Programmation la Valeur Champ


Une fois que vous aurez ajout le Code Personnalis (Custom Code) lvnement, vous verrez la fentre ddition du code avec lemplacement appropri pour entrer le nouveau code. 1 - Remplacez cette ligne de code : ' Write your own code here. Par les lignes suivantes (ASP/VBScript) : If tasks.user_id_assign_to.Value = Session("UserLogin") Then tasks.task_name.Value = "<b><font color=""blue"">" & tasks.task_name.Value & "</font></b>" End if Ce qui suit explique le fonctionnement du code ajout ci-dessus : If tasks.user_id_assign_to.Value = Session("UserLogin") then Cest une condition if (si) qui est vraie seulement si la valeur de ltiquette user_id_assign_to est gale au nom de Login de lemploy connect. Une fois connect au systme, le programme reconnatra vos tches en comparant votre nom de Login la valeur du champ de la personne qui est attribue une tche. UserLogin est une des variables de session utilises par les programmes gnrs par CodeCharge, et la variable conserve le nom de Login de la session utilisateur en cours jusqu son expiration. Note : Il sagit des variables de session cres par dfaut par CodeCharge Studio : UserID : la valeur champ cl primaire de la session utilisateur UserLogin : le nom de Login de lutilisateur connect au systme GroupID : le niveau/groupe de scurit de lutilisateur connect au systme tasks.task_name.Value = "<b><font color=""blue"">" & tasks.task_name.Value & "</font></b>" Le code du dessus est excut si la condition prcdente if est rencontre. Elle modifie la valeur du champ task_name. La valeur champ est remplace par sa valeur de bases de donnes encapsule dans du code HTML, qui spcifie la couleur de la police (le bleu), et ajoute un tag HTML <b> pour afficher la police en gras. Vous remarquerez que le mot blue est entre des double guillemets, qui seront remplacs par un guillemet simple. Dans la mesure o les guillemets marquent le dbut et la fin dune chane de caractres, lutilisation de double guillemets vous permet dinsrer un guillemet dans une chane de caractres.
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 34 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) De plus, vous remarquez que le code est orient objet et vous indiquez que vous voulez attribuer une valeur au champ task_name dans la grille tasks. Value (Valeur) est une proprit de ce champ, qui peut la fois tre lue et modifie. End if Cette ligne marque la fin de la condition if , aussi lexcution du code restant nest pas affecte par cette condition.

Prvisualiser la Page Liste de Tches


1 - Sauvegardez votre projet. 2 - Passez en mode Live Page pour visualiser votre page fonctionnelle. Si aucun nom de tche nest mis en vidence dans la colonne "Name", cest que vous ntes probablement pas connect(e) au systme. 3 - Le menu ne contenant pas encore de lien la page Login, vous pouvez y accder en essayant douvrir une des pages restreintes, par exemple la page Maintenance de Tches. 4 - Cliquez sur nimporte lequel des ID de projet, et vous devriez voir la page Login. 5 - Connectez-vous en tant que george/george, puis cliquez sur le lien Tasks sur le menu pour retourner la page Liste de Tches. Maintenant, vous devriez voir que certaines tches sont mises en vidence ; ces tches correspondent aux tches de lutilisateur pour lequel vous avez ouvert une session.

Etape 2
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 35 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Modifier un Champ Etiquette sur la Page Maintenance de Tches


Maintenant procdons une modification ncessaire sur la page Maintenance de Tches sur laquelle vous avez d remarqu que le champ Etiquette Assigned By naffiche pas le nom de lemploy, mais lID, comme montr ci-dessous ; cest parce que la table tasks contient seulement lID utilisateur, alors que la table employees contient les noms des utilisateurs rels.

Il y a plusieurs mthodes possibles pour traiter de la question. Merci de vous rfrer aux explications qui suivent : 1 - Crez une Requte qui contient plusieurs tables et qui peut tre utilise en tant que source de donnes par le formulaire Enregistrement, comme vous lavez dj fait avec la grille sur la page Liste de Tches. Malheureusement, les requtes qui contiennent plusieurs tables ne peuvent pas tre mises jour de par leur nature, et donc le formulaire Enregistrement entier peut sarrter de fonctionner. En dautres termes, si vous avez indiqu que vous vouliez utiliser une requte contenant une table tasks et employees dans votre formulaire Enregistrement, alors si vous attribuez une tche quelquun dautre, le programme ne pourra pas savoir si vous vouliez mettre jour la table tasks avec le nouveau employee_id, ou si vous vouliez mettre jour la table employees et changer le nom de lemploy. Ainsi, si vous utilisez plusieurs tables comme source de donnes pour le formulaire Enregistrement, vous devrez galement dfinir les oprations Custom Insert , Custom Update et Custom Delete dans les proprits du formulaire Enregistrement pour indiquer quels sont les champs de la base de donnes qui devront tre mis jour avec les valeurs correspondantes saisies sur la page. Cette mthode semble effectivement reprsenter beaucoup deffort juste pour afficher une valeur supplmentaire sur la page. 2 - Utilisez une Procdure Evnementielle pour insrer du Code Personnalis (Custom Code) o vous pourrez produire la valeur dsire par programmation. Cette mthode est trs flexible, dans la mesure o elle vous permet dtendre le code gnr par lajout de votre propre code. Ltape suivante dcrit en dtail cette mthode.

Utiliser lEvneme nt Before Show pour Changer la Valeur dune Etiquette


1 - En mode Conception, slectionnez lEtiquette user_id_assign_by, 2 - Dans la fentre Proprits, cliquez sur longlet Donnes. 3 - Slectionnez Text pour la proprit Data Type (Type de Donnes).

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 36 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 4 - Dans la fentre Proprits, cliquez sur longlet Evnements. 5 - Fates un clic droit sur lvnement Before Show et slectionnez Ajouter du Code... . CodeCharge Studio va alors automatiquement passer en mode Visualisation du Code .

Une fois en mode Visualisation du Code , remplacez le texte suivant : 'Write your own code here. Par : If tasks.EditMode Then tasks.user_id_assign_by.Value = CCDLookUp("emp_name", "employees", "emp_id=" &_ DBIntranetDB.ToSQL(tasks.user_id_assign_by.Value, ccsInteger) , DBIntranetDB) Else tasks.user_id_assign_by.Value = CCDLookUp("emp_name", "employees", "emp_id=" &_ DBIntranetDB.ToSQL(CCGetUserID,ccsInteger), DBIntranetDB) End if Le code ci-dessus est compos des lments suivants : tasks : le nom du formulaire Enregistrement sur la page. EditMode : proprit du formulaire, qui indique si lenregistrement est dit. En fonction de la valeur de cette proprit, nous affichons soit le nom de la personne qui a initialement soumis la tche (mode Edition), ou celui de la per sonne qui soumet la tche (mode Insertion). user_id_assign_by : le nom de lEtiquette au sein de la Grille, et en mme temps le nom du champ de la base de donnes qui a t utilis pour crer cette Etiquette et qui est maintenant sa source de donnes. Value : la proprit dun objet (dans ce cas lEtiquette), qui peut tre lue et/ou modifie. tasks.user_id_assign_by.Value : proprit Value (Valeur) entirement qualifie, qui dit au programme quel objet y appartient. En dautres termes, cest la proprit Value qui appartient au champ user_id_assign_by, qui en retour appartient la Grille tasks. CCDLookUp : fonction de CodeCharge qui supporte la rcupration de valeur de base de donnes base sur un nom de champ, un nom de table, ou une condition. Ici, cette fonction rcupre le Nom de lEmploy (emp_name ) dans la table employees en utilisant la condition suivante : la cl (emp_id) est gale la valeur courante de lEtiquette. DBIntranetDB : le nom de lobjet qui dfinit la connexion base de donnes que vous voulez utiliser dans la fonction CCDLookup. ToSQL : proprit de connexion qui convertit une valeur dans le format support par la base de donnes. Cette proprit requiert un paramtre qui dit si une valeur doit tre convertie en un nombre (ccsInteger, ccsFloat), en du texte (ccsText, ccsMemo), en une date (ccsDate), ou en boolen (ccsBoolean). Dans ce cas, cette proprit convertit la valeur courante de lEtiquette en un nombre qui peut tre utilis avec la fonction CCDLookUp. Il est conseill de toujours utiliser cette proprit avec
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 37 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) CCDLookUp. CCGetUserID : fonction de CodeCharge qui retourne lID de lutilisateur connect au systme. Le code se lit approximativement comme suit : If a record is being edited : Attribue le nom de la personne qui a initialement soumis la question lEtiquette user_id_assign_by, par la recherche du nom de lemploy dans la table employees, en utilisant la fonction CCDLookUp, qui utilise la connexion IntranetDB et la valeur de lEtiquette user_id_assign_by. If a new record is being created : Attribue un utilisateur connect lEtiquette user_id_assign_by en rcuprant son nom dans la table employees et en utilisant la fonction CCDLookUp, qui utilise la connexion IntranetDB et la fonction CCGetUserID (qui permet dobtenir lID de lutilisateur connect). Maintenant que vous avez modifi par programmation la valeur de lEtiquette user_id_assign_by pour sortir le Nom de lEmploy la place de lID, vous allez devoir spcifier que ce champ est dsormais un champ Texte, au lieu dun champ Numrique. 1 - Cliquez sur longlet Donnes dans la fentre Proprits. 2 - Slectionnez Text en tant que Data Type (Type de Donnes).

Etape 3
Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches
Vous avez prcdemment utilis lvnement Before Show pour afficher le nom de la personne qui est attribue une tche. Cependant, les champs Etiquette ne peuvent pas tre mis jour de par leur nature, alors bien que le nom de lemploy soit affich sur la page, il nest pas crit dans la base de donnes. Dans la mesure o nous voulons que la base de donnes enregistre le nom ou lID de la personne qui soumet une tche, nous allons devoir ajouter la logique de programmation pour effectuer cela. 1 - Ajoutez un champ Cach votre page depuis longlet Formulaires de la Bote Outils (Toolbox ). Ce type de champ nest pas visible dans le navigateur, mais il sera utilis pour stocker une valeur et mettre jour la base de donnes. 2 - Configurez le nouveau champ en paramtrant ses proprits comme indiqu ci-dessous : Name (Nom) : assigned_by - le nom du champ Cach qui vient dtre ajout. Cela peut tre nimporte quel nom. Control Source : user_id_assign_by - le champ/colonne de la base de donnes qui sera utilis(e) pour rcuprer la valeur du champ et qui sera mis(e) jour avec la nouvelle valeur en cas de changement. Data Type (Type de Donnes) : Integer - le type de la valeur lie au Control Source. Nos ID utilisateur/employ sont numriques. Default (Par Dfaut) : CCGetUserID - CCGetUserID est une fonction de CodeCharge qui retrouve lID de lutilisateur connect au systme. Ainsi vous pouvez simplement spcifier que vous voulez enregistrer lID de lutilisateur connect dans le champ user_id_assign_by pour chaque nouvelle tche qui sera soumise.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 38 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement


Maintenant, nous allons ajouter un autre champ Cach votre page, qui sera utilis pour soumettre la date et lheure courantes dans le champ task_start_date dans la base de donnes. 1 - Configurez le nouveau champ comme indiqu ci-dessous : Name (Nom) : date_created Control Source : task_start_date Data Type (Type de Donnes) : Date Default (Par Dfaut) : CurrentDateTime - La valeur CurrentDateTime vous permet dattribuer automatiquement la date et lheure courantes aux nouvelles tches. La proprit Default naffecte pas les enregistrements existants, donc la date et lheure des tches existantes ne seront pas modifies lors des mises jour.

1 - Cliquez sur le champ task_start_date dans lExplorateur de Projet. 2 - Dans la fentre Proprits, paramtrez Default Value (Valeur Par Dfaut) CurrentDateTime comme vous lavez fait avec le champ date_created. Cest ainsi que le champ Etiquette peut afficher la date bien que le champ Cach ne soit pas visible pour lutilisateur.

Tester les Champs Etiquette et Cach


Pour terminer : 1 - Passez en mode Live Page . 2 - Slectionnez ou ajoutez une Tche, et vous voyez alors votre Etiquette afficher le nom de la personne qui a attribu la tche.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 39 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 3 - La version de base de votre Gestionnaire de Tches est dsormais finalise. Ne pas oublier de sauvegarder !

Etape 4
Programmation du Formulaire Enregistrement
Maintenant que vous avez cr une application simple de Gestion de Tches, vous souhaitez certainement ltendre pour quelle soit la fois plus pratique et plus utile. Dans cette section, vous allez avoir un aperu sur la manire dimplmenter des applications pratiques et sophistiques par lajout de code et dactions, ceci afin doffrir des fonctionnalits supplmentaires votre Gestionnaire de Tches. Vous allez apprendre : Envoyer des notifications demail la personne qui la tche est attribue, Autoriser seulement la personne qui la tche est attribue la modifier.

Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails
1 - Slectionnez le formulaire tasks dans la page tasks_maint en le slectionnant depuis lExplorateur de Projet, ou en cliquant nimporte o dans la lgende du formulaire. 2 - Dans la fentre Proprits, cliquez sur longlet Evnements. 3 - Slectionnez lvnement After Insert. 4 - Cliquez sur le bouton [+]. 5 - Slectionnez Ajouter du Code...

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 40 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Une fois en mode Visualisation du Code , remplacez le commentaire gnr : ' Write your own code here. Par le code ci-dessous : Dim Mailer Set Mailer = Server.CreateObject("Persits.MailSender") Mailer.From = CCDLookUp("email", "employees", "emp_id=" &_ DBIntranetDB.ToSQL(CCGetUserID,ccsInteger), DBIntranetDB) Mailer.FromName = CCDLookUp("emp_name", "employees", "emp_id=" &_ DBIntranetDB.ToSQL(CCGetUserID, ccsInteger), DBIntranetDB) Mailer.AddAddress CCDLookUp("email", "employees", "emp_id=" &_ DBIntranetDB.ToSQL(tasks.user_id_assign_to.Value, ccsInteger), DBIntranetDB) Mailer.Host = "mysmtphost.com" Mailer.IsHTML = True Mailer.Subject = "New task for you" Mailer.Body = "The following task was submitted:<br><br>" &_ "Task ID: " & CCDLookUp("max(task_id)", "tasks", "user_id_assign_by=" &_ DBIntranetDB.ToSQL(CCGetUserID, ccsInteger), DBIntranetDB) &_ "<br><br>" & tasks.task_desc.Text Mailer.Send set Mailer = Nothing Comme vous avez d vous en rendre compte, le code ci-dessus envoie des emails aux utilisateurs qui de nouvelles tches sont attribues. Voici des informations supplmentaires que vous devez connatre : 1 - Le code du dessus ncessite que vous installiez sur votre serveur le composant Email "ASPEmail", que vous pouvez obtenir gratuitement sur http://www.aspemail.com/ Il y a beaucoup dautres composants email et vous pouvez modifier le programme du dessus en vous rfrant la documentation concernant le composant que vous avez choisi dutiliser. 2 - Vous devez remplacer le paramtre "mysmtphost.com" par un serveur SMTP que vous tes autoris utiliser. Cest gnralement le mme serveur que celui configur comme "Outgoing Mail Server (SMTP)" dans votre messagerie email client (Microsoft Outlook ou Outlook Express).
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 41 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Ce qui suit est une explication du code du dessus : Dim Mailer : Dfinit lobjet Mailer, qui plus tard initialisera le composant ASPEmail. Set Mailer = Server.CreateObject("Persits.MailSender") Cre lobjet Mailer et initialise le composant ASPEmail. Mailer.From = CCDLookUp("email", "employees", "emp_id=" & DBIntranetDB.ToSQL(CCGetUserID,ccsInteger), DBIntranetDB) Paramtre ladresse email From (Expditeur) la valeur du champ email dans la table employees o emp_id correspond lutilisateur connect. La fonction CCDLookUp est utilise pour rcuprer une valeur de base de donnes, tandis que CCGetUserID retrouve lID de la connexion utilisateur en cours. Mailer.FromName = CCDLookUp("emp_name", "employees", "emp_id=" & DBIntranetDB.ToSQL(CCGetUserID, ccsInteger), DBIntranetDB) Paramtre le nom From (Expditeur) la valeur du champ emp_name pour lutilisateur en cours. Mailer.AddAddress CCDLookUp("email", "employees", "emp_id=" & DBIntranetDB.ToSQL(tasks.user_id_assign_to.Value, ccsInteger), DBIntranetDB) Paramtre ladresse email To (Destinataire) lemail de la personne qui est attribue la tche. La fonction CCDLookUp est utilise ici pour rcuprer ladresse email approprie. Mailer.Host = "mysmtphost.com" Spcifie le serveur SMTP par lequel lemail sera envoy (remplacez cette valeur par un hte SMTP que vous tes autoris utiliser). Mailer.IsHTML = True Spcifie que lemail sera envoy au format HTML (et non pas au format texte brut). Mailer.Subject = "New task for you" Lobjet de lemail envoyer. Mailer.Body = "The following task was submitted:<br><br>" & "Task ID: " & CCDLookUp("max(task_id)", "tasks", "user_id_assign_by=" & DBIntranetDB.ToSQL(CCGetUserID, ccsInteger), DBIntranetDB) & "<br><br>" & tasks.task_desc.Text Le corps de lemail qui comprend la description de la tche et de lID de tche. Le dernier ID de tche insre peut tre obtenu en utilisant diffrentes mthodes avec plusieurs bases de donnes. Malheureusement, Microsoft Access ne supporte pas la rcupration du dernier enregistrement insr, aussi vous devrez utiliser la fonction CCDLookUp pour rcuprer le plus grand ID de tche soumis par lutilisateur connect (en supposant que les ID de tches soient crs par incrmentation). Mailer.Send Envoie lemail.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 42 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) set Mailer = Nothing Se dbarrasse de lobjet Mailer pour librer des ressources matrielles.

Utiliser lEvnement After Update pour Envoyer des Emails


Vous avez prcdemment ajout le code ncessaire qui envoie une notification demail la personne qui la tche est attribue, une fois lenregistrement dune nouvelle tche effectue dans le systme. Maintenant, il nous faut implmenter une fonctionnalit similaire dans lvnement After Update pour informer la personne, qui la tche est attribue, lorsquune tche existante est mise jour et rattribue quelquun dautre. 1 - Cliquez sur le formulaire tasks dans lExplorateur de Projet, ou cliquez nimporte o dans la lgende du formulaire. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez le Custom Code (Code Personnalis) dans lvnement After Update : Dim Mailer If CCGetUserID <> tasks.user_id_assign_to.Value then Set Mailer = Server.CreateObject("Persits.MailSender") Mailer.From = CCDLookUp("email", "employees", "emp_id=" &_ DBIntranetDB.ToSQL(CCGetUserID, ccsInteger), DBIntranetDB) Mailer.FromName = CCDLookUp("emp_name", "employees", "emp_id=" &_ DBIntranetDB.ToSQL(CCGetUserID, ccsInteger), DBIntranetDB) Mailer.AddAddress CCDLookUp("email", "employees", "emp_id=" &_ DBIntranetDB.ToSQL(tasks.user_id_assign_to.Value, ccsInteger), DBIntranetDB) Mailer.Host = "mysmtphost.com" Mailer.IsHTML = True Mailer.Subject = "A task was assigned to you" Mailer.Body = "The following task was assigned to you:<br><br>" &_ "Task ID: " & Request.QueryString("task_id")& _ "<br><br>" & tasks.task_desc.Text Mailer.Send set Mailer = Nothing End if Les principales diffrences entre le code ci-dessus et celui utilis dans lvnement After Insert sont les suivantes : 1 - Une condition if a t ajoute pour envoyer un email seulement si un utilisateur attribue une tche une autre personne. 2 - task_id est rcupr depuis lURL utilisant la fonction Request.QueryString. Nous pouvons utiliser cette mthode parce que des tches peuvent tre mises jour seulement si lutilisateur est arriv la page en cours par une URL qui contient un ID de tche mettre jour. Une telle URL ressemble : http://localhost/TaskManager/tasks_maint.jsp?task_id=9

Test de lEnvoi dEmail


Avant de tester lenvoi demail :

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 43 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 1 - Vous devez ajouter de nouveaux utilisateurs votre base de donnes avec des adresses email correctes, ou modifier les utilisateurs existants en changeant leur adresse email : A - Vous pouvez le faire en ouvrant la base de donnes Intranet.mdb qui se trouve dans votre rpertoire Projet. B - Sinon, vous pouvez utiliser le Gestionnaire de Tches. Allez la page Employs pour y visualiser les emails utilisateur et les modifier. 2 - Une fois vos utilisateurs configurs avec le test demails, sauvegardez votre projet et passez en mode Live Page pour tester votre systme. Remarque : Vous aurez besoin de Microsoft Access 2000 ou une version suprieure pour diter manuellement le fichier base de donnes. Si votre code email fonctionne correctement, vous devez alors vous retrouver sur la page Liste de Tches aprs lajout ou la modification dune tche, et la personne qui la tche a t attribue doit recevoir un email.

Etape 5
Implmenter la Scurit d Enregistrement dans lEvnement After Initialize
Votre Gestionnaire de Tches est dsormais pratiquement complet, seule une fonctionnalit pouvant savrer importante manque, savoir la Scurit. Dans ltat actuel du gestionnaire, nimporte qui peut modifier et supprimer nimporte quelle tche. Vous voudrez certainement limiter laccs pour que seuls les employs autoriss puissent mettre jour leurs tches. Il y a plusieurs faons de procder, et nous allons examiner plusieurs dentre elles. 1 - Cliquez sur la page tasks_maint dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez Custom Code (Code Personnalis) lvnement After Initialize de la page. Procdez comme suit : Une fois en mode Visualisation de Code , remplacez le commentaire gnr : ' Write your own code here. Par ce code : Dim current_task current_task = CInt(Request.QueryString("task_id")) If current_task <> 0 and CCGetUserID <> CCDLookUp("user_id_assign_to", "tasks", "task_id=" &_ DBIntranetDB.ToSQL(current_task, ccsInteger), DBIntranetDB) Then tasks.Visible = False ' Redirect = "tasks_list.asp" ' tasks.UpdateAllowed = False ' tasks.DeleteAllowed = False End if Le code ci-dessus vous permet de tester les mthodes suivantes pour implmenter la scurit denregistrement : Ne pas montrer la Tche (formulaire Enregistrement) sur la page si la tche slectionne nappartient pas lutilisateur connect. Un utilisateur non autoris verra une page blanche. Vous pouvez cacher nimporte quel formulaire sur une page en lui attribuant une valeur False (Faux) pour la proprit Visible (visible) du formulaire. Le code current_task <> 0 dans la condition if prcise que le code doit seulement tre excut si un utilisateur essaie de modifier une tche existante et qui ne lui est pas attribue. La condition if sassure aussi que tous les utilisateurs peuvent crer de nouvelles tches. Vous pouvez tester cette fonctionnalit en insrant le code du dessus dans lvnement, puis en passant en mode Live Page et en essayant de modifier une tche qui ne vous est pas attribue dans ce cas vous verrez une page vide. Bien quune telle fonctionnalit ne soit pas trs utile, elle illustre comment cacher des formulaires sur une page. Ajoutez un autre formulaire Enregistrement votre page qui ne puisse pas tre mis jour et qui ait seulement des champs Etiquette qui montrent les informations. Une fois que vous avez deux formulaires sur la page, vous pouvez cacher chaque formulaire par programmation en utilisant des critres dexclusion.
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 44 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Rediriger des utilisateurs non autoriss sur une autre page. Seuls les utilisateurs qui sont attribues des tches peuvent visualiser la page. Vous pouvez mettre en application et tester cette fonctionnalit en modifiant lgrement le code du dessus comme montr cidessous : Dim current_task current_task = CInt(Request.QueryString("task_id")) If current_task <> 0 and CCGetUserID <> CCDLookUp("user_id_assign_to", "tasks", "task_id=" &_ DBIntranetDB.ToSQL(current_task, ccsInteger), DBIntranetDB) Then ' tasks.Visible = False Redirect = "tasks_list.asp" ' tasks.UpdateAllowed = False ' tasks.DeleteAllowed = False End if Le code ci-dessus montre que vous devez commenter la ligne active prcdemment, et activer la ligne qui commence avec Redirect. Redirect est une variable utilise par CodeCharge Studio pour dterminer si la page en cours doit tre redirige vers une autre page, par exemple dans le cas o un utilisateur nest pas connect. Cette variable peut tre utilise seulement sur les pages qui ont un accs restreint et qui requirent louverture dune session. Vous pouvez simplement attribuer la page de destination la variable Redirect et la page sera alors automatiquement redirige. Vous pouvez tester cette fonctionnalit en modifiant le code comme montr, puis en passant en mode Live Page, et en essayant de modifier une tche qui ne vous est pas attribue.

C# et VB.Net
Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (C# et VB.Net)
Vous avez certainement remarqu que jusqu prsent vous avez construit votre Gestionnaire de Tches sans avoir vous proccuper du code. En effet, CodeCharge Studio peut vous aider construire des systmes fonctionnels sans programmation ; toutefois la cration de systmes plus sophistiqus requiert un minimum de programmation. Heureusement, CodeCharge Studio facilite la programmation en proposant un diteur de code de haut niveau, en plus des Evnements et des Actions qui vous aident insrer des morceaux de code pr-programms dans le programme. Voici les dfinitions dune Action et dun Evnment : Action Composant de gnration de code dfinissable par lutilisateur, qui insre un bloc de code dans une procdure vnementielle. CodeCharge Studio est fourni avec de nombreuses Actions pr-dfinies, qui se trouvent dans le dossier suivant : (CCS folder)\Components\Actions. Intrieurement, les actions consistent en du code XML et XSL pouvant tre facilement personnalis. Par exemple, une action peut tre paramtre sur un Textbox pour valider une adresse e-mail. Procdure Evnementielle Une procdure automatiquement excute en rponse un vnement lanc par un programme son excution. Les vnements sont les meilleurs emplacements pour mettre du Code Personnalis (Custom Code).

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 45 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 1
Utiliser lEvnement Before Show Row pour Changer la couleur du Texte
La premire amlioration va donc consister changer la couleur dun champ grille sur la page Task List. Concrtement, nous allons faire ressortir les tches attribues lutilisateur ayant une session ouverte, en les affichant en bleu. 1 - Ouvrez la page tasks_list dans lExplorateur de Projet. 2 - Ouvrez larborescence de la grille tasks. 3 - Fates un clic droit sur le champ emp_login1 et slectionnez Proprits. 4 - Dans longlet Donnes, paramtrez la valeur de la proprit Name (Nom) user_id_assign_to . 5 - Dans lExplorateur Projet, fates un clic droit sur le champ task_name et slectionnez Proprits. 6 - Dans longlet Donnes, paramtrez la valeur de la proprit Content (Contenu) HTML. 7 - Slectionnez la grille tasks dans lExplorateur de Projet, ou cliquez nimporte o dans la lgende du formulaire. 8 - Slectionnez longlet Evnements dans la fentre Proprits. 9 - Fates un clic droit sur lvnement Before Show Row et slectionnez Ajouter du Code... . Lvnement Before Show Row se dclenche dans le programme aprs que les valeurs champs soient attribues, mais avant dtre gnres en HTML. En ajoutant du code dans cet vnement, vous pouvez modifier la valeur champ avant quelle ne soit montre.

Contrler par Programmation la Valeur Champ


Une fois votre Code Personnalis (Custom Code) ajout lvnement, vous verrez alors la fentre ddition du code avec lemplacement appropri pour entrer le nouveau code. Remplacez cette ligne de code : C# // Write your own code here. VB.Net ' Write your own code here. Par les lignes suivantes : C#

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 46 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) if((DataItem.user_id_assign_to.Value).ToString() == DBUtility.UserLogin ) { taskstask_name.Text = "<b><font color='blue'>" + (DataItem.task_name.Value).ToString() + "</b></font>"; } VB.Net If tasksuser_id_assign_to.Text = DBUtility.UserLogin Then taskstask_name.Text = "<b><font color='blue'>" & taskstask_name.Text & "</b></font>" End if Ce qui suit explique comment le code ajout ci-dessus fonctionne : La condition if (si) est true (vraie) seulement si le champ grille task_name (contenant le nom de login de lutilisateur qui la tche est attribue) est gale au nom de login de lempoy connect au gestionnaire. Donc, une fois connect au gestionnaire, le programme reconnatra vos tches en comparant votre nom celui de la personne qui est attribue chaque tche. C# taskstask_name.Text = "<b><font color='blue'>" + (DataItem.task_name .Value).ToString() + "</b></font>"; VB.Net taskstask_name.Text = "<b><font color='blue'>" & taskstask_name.Text & "</b></font>" Ce code est excut si la condition prcdente if est rencontre. Il modifie la valeur de lEtiquette tasktask_name. La valeur champ est remplace par la valeur nom de login encapsule dans du code HTML, qui spcifie la couleur de la police comme le bleu, et ajoute un tag HTML <b> pour obtenir une police en gras.

Prvisualiser la Page Liste de Tches


1 - Sauvegardez votre projet. 2 - Passez en mode Live Page pour visualiser votre page fonctionnelle. Si aucun nom de tche nest mis en vidence dans la colonne "Name", cest que vous ntes probablement pas connect(e) au systme. 3 - Le menu ne contenant pas encore de lien la page Login, vous pouvez y accder en essayant douvrir une des pages restreintes, par exemple la page Maintenance de Tches. 4 - Cliquez sur nimporte lequel des ID projet, et vous devriez voir la page Login. 5 - Connectez-vous en tant que george/george, puis cliquez sur le lien Tasks sur le menu pour retourner la page Liste de Tches. Maintenant, vous devriez voir que certaines tches sont mises en vidence ; ces tches correspondent aux tches de lutilisateur pour lequel vous avez ouvert une session.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 47 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 2
Modifier un Champ Etiquette sur la Page Maintenance de Tches
Maintenant procdons une modification ncessaire sur la page Maintenance de Tches sur laquelle vous avez d remarqu que le champ Etiquette Assigned By naffiche pas le nom de lemploy, mais lID, comme montr ci-dessous ; cest parce que la table tasks contient seulement lID utilisateur, alors que la table employees contient les noms des utilisateurs rels.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 48 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Il y a plusieurs mthodes possibles pour traiter de la question. Merci de vous rfrer aux explications qui suivent : 1 - Crez une Requte qui contient plusieurs tables et qui peut tre utilise en tant que source de donnes par le formulaire enregistrement, comme vous lavez dj fait avec la grille sur la page Liste de Tches. Malheureusement, les requtes qui contiennent plusieurs tables ne peuvent pas tre mises jour de par leur nature, et donc le formulaire Enregistrement entier peut sarrter de fonctionner. En dautres termes, si vous avez indiqu que vous vouliez utiliser une requte contenant une table tasks et employees dans votre formulaire Enregistrement, alors si vous attribuez une tche quelquun dautre, le programme ne pourra pas savoir si vous vouliez mettre jour la table tasks avec le nouveau employee_id, ou si vous vouliez mettre jour la table employees et changer le nom de lemploy. Ainsi, si vous utilisez plusieurs tables comme source de donnes pour le formulaire Enregistrement, vous devrez galement dfinir les oprations Custom Insert , Custom Update et Custom Delete dans les proprits du formulaire Enregistrement pour indiquer quels champs de la base de donnes devront tre mis jour avec les valeurs correspondantes saisies sur la page. Cette mthode semble effectivement reprsenter beaucoup deffort juste pour afficher une valeur supplmentaire sur la page. 2 - Utilisez une Procdure Evnementielle pour insrer du Code Personnalis (Custom Code) o vous pourrez produire la valeur dsire par programmation. Cette mthode est trs flexible, dans la mesure o elle vous permet dtendre le code gnr par lajout de votre propre code. Ltape suivante dcrit en dtail cette mthode.

Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette


1 - En mode Conception, slectionnez lEtiquette user_id_assign_by, 2 - Dans la fentre Proprits, cliquez sur longlet Donnes. 3 - Slectionnez Text pour la proprit Data Type (Type de Donnes). 4 - Dans la fentre Proprits, cliquez sur longlet Evnements. 5 - Fates un clic droit sur lvnement Before Show et slectionnez Ajouter du Code... . CodeCharge Studio va alors automatiquement passer en mode Visualisation du Code .

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 49 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Une fois en mode Visualisation du Code , remplacez le texte suivant : C# // Write your own code here. VB.Net ` Write your own code here. Par : C# if (IsInsertMode) { SqlCommand userNameCmd = new SqlCommand("SELECT emp_name FROM" + "employees WHERE emp_id=" + DBUtility.UserId.ToString(), Settings.IntranetDBDataAccessObject); tasksuser_id_assign_by.Text = userNameCmd.ExecuteScalar().ToString(); } else { SqlCommand userNameCmd = new SqlCommand( "SELECT emp_name FROM" + "employees WHERE emp_id=" + item.user_id_assign_by.Value.ToString(), Settings.IntranetDBDataAccessObject); tasksuser_id_assign_by.Text = userNameCmd.ExecuteScalar().ToString(); }

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 50 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) VB.Net If IsInsertMode = True Then tasksuser_id_assign_by.Text = Convert.ToString(Settings.IntranetDBDataAccessObject.ExecuteScalar( "SELECT emp_name FROM employees WHERE emp_id="& DBUtility.UserId )) Else tasksuser_id_assign_by.Text = Convert.ToString(Settings.IntranetDBDataAccessObject.ExecuteScalar( "SELECT emp_name FROM employees WHERE emp_id="& Convert.ToString( tasksuser_id_assign_by.Text))) End if Dans le morceau de code ci-dessus, nous avons un bloc if qui vrifie la valeur de la variable Boolenne IsInsertMode. Cette variable est gnre par CodeCharge Studio dans lvnement Before Show des formulaires Enregistrement. Puisque le mme formulaire Enregistrement CodeCharge Studio peut tre utilis pour mettre jour les enregistrements, pour supprimer les enregistrements comme pour insrer de nouveaux enregistrements, cette variable est utilise pour dterminer ltat du formulaire Enregistrement au runtime ( lexcution). Si cette variable est true (vraie), alors le formulaire Enregistrement insre un nouvel enregistrement, sinon elle est soit mise jour, soit supprime. Les blocs if et else dfinissent un objet SqlCommand, qui comme indiqu prcdemment vous aide excuter des commandes de la base de donnes. La requte SQL passe aux deux mthodes retourne le nom de lutilisateur stock dans le champ emp_name de la table employees. Une fois que le nom de lutilisateur est rcupr, il est paramtr sur lEtiquette tasksuser_id_assign_by . La seule diffrence entre les deux requtes SQL est que si lutilisateur insre un nouvel enregistrement i.e. la variable IsInsertMode est true (vraie), vous passez lID de lutilisateur connect depuis la variable DBUtility.UserId. Si lutilisateur met jour ou supprime lenregistrement, alors vous passez lID utilisateur de lutilisateur qui la tche tait prcdemment attribue. La proprit user_id_assign_by de lobjet item contient cette valeur rcupre dans la base de donnes. Le code entier se lit approximativement comme suit : If a new record is being created : Utilise la valeur de DBUtility.UserId pour obtenir le nom de lutilisateur connect et pour attribuer son nom la valeur de lEtiquette tasksuser_id_assign_by . If a record is being edited : Utilise la valeur de tasksuser_id_assign_by pour obtenir le nom de lutilisateur qui la tche a t attribue et pour attribuer son nom la valeur de lEtiquette tasksuser_id_assign_by . Maintenant que vous avez modifi par programmation la valeur de lEtiquette user_id_assign_by pour produire le Nom de lEmploy au lieu de son ID, vous allez avoir besoin de spcifier que ce champ est dsormais un champ Texte, et non un champ Numrique. 1 - Cliquez sur longlet Donnes dans la fentre Proprits. 2 - Slectionnez Text en tant que Data Type (Type de Donnes).

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 51 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 3
Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches
Vous avez prcdemment utilis lvnement Before Show pour afficher le nom de la personne qui est attribue une tche. Cependant, les champs Etiquette ne peuvent pas tre mis jour de par leur nature, alors bien que le nom de lemploy soit affich sur la page, il nest pas crit dans la base de donnes. Dans la mesure o nous voulons que la base de donnes enregistre le nom ou lID de la personne qui soumet une tche, nous allons devoir ajouter la logique de programmation pour effectuer cela. 1 - Ajoutez un champ Cach votre page depuis longlet Formulaires de la Bote Outils (Toolbox). Ce type de champ nest pas visible dans le navigateur, mais il sera utilis pour stocker une valeur et mettre jour la base de donnes. 2 - Configurez le nouveau champ en paramtrant ses proprits comme indiqu ci-dessous : Name (Nom) : assigned_by - le nom du champ Cach qui vient dtre ajout. Cela peut tre nimporte quel nom. Control Source : user_id_assign_by - le champ/colonne de la base de donnes qui sera utilis(e) pour rcuprer la valeur du champ et qui sera mis(e) jour avec la nouvelle valeur en cas de changement. Data Type (Type de Donnes) : Integer - le type de la valeur lie au Control Source . Nos ID utilisateur/employ sont numriques. Default (Par Dfaut) : DBUtility.UserId - valeur Default pour ce champ sil est vide. DBUtility .UserId : proprit de CodeCharge qui rcupre lID utilisateur de lutilisateur connect au systme. Ainsi vous pouvez simplement spcifier que vous voulez enregistrer lID de lutilisateur courant dans le champ user_id_assign_by pour chaque nouvelle tche qui sera soumise.

Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement


Maintenant, nous allons ajouter un autre champ Cach votre page, qui sera utilis pour soumettre la date et lheure courantes dans le champ task_start_date dans la base de donnes. 1 - Configurez le nouveau champ comme indiqu ci-dessous : Name (Nom) : date_created Control Source : task_start_date Data Type (Type de Donnes) : Date Default (Par Dfaut) : CurrentDateTime - La valeur CurrentDateTime vous permet dattribuer automatiquement la date et lheure courantes aux nouvelles tches. La proprit Par Dfaut naffecte pas les enregistrements existants, donc la date et lheure des tches existantes ne seront pas modifies lors de mises jour ultrieures.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 52 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

1 - Cliquez sur le champ task_start_date dans lExplorateur de Projet. 2 - Dans la fentre Proprits, paramtrez Default Value (Valeur Par Dfaut) CurrentDateTime. Cest ainsi que le champ Etiquette peut afficher la date bien que le champ Cach ne soit pas visible pour lutilisateur.

Tester les Champs Etiquette et Cach


Pour finir : 1 - Passez en mode Live Page . 2 - Slectionnez ou ajoutez une Tche, et vous voyez alors votre Etiquette afficher le nom de la personne qui a attribu la tche. 3 - La version de base de votre Gestionnaire de Tches est dsormais finalise. Ne pas oublier de sauvegarder !

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 53 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 4
Programmation du Formulaire Enregistrement
Maintenant que vous avez cr une application simple de Gestion de Tches, vous souhaitez certainement ltendre pour quelle soit la fois plus pratique et plus utile. Dans cette section, vous allez avoir un aperu sur la manire dimplmenter des applications pratiques et sophistiques par lajout de code et dactions, ceci afin doffrir des fonctionnalits supplmentaires votre Gestionnaire de Tches. Vous allez apprendre : Envoyer des notifications demail la personne qui la tche est attribue, Autoriser seulement la personne qui la tche est attribue la modifier.

Ajouter du Code dans lEvnement After Inser t pour Envoyer des Emails
1 - Slectionnez le formulaire tasks dans la page tasks_maint en le slectionnant depuis lExplorateur de Projet, ou en cliquant nimporte o dans la lgende du formulaire. 2 - Dans la fentre Proprits, cliquez sur longlet Evnements. 3 - Slectionnez lvnement After Insert. 4 - Cliquez sur le bouton [+]. 5 - Slectionnez Ajouter du Code...

Une fois en mode Visualisation du Code , remplacez le commentaire gnr : C# ' Write your own code here. VB.Net ' Write your own code here.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 54 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Par le code ci-dessous : C# SqlCommand userEmail = new SqlCommand( "SELECT email FROM" + "employees WHERE emp_id=" + DBUtility.UserId, Settings.IntranetDBDataAccessObject );

SqlCommand assignedUserEmail = new SqlCommand( "SELECT email FROM" + "employees WHERE emp_id=" + item.user_id_assign_to.Value.ToString(), Settings.IntranetDBDataAccessObject );

SqlCommand taskId = new SqlCommand( "SELECT max(task_id) FROM" + "tasks WHERE user_id_assign_by=" + DBUtility.UserId, Settings.IntranetDBDataAccessObject );

System.Web.Mail.MailMessage newMessage = new System.Web.Mail.MailMessage();

newMessage.From = userEmail.ExecuteScalar().ToString(); newMessage.To = assignedUserEmail.ExecuteScalar().ToString(); newMessage.Subject = "New task for you!"; newMessage.BodyFormat = System.Web.Mail.MailFormat.Html; newMessage.Body = "The following task was submitted:<br><br>" + "Task ID :"+ taskId.ExecuteScalar().ToString() + "<br><br>"+ item.task_desc.Value;

System.Web.Mail.SmtpMail. SmtpServer = "localhost"; System.Web.Mail.SmtpMail.Send(newMessage);

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 55 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) VB.Net Dim userEmail, assignedUserEmail, taskId As String

userEmail = Convert.ToString(Settings.IntranetDBDataAccessObject.ExecuteScalar("SELECT email FROM employees WHERE emp_id=" & DBUtility.UserId))

assignedUserEmail = Convert.ToString(Settings.IntranetDBDataAccessObject.ExecuteScalar("SELECT email FROM employees WHERE emp_id=" & Convert.ToString(item.user_id_assign_to.Value)))

taskId = Convert.ToString(Settings.IntranetDBDataAccessObject.ExecuteScalar("SELECT max(task_id) FROM tasks WHERE user_id_assign_by=" & DBUtility.UserId))

Dim newMessage As New System.Web.Mail.MailMessage()

newMessage.From = userEmail newMessage.To = assignedUserEmail newMessage.Subject = "New task for you!" newMessage.BodyFormat = System.Web.Mail.MailFormat.Html newMessage.Body = "The following task was submitted:<br><br> Task ID :" & taskId & "<br><br>" & item.task_desc.Value

System.Web.Mail.SmtpMail. SmtpServer = "localhost" System.Web.Mail.SmtpMail.Send(newMessage) Comme vous pouvez le constater, le code ci-dessus envoie des emails aux utilisateurs qui de nouvelles tches sont attribues. Voici des informations que vous devez connatre : 1 - Le code ci-dessus utilise les classes fournies par le framework .NET pour envoyer des e-mails, aussi vous navez pas besoin dinstaller des composants supplmentaires. 2 - Les classes du framework .NET reposent sur le composant CDO pour envoyer des e-mails ; par consquent vous avez besoin dun service SMTP install sur le serveur hbergeant cette application. Ce qui suit est une explication du code du dessus : SqlCommand userEmail = new SqlCommand("SELECT email FROM" + "employees WHERE emp_id=" + DBUtility.UserId, Settings.IntranetDBDataAccessObject ); SqlCommand assignedUserEmail = new SqlCommand( "SELECT email FROM" + "employees WHERE emp_id=" + item.user_id_assign_to.Value.ToString(), Settings.IntranetDBDataAccessObject );
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 56 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

SqlCommand taskId = new SqlCommand( "SELECT max(task_id) FROM" + "tasks WHERE user_id_assign_by=" + DBUtility.UserId , Settings.IntranetDBDataAccessObject ); Dans le code du dessus trois objets SqlCommand sont dfinis. Comme vous devez vous en souvenir, ces objets sont utiliss pour excuter des requtes de la base de donnes. Le premire requte SQL est utilise pour rcuprer ladresse email de lutilisateur connect. La seconde requte SQL rcupre ladresse email de lutilisateur qui la tche est attribue. La proprit user_id_assign_to de lobjet item est utilise pour obtenir lID de lutilisateur qui la tche est attribue. Enfin, la dernire requte SQL est utilise pour obtenir lID de la tche. Le dernier ID insr de tche peut tre obtenu en utilisant diffrentes mthodes avec diffrentes bases de donnes. Malheureusement, Microsoft Access ne supporte pas la rcupration du dernier enregistrement insr ; donc vous allez avoir besoin dutiliser lobjet SqlCommand pour consulter le plus grand ID de tche soumis par lutilisateur connect (en supposant que les ID de tches sont crs par incrmentation). System.Web.Mail.MailMessage newMessage = new System.Web.Mail.MailMessage(); Cr un objet MailMessage, qui est sous lespace de nommage System.Web.Mail. newMessage.From = userEmail.ExecuteScalar().ToString(); newMessage.To = assignedUserEmail.ExecuteScalar().ToString(); newMessage.Subject = "New task for you!"; newMessage.BodyFormat = System.Web.Mail.MailFormat.Html; newMessage.Body = "The following task was submitted:<br><br>" + "Task ID :"+ taskId.ExecuteScalar().ToString() + "<br><br>"+ item.task_desc.Value; Le code du dessus excute la requte de la base de donnes et positionne les diverses proprits de lobjet MailMessage. Positionnez la proprit " BodyFormat" de lobjet MailMessage Html, ce qui permettra denvoyer un contenu au format HTML (et non au format texte brut). Le corps de email comprend la description de la tche et de lID de tche. System.Web.Mail.SmtpMail. SmtpServer = "localhost" System.Web.Mail.SmtpMail.Send(newMessage); Positionnez ladresse du serveur SMTP qui sera utilis pour envoyer lemail, puis utilisez la mthode statique Send de la classe SmtpMail pour envoyer lemail. Si vous navez pas de serveur SMTP sur votre machine en local, vous pouvez entrer ladresse dun serveur SMTP externe auquel vous avez accs (mail.yourdomain.com).

Utiliser lEvnement After Update pour Envoyer des Emails


Vous avez prcdemment ajout le code ncessaire qui envoie une notification demail la personne qui la tche est attribue, une fois lenregistrement dune nouvelle tche effectue dans le systme. Maintenant, il nous faut implmenter une fonctionnalit similaire dans lvnement After Update pour informer la personne qui la tche est attribue, lorsquune tche existante est mise jour et rattribue quelquun dautre. 1 - Cliquez sur le formulaire tasks dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez le Custom Code (Code Personnalis) dans lvnement After Update :

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 57 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) C# if(DBUtility.UserId.ToString() != item.user_id_assign_to.Value.ToString()) { SqlCommand userEmail = new SqlCommand("SELECT email FROM" + "employees WHERE emp_id=" + DBUtility.UserId, Settings.IntranetDBDataAccessObject); SqlCommand assignedUserEmail = new SqlCommand("SELECT email FROM" + "employees WHERE emp_id=" + item.user_id_assign_to.Value.ToString(), Settings.IntranetDBDataAccessObject); System.Web.Mail.MailMessage newMessage = new System.Web.Mail.MailMessage(); newMessage.From = userEmail.ExecuteScalar().ToString(); newMessage.To = assignedUserEmail.ExecuteScalar().ToString(); newMessage.Subject = " A task was assigned to you"; newMessage.BodyFormat = System.Web.Mail.MailFormat.Html; newMessage.Body = "The following task was assigned to you:<br><br>" + "Task ID :" + Request.QueryString["task_id"].ToString() + "<br><br>"+ item.task_desc.Value; System.Web.Mail.SmtpMail. SmtpServer = "localhost"; System.Web.Mail.SmtpMail.Send(newMessage ); }

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 58 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) VB.Net If Convert.ToString (DBUtility.UserId) <> Convert.ToString(item.user_id_assign_to.Value) Then

Dim userEmail, assignedUserEmail As String userEmail = Convert.ToString(Settings.IntranetDBDataAccessObject.ExecuteScalar("SELECT email FROM employees WHERE emp_id=" & DBUtility.UserId)) assignedUserEmail = Convert.ToString(Settings.IntranetDBDataAccessObject.ExecuteScalar("SELECT email FROM employees WHERE emp_id=" & Convert.ToString(item.user_id_assign_to.Value)))

Dim newMessage As New System.Web.Mail.MailMessage()

newMessage.From = userEmail newMessage.To = assignedUserEmail newMessage.Subject = "A task was assigned to you" newMessage.BodyFormat = System.Web.Mail.MailFormat.Html NwMessage.Body = "The following task was assigned to you :<br><br> Task ID :" & Convert.ToString(Request.QueryString("task_id")) & "<br><br>" & item.task_desc.Value

System.Web.Mail.SmtpMail. SmtpServer = "localhost" System.Web.Mail.SmtpMail.Send(newMessage)

End if Les principales diffrences entre le code ci-dessus et celui utilis dans lvnement After Insert sont les suivantes : 1 - Une condition if a t ajoute pour envoyer un email seulement si un utilisateur attribue une tche une autre personne. 2 - task_id est rcupr depuis lURL utilisant lindexeur Request.QueryString . Nous pouvons utiliser cette mthode parce que des tches peuvent tre mises jour seulement si lutilisateur est arriv la page en cours par une URL qui contient un ID de tche mettre jour. Une telle URL ressemble : http://localhost/TaskManager/tasks_maint.aspx?task_id=9

Test de lEnvoi dEmail


Avant de tester lenvoi demail : 1 - Vous devez ajouter de nouveaux utilisateurs votre base de donnes avec des adresses email correctes, ou modifier les utilisateurs existants en changeant leur adresse email : A - Vous pouvez le faire en ouvrant la base de donnes Intranet.mdb qui se trouve dans votre rpertoire projet. B - Sinon, vous pouvez utiliser le Gestionnaire de Tches. Allez la page Employs pour y visualiser les emails utilisateur et les modifier. 2 - Une fois vos utilisateurs configurs avec le test demails, sauvegardez votre projet et passez en mode Live Page pour tester votre systme.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 59 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Remarque : Vous aurez besoin de Microsoft Access 2000 ou une version suprieure pour diter manuellement le fichier bas e de donnes. Si votre code email fonctionne correctement, vous devez alors vous retrouver sur la page Liste de Tches aprs lajout ou la modification dune tche, et la personne qui la tche a t attribue doit recevoir un email.

Etape 5
Implmenter la Scurit dEnregistrement dans lEvnement After Initialize
Votre Gestionnaire de Tches est dsormais pratiquement complet, seule une fonctionnalit pouvant savrer importante manque, savoir la Scurit. En ltat actuel nimporte qui peut modifier et supprimer nimporte quelle tche. Vous voudrez certainement limiter laccs pour que seuls les employs autoriss puissent mettre jour leurs tches. Il y a plusieurs faons de procder, et nous allons examiner plusieurs dentre elles. 1 - Cliquez sur la page tasks_maint dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez Custom Code (Code Personnalis) lvnement After Initialize de la page. Procdez comme suit : C# // Write your own code here. VB.Net ' Write your own code here. Avec le code ci-dessous : C# if(Request.QueryString["task_id"] != null) { SqlCommand taskCmd = new SqlCommand("SELECT user_id_assign_to FROM" + "tasks WHERE task_id=" + Request.QueryString["task_id"], Settings.IntranetDBDataAccessObject ); int assignedUserId = (int)taskCmd.ExecuteScalar();

if(int.Parse(DBUtility.UserId.ToString()) != assignedUserId) { tasksHolder.Visible = false; //Response.Redirect("tasks_list.aspx"); } }

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 60 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) VB.Net if Request.QueryString("task_id") <> " " Then Dim assignedUserId As Integer

assignedUserId = Settings.IntranetDBDataAccessObject.ExecuteScalar("SELECT user_id_assign_to FROM tasks WHERE task_id=" & Request.QueryString("task_id"))

if Convert.ToInt32(DBUtility.UserId) <> assignedUserId Then tasksHolder.Visible = false; `Response.Redirect( "tasks_list.aspx" ) End if End if Le code du dessus permet de tester les mthodes suivantes pour implmenter la scurit denregistrement : Ne pas montrer la tche (formulaire Enregistement) sur la page si la tche slectionne nappartient pas lutilisateur connect. Un utilisateur non autoris verra une page blanche. Vous pouvez cacher nimporte quel formulaire sur une page en attribuant une valeur false (faux) la proprit Visible (visible) de la page dont le formulaire dpend. Tout dabord, vrifiez la prsence de la variable query string task_id, qui prcise le mode du formulaire Enregistrement (mode Mise jour ou Suppression), puisque vous voulez limiter les droits des utilisateurs : visualisation et modification des tches qui leur sont attribues. Le bloc if sassure que tous les utilisateurs peuvent crer de nouvelles tches. Vous pouvez tester cette fonctionnalit en insrant le code du dessus dans lvnement, puis en passant en mode Live Page et en essayant de modifier une tche qui ne vous est pas attribue et dans ce cas, vous verrez une page vide (seulement avec un en-tte). Bien quune telle fonctionnalit ne soit pas trs utile, elle illustre comment vous pouvez cacher les formulaires sur une page. Ajoutez un autre formulaire enregistrement votre page, qui ne puisse pas tre mis jour et qui ait seulement des champs Etiquette qui montre les informations relatives aux tches. Une fois que vous avez deux formulaires sur la mme page, vous pouvez cacher chaque formulaire par programmation en utilisant des critres dexclusion. Rediriger les utilisateurs non autoriss sur une autre page. Seuls les utilisateurs qui sont attribues des tches peuvent visualiser la page. Vous pouvez mettre en application et tester cette fonctionnalit en modifiant lgrement le code du dessus comme montr cidessous :

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 61 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) C# if(Request.QueryString["task_id"] != null) { SqlCommand taskCmd = new SqlCommand( "SELECT user_id_assign_to FROM" + "tasks WHERE task_id=" + Request.QueryString["task_id"], Settings.IntranetDBDataAccessObject );

int assignedUserId = (int)taskCmd.ExecuteScalar();

if(int.Parse(DBUtility.UserId.ToString()) != assignedUserId) { //tasksHolder.Visible = false; Response.Redirect("tasks_list.aspx");

} VB.Net if Request.QueryString("task_id") <> " " Then Dim assignedUserId As Integer

assignedUserId = Settings.IntranetDBDataAccessObject.ExecuteScalar("SELECT user_id_assign_to FROM tasks WHERE task_id=" & Request.QueryString("task_ id"))

if Convert.ToInt32(DBUtility.UserId) <> assignedUserId Then; `taskHolder.Visible = false Response.Redirect("tasks_list.aspx") End if End if Le code ci-dessus indique que vous devez commenter la ligne prcdemment active et activer la ligne qui commence avec Response.Redirect. La mthode Redirect de lobjet Response est utilise pour rediriger lutilisateur sur une nouvelle page. Vous pouvez simplement attribuer la page de destination la mthode Redirect et la page sera alors automatiquement redirige. Pour tester cette fonctionnalit : modifiez le code tel que montr, passez en mode Live Page , puis essayez de modifier une tche qui ne vous est pas attribue.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 62 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

JSP
Extension des Fonctionnalits de lApplication avec la Programmation dEvnements ( JSP)
Vous avez certainement remarqu que jusqu prsent vous avez construit votre Gestionnaire de Tches sans avoir vous proccuper du code. En effet, CodeCharge Studio peut vous aider construire des systmes fonctionnels sans programmation ; toutefois la cration de systmes plus sophistiqus requiert un minimum de programmation. Heureusement, CodeCharge Studio facilite la programmation en proposant un diteur de code de haut niveau, en plus des Evnements et des Actions qui vous aident insrer des morceaux de code pr-programms dans le programme. Voici les dfinitions dune Action et dun Evnment : Action Composant de gnration de code dfinissable par lutilisateur, qui insre un bloc de code dans une procdure vnementielle. CodeCharge Studio est fourni avec de nombreuses Actions pr-dfinies, qui se trouvent dans le dossier suivant : (CCS folder)\Components\Actions. Intrieurement, les actions consistent en du code XML et XSL pouvant tre facilement personnalis. Par exemple, une action peut tre paramtre sur un Textbox pour valider une adresse e-mail. Procdure Evnementielle Une procdure automatiquement excute en rponse un vnement lanc par un programme son excution. Les vnements sont les meilleurs emplacements pour mettre du Code Personnalis (Custom Code) .

Etape 1
Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte
Dmarrons la programmation basique avec une tche simple de changement de la couleur dun champ grille sur notre page Liste de Tches. Concrtement, nous allons mettre en vidence les tches qui vous sont attribues en affichant votre nom en bleu dans la grille. 1 - Ouvrez la page tasks_list dans lExplorateur de Projet. 2 - Ouvrez larborescence de la grille tasks. 3 - Fates un clic droit sur le champ emp_login1 et slectionnez Proprits. 4 - Dans longlet Donnes, paramtrez la valeur de la proprit Name (Nom) user_id_assign_to . 5 - Dans lExplorateur Projet, fates un clic droit sur le champ task_name et slectionnez Proprits. 6 - Dans longlet Donnes, paramtrez la valeur de la proprit Content (Contenu) HTML. 7 - Slectionnez la grille tasks dans lExplorateur de Projet, ou cliquez nimporte o dans la lgende du formulaire. 8 - Slectionnez longlet Evnements dans la fentre Proprits. 9 - Fates un clic droit sur lvnement Before Show Row et slectionnez Ajouter du Code... . Lvnement Before Show Row se dclenche dans le programme aprs que les valeurs champ soient attribues, mais avant dtre gnres en HTML. En ajoutant du code dans cet vnement, vous pouvez modifier la valeur champ avant quelle ne soit montre.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 63 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Contrler par Programmation la Valeur Champ


Une fois que vous avez ajout du Code Personnalis (Custom Code) lEvnement, vous verrez la fentre ddition du code avec lemplacement appropri pour entrer le nouveau code. Remplacez la ligne de code suivante : /* Write your own code here. */ par : String value = e.getControl().getFormattedValue(); String login = Utils.getUserLogin(e.getPage()); if ( value != null && value.equals(login)) { e.getControl().setFormattedValue("<b><font color=\"blue\">"+ value + "</font></b>"); } Voyons comment le code JSP du dessus fonctionne : String value = e.getControl().getFormattedValue(); String login = Utils.getUserLogin(e.getPage()); if ( value != null && value.equals(login)) { Les lignes du dessus prpare et excute la condition " if" (si) qui vrifie si la valeur du contrle en cours ( user_id_assign_to) est gale au nom du login utilisateur. Une fois connect au systme, le programme reconnatra vos tches en comparant votre nom de login la valeur emp_login de la personne qui la tche est attribue. La mthode Utils.getUserLogin(Page) est une des mthode statique auxiliaire dans la classe Utils, et elle conserve le nom de Login de la session utilisateur en cours jusqu son expiration. Note : Ce qui suit sont des diffrentes fonctions trs utiles de la classe Utils : getUserId(Page) : la valeur champ cl primaire de la session utilisateur getUserLogin(Page) : le nom de Login de lutilisateur connect au systme getUserGroup(Page) : le niveau/groupe de scurit de lutilisateur connect au systme Le paramtre Page est requis pour accder lobjet Session dans lequel ces valeurs sont en fait stockes. e.getControl().setFormattedValue("<b><font color=\"blue\">" + value + "</font></b>");

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 64 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Ce code est excut si la condition prcdente "if" est rencontr. Elle modifie la valeur du contrle (user_id_assign_to). La valeur champ est remplace avec la valeur du nom du login utilisateur encapsul dans du code HTML qui spcifie la couleur de police (le bleu), et ajoute un tag HTML <b> pour obtenir une police en gras. Vous remarquerez que le mot blue a des double guillemets, qui seront remplacs par un guillemet simple lexcution. Dans la mesure o les guillemets marquent le dbut et la fin de la chane de caractres, lutilisation de double guillemet permet dinsrer un guillemet dans une chane de caractres.

Prvisualiser la Page Liste de Tches


1 - Sauvegardez votre projet. 2 - Passez en mode Live Page pour visualiser votre page fonctionnelle. Si aucun nom de tche nest mis en vidence dans la colonne ("Assigned To"), cest que vous ntes probablement pas connect(e) au systme. 3 - Le menu ne contenant pas encore de lien la page Login, vous pouvez y accder en essayant douvrir une des pages restreintes, par exemple la page Maintenance de Tches. 4 - Cliquez sur nimporte lequel des ID projet, et vous devriez voir la page Login. 5 - Connectez-vous en tant que george/george, 6 - Cliquez sur le lien Tasks sur le menu pour retourner la page Liste de Tches. Maintenant, vous devriez voir que certaines tches sont mises en vidence ; ces tches correspondent aux tches de lutilisateur pour lequel vous avez ouvert une session.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 65 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 2
Modifier un Champ Etiquette sur la Page Maintenance de Tches
Maintenant procdons une modification ncessaire sur la page Maintenance de Tches sur laquelle vous avez d remarqu que le champ Etiquette Assigned By naffiche pas le nom de lemploy, mais lID utilisateur, comme montr ci-dessous ; cest parce que la table employees contient le nom de lutilisateur, juste comme la ListBox Assigned To affiche les noms des employs dune autre table.

Il y a plusieurs mthodes possibles pour traiter de la question. Merci de vous rfrer aux explications qui suivent : 1 - Crez une Requte qui contient plusieurs tables et qui peut tre utilise en tant que source de donnes par le formulaire Enregistrement. Malheureusement, des requtes qui contiennent plusieurs tables ne peuvent pas tre mises jour de par leur nature, et donc votre formulaire Enregistrement entier peut sarrter de fonctionner. En dautres termes, si vous avez indiqu que vous vouliez utiliser une requte contenant une table tasks et employees dans votre formulaire Enregistrement, alors si vous attribuez une tche quelquun dautre, le programme ne pourra pas savoir si vous vouliez mettre jour la table tasks avec le nouveau employee_id, ou si vous vouliez mettre jour la table employees et changer le nom de lemploy. Ainsi, si vous utilisez plusieurs tables comme source de donnes pour le formulaire Enregistrement, vous devrez galement dfinir les oprations Custom Insert , Custom Update et Custom Delete dans les proprits du formulaire Enregistrement pour indiquer quels champs de la base de donnes devront tre mis jour avec les valeurs correspondantes saisies sur la page. Cette mthode semble en effet reprsenter beaucoup deffort juste pour affiche r une valeur supplmentaire sur la page. 2 - Utilisez une Procdure Evnementielle pour insrer du Code Personnalis (Custom Code) o vous pourrez produire la valeur dsire par programmation. Cette mthode est trs flexible, dans la mesure o elle vous p ermet dtendre le code gnr par lajout de votre propre code. Ltape qui suit dcrit en dtail cette mthode.

Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette


1 - En mode Conception, slectionnez lEtiquette user_id_assign_by,
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 66 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 2 - Dans la fentre Proprits, cliquez sur longlet Evnements. 3 - Fates un clic droit sur lvnement Before Show et slectionnez Ajouter du Code... . CodeCharge Studio va alors automatiquement passer en mode Visualisation du Code .

Une fois en mode Visualisation du Code , vous devriez voir les lignes de code suivantes : //user_id_assign_by Label Handler Head @13-91DFA71C--> public class tasksuser_id_assign_byLabelHandler implements LabelListener { public void beforeShow(CCSEvent e) { //End user_id_assign_by Label Handler Head--> //Event BeforeShow Action Custom Code @13-4EFC2132--> /* Write your own code here. */ //End Event BeforeShow Action Custom Code--> //user_id_assign_by Label Handler Tail @13-F5FC18C5--> } } //End user_id_assign_by Label Handler Tail--> 2 - Remplacez le texte : /* Write your own code here. */

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 67 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) par : if (e.getRecord().isEditMode()) { e.getControl().setValue(DBTools.dLookUp("emp_name", "employees", "emp_id=" + DBTools.toSql(e.getControl().getFormattedValue(),JDBCConnection.INTEGER,"IntranetDB"), "IntranetDB")); } else { e.getControl().setValue(DBTools.dLookUp("emp_name","employees", "emp_id="+ DBTools.toSql(Utils.getUserId(e.getPage()),JDBCConnection.INTEGER,"IntranetDB") , "IntranetDB")); } Dans le code du dessus, le premier bloc "if" vrifie si le formulaire Enregistrement en cours est en mode mise jour, et si tel est le cas, il rcupre le nom de lemploy appropri, et lui attribue la valeur de contrle en cours. Si le formulaire nest pas en mode mise jour, le nom de la session utiliateur en cours est attribu comme valeur de contrle. Les lments suivants constituent le code : e : le pointeur de lEtiquette user_id_assign_by , pour laquelle lvnement est appel. getFormatedValue and setFormatedValue : les mthodes qui lisent et modifient la valeur du contrle (dans ce cas lEtiquette). Ces mthodes utilisent en option un paramtre qui spcifie si une valeur doit tre convertie en un nombre (Entier) ou en du texte (Chane de caractres). isEditMode : proprit du formulaire (parent du contrle), qui spcifie si lenregistrement peut tre dit/mis jour. En fonction de la valeur de cette proprit, nous affichons soit le nom de la personne qui a initialement soumis la tche (mode Mise jour), ou celui de la personne qui soumet la tche (mode Insertion). getOneRow : une mthode qui rcupre une valeur de base de donnes base sur une requte SQL. Ici, cette mthode rcupre le nom de lEmploye (emp_name) dans la table employees en utilisant la condition suivante : la cl (emp_id) est gale la valeur courante de lEtiquette. IntranetDB : le nom de la connexion objet pooled qui dfinit la connexion base de donnes utilises pour rcuprer le nom de lemploy. Utils.getUserId(e.getPage()) : une mthode qui rcupre la valeur de la session " UserID", qui contient lID de lutilisateur connect au systme. Le morceau de code se lit aprroximativement comme suit : If record is being edited : Attribue le nom de la personne qui a initialement soumis la question lEtiquette user_id_assign_by, en cherchant le nom de lemploy dans la table employees utilisant la connexion IntranetDB et la valeur de lEtiquette user_id_assign_by. If new record is being created : Attribue un utilisateur connect lEtiquette user_id_assign_by en rcuprant son nom dans la table employees utilisant la connexion IntranetDB et la session "UserID" qui contient lID utilisateur courant. Maintenant que vous avez modifi par programmation la valeur de lEtiquette tasksuser_id_assign_by pour sortir le nom de lemploy la place de lID, vous allez devoir spcifier que ce champ est un champ Texte, et non plus un champ Numrique. 1 - Cliquez sur longlet Donnes dans la fentre Proprits. 2 - Slectionnez Text en tant que Data Type (Type de Donnes).

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 68 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 3
Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches
Vous avez prcdemment utilis lvnement Before Show pour afficher le nom de la personne qui est attribue une tche. Cependant, les champs Etiquette ne peuvent pas tre mis jour de par leur nature, alors bien que le nom de lemploy soit affich sur la page, il nest pas crit dans la base de donnes. Dans la mesure o nous voulons que la base de donnes enregistre le nom de lID de la personne qui soumet une tche, nous allons donc devoir ajouter la logique de programmation. 1 - Ajoutez un champ Cach votre page depuis longlet Formulaires de la Bote Outils (Toolbox). Ce type de champ nest pas visible dans le navigateur, mais il sera utilis pour stocker une valeur et mettre jour la base de donnes. 2 - Configurez le nouveau champ en paramtrant ses proprits comme indiqu ci-aprs : Name (Nom) : assigned_by - le nom du champ Cach qui vient dtre ajout. Cela peut tre nimporte quel nom. Control Source : user_id_assign_by - le champ/colonne de la base de donnes qui sera utilis(e) pour retrouver la valeur du champ et qui sera mis(e) jour avec la nouvelle valeur en cas de changement. Data Type (Type de Donnes) : Integer - le type de la valeur lie au Control Source . Nos ID utilisateur/employ sont numriques. Default (Par Dfaut) : Utils.getUserId(e.getPage()) - Valeur Default pour ce champ sil est vide. Ce code rcupre lID utilisateur de la session en cours. Ainsi vous pouvez simplement indiquer que vous voulez enregistrer lID de lutilisateur connect dans le champ user_id_assign_by pour chaque nouvelle tche qui sera soumise.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 69 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement


Maintenant, ajoutez un autre champ Cach votre page, qui sera utilis pour soumettre la date et lheure courantes dans le champ task_start_date dans la base de donnes. Configurez le nouveau champ comme indiqu ci-dessous : Name (Nom) : date_created Control Source : task_start_date Data Type (Type de Donnes) : Date Default (Par Dfaut) : CurrentDateTime - La valeur CurrentDateTime vous permet dattribuer automatiquement la date et lheure courantes aux nouvelles tches. La proprit Default naffecte pas les enregistrements existants, donc la date et lheure des tches existantes ne seront pas modifies lors des mises jour.

Tester les Champs Etiquette et Cach


Pour terminer : 1 - Passez en mode Live Page . 2 - Slectionnez ou ajoutez une Tche, et vous voyez alors votre Etiquette afficher le nom de la personne qui a attribu la tche. 3 - La version de base de votre Gestionnaire de Tches est dsormais finalise. Ne pas oublier de sauvegarder !

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 70 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 4
Programmation du Formulaire Enregistrement
Maintenant que vous avez cr une application simple de Gestion de Tches, vous souhaitez certainement ltendre pour quelle soit la fois plus pratique et plus utile Dans cette section, vous allez avoir un aperu sur la manire dimplmenter des applications pratiques et sophistiques par lajout de code et dactions, ceci afin doffrir des fonctionnalits supplmentaires votre Gestionnaire de Tches. Vous allez apprendre : Envoyer des notifications demail la personne qui la tche est attribue, Autoriser seulement la personne qui la tche est attribue la modifier.

Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails
1 - Slectionnez le formulaire tasks en le slectionnant depuis lExplorateur de Projet, ou en cliquant nimporte o dans la lgende du formulaire. 2 - Dans la fentre Proprits, cliquez sur longlet Evnements. 3 - Slectionnez lvnement After Insert. 4 - Cliquez sur le bouton [+]. 5 - Slectionnez Ajouter du Code...

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 71 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Une fois en mode Visualisation du Code , remplacez le commentaire gnr : ' Write your own code here. Par le code ci-dessous : String uid = Utils.getUserId(e.getPage()); String from = (String)DBTools.dLookUp("emp_name", "employees", "emp_id=" + uid, "IntranetDB"); String to = (String)DBTools.dLookUp("email", "employees", "emp_id=" + e.getRecord().getControl("user_id_assign_to").getFormattedValue(), "IntranetDB"); String host = "mysmtphost.com"; String subject = "New task for you"; String body = "The following task was submitted:<br><br>" + "Task ID:" + DBTools.dLookUp("max(task_id)", "tasks", "user_id_assign_by=" + uid, "IntranetDB") + "<br><br>" + e.getRecord().getControl("task_desc").getFormattedValue(); SimpleMailer.sendEmail(from, to, subject, body, true, host); Comme vous avez d vous en rendre compte, le code du dessus permet denvoyer des emails aux utilisateurs qui de nouvelles tches sont attribues. Voici une explication du code : String uid = Utils.getUserId(e.getPage()); Positionne la variable uid la valeur de lID utilisateur de lutilisateur connect. La fonction statique Utils.getUserId est utilise pour rcuprer lID utilisateur en cours. String from = (String)DBTools.dLookUp("emp_name", "employees", "emp_id=" + uid); Positionne la variable from (expditeur) la valeur du champ emp_name pour lutilisateur en cours. La fonction statique DBTools.dLookUp est utilise pour rcuprer la valeur de base de donnes. String to = (String)DBTools.dLookUp("email", "employees", "emp_id=" + e.getRecord().getControl("user_id_assign_to").getFormattedValue()); Positionne la variable to (destinataire) lemail de la personne qui est attribue la tche. La fonction dLookUp est utilise ici pour rcuprer ladresse email approprie.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 72 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) String host = "mysmtphost.com"; Le serveur SMTP par lequel lemail sera envoy. String subject = "New task for you"; Lobjet de lemail envoyer. String body = "The following task was submitted:<br><br>" + "Task ID:" + DBTools.dLookUp("max(task_id)", "tasks", "user_id_assign_by=" + uid + "<br><br>" + e.getRecord().getControl("task_desc").getFormattedValue(); La variable body (corps) contient le corps de lemail envoyer. La fonction dLookUp est utilise pour rcuprer le plus grand ID de tche soumis par lutilisateur connect (en supposant que les ID de tche soient crs par incrmentation). SimpleMailer.sendEmail(from, to, subject, body, true, host); Envoie lemail en utilisant les variables cres dans le code du dessus. Le cinquime argument indique que lemail sera envoy au format HTML (et non pas au format texte brut).

Utiliser lEvnement After Update pour Envoyer des Emails


Vous avez prcdemment ajout le code ncessaire qui envoie une notification demail la personne qui la tche est attribue, une fois lenregistrement dune nouvelle tche effectue dans le systme. Maintenant, il nous faut implmenter une fonctionnalit similaire dans lvnement After Update pour informer la personne qui la tche est attribue, lorsquune tche existante est mise jour et rattribue quelquun dautre. 1 - Cliquez sur le formulaire tasks dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez le Custom Code (Code Personnalis) dans lvnement After Update : String uid = Utils.getUserId(e.getPage()); if (uid.equals(e.getRecord().getControl("user_id_assign_to").getFormattedValue())) { String from = (String)DBTools.dLookUp("email", "employees", "emp_id=" + uid, "IntranetDB"); String to = (String)DBTools.dLookUp("email", "employees", "emp_id=" + e.getRecord().getControl("user_id_assign_to").getFormattedValue(), "IntranetDB"); String host = "mysmtphost.com"; String subject = "A task was assigned to you"; String body = "The following task was assigned to you:<br><br>"+ "Task ID:"+ e.getPage().getParameter("task_id") + "<br><br>"+ e.getRecord().getControl("task_desc").getFormattedValue(); SimpleMailer.sendEmail(from, to, subject, body, true, host); } Les principales diffrences entre le code ci-dessus et celui utilis dans lvnement After Insert sont les suivantes : 1 - Une condition if a t ajoute pour envoyer un email seulement si un utilisateur attribue une tche une autre personne.
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 73 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 2 - task_id est rcupr depuis lURL en utilisant la fonction getParameter. Nous pouvons utiliser cette mthode parce que des tches peuvent tre mises jour seulement si lutilisateur est arriv la page en cours par une URL qui contient un ID de tche mettre jour. Une telle URL ressemble : http://localhost/TaskManager/tasks_maint.asp?task_id=9

Test de lEnvoi dEmail


Avant de tester lenvoi demail : 1 - Vous devez ajouter de nouveaux utilisateurs votre base de donnes avec des adresses email correctes, ou modifier les utilisateurs existants en changeant leur adresse email : A - Vous pouvez le faire en ouvrant la base de donnes Intranet.mdb qui se trouve dans votre rpertoire projet. B - Autrement, vous pouvez utiliser le Gestionnaire de Tches. Allez la page Employs pour y visualiser les emails utilisateur et les modifier. 2 - Une fois vos utilisateurs configurs avec le test demails, sauvegardez votre projet et passez en mode Live Page pour tester votre systme. Remarque : Vous aurez besoin de Microsoft Access 2000 ou une version suprieure pour diter manuellement le fichier base de donnes. Si votre code email fonctionne correctement, vous devez alors vous retrouver sur la page Liste de Tches aprs lajout ou la modification dune tche, et la personne qui la tche a t attribue doit recevoir un email.

Etape 5
Implmenter la Scurit dEnregistrement dans lEvnement After Initialize
Votre Gestionnaire de Tches est dsormais pratiquement complet, seule une fonctionnalit pouvant savrer importante manque, savoir la Scurit. Dans ltat actuel du gestionnaire, nimporte qui peut modifier et supprimer nimporte quelle tche. Vous voudrez certainement limiter laccs pour que seuls les employs autoriss puissent mettre jour leurs tches. Il y a plusieurs faons de faire, et nous allons examiner plusieurs dentre elles. 1 - Cliquez sur la page tasks_maint dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez Custom Code (Code Personnalis) lvnement After Initialize de la page. Une fois en mode Visualisation du Code , remplacez le commentaire gnr par : /* Write your own code here. */

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 74 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) par le code ci-dessous : String currentTask = e.getPage().getHttpGetParams().getParameter("task_id"); if (!StringUtils.isEmpty(currentTask)) { String uid = Utils.getUserId(e.getPage()); Object task_id = DBTools.dLookUp("user_id_assign_to","tasks","task_id="+DBTools.toSql(currentTask, JDBCConnection.INTEGER, "IntranetDB")); if (!uid.equals(String.valueOf(task_id))) { e.getPage().getRecord("tasks").setVisible(false); // e.getPage().setRedirect("tasks_list.jsp"); // e.getPage().getRecord("tasks").setAllowUpdate(false); // e.getPage().getRecord("tasks").setAllowDelete(false); } } Le code du dessus permet de tester les mthodes suivantes pour implmenter la scurit denregistrement : Ne pas montrer la tche (formulaire Enregistrement) sur la page si la tche slectionne nappartient pas lutilisateur connect. Un utilisateur non autoris verra une page blanche. Vous pouvez cach nimporte quel formulaire sur une page en lui attribuant une valeur false (faux) pour la proprit Visible (Visible) du formulaire avec la mthode setVisible. Le code "if (!StringUtils.isEmpty(currentTask)) " dans la condition "if" indique que le code doit seulement tre excut si un utilisateur essaie de modifier une tche existante, mais qui ne lui est pas attribue. La condition "if" sassure ainsi que tous les utilisateurs peuvent crer de nouvelles tches. Vous pouvez tester cette fonctionnalit en insrant le code du dessus dans lvnement, en passant en mode Live Page et en essayant de modifier une tche qui ne vous est pas attribue et dans ce cas, vous verrez une page vide. Bien quune telle fonctionnalit ne soit pas trs utile, elle montre comment cacher des formulaires sur une page. Ajoutez un autre formulaire Enregistrement sur la page qui ne puisse pas tre mis jour et qui ait seulement des champs Etiquette qui affichent les informations. Une fois que vous avez deux formulaires sur la page, vous pouvez cacher chaque formulaire par programmation en utilisant des critres dexclusion. Rediriger des utilisateurs non autoriss sur une autre page. Seuls les utilisateurs qui une tche est attribue peuvent visualiser la page.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 75 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Vous pouvez mettre en application et tester cette fonctionnalit en modifiant lgrement le code du dessus comme montr ci dessous : String currentTask = e.getPage().getHttpGetParams().getParameter("task_id"); if (!StringUtils.isEmpty(currentTask)) { String uid = Utils.getUserId(e.getPage()); Object task_id = DBTools.dLookUp("user_id_assign_to","tasks","task_id="+DBTools.toSql(currentTask, JDBCConnection.INTEGER, "IntranetDB")); if (!uid.equals(String.valueOf(task_id))) { // e.getRecord().setVisible(false); e.getPage().setRedirect("tasks_list.jsp"); // e.getPage().getRecord("tasks").setAllowUpdate(false); // e.getPage().getRecord("tasks").setAllowDelete(false); } } Le code du dessus montre que vous devez commenter la ligne prcdemment active et activer la ligne qui contient "setRedirect". setRedirect est une mthode utilise par CodeCharge Studio pour dterminer si la page en cours doit tre redirige sur une autre page, par exemple si un utilisateur na pas de session ouverte. Cette variable peut tre utilise seulement sur les pages ayant un accs restreint et qui requirent une authentification de lutilisateur. Vous pouvez simplement attribuer la page de destination en utilisant la mthode setRedirect, et la page sera alors automatiquement redirige. Vous pouvez tester cette fonctionnalit en modifiant le code comme montr, en passant en mode Live Page, et en essayant alors de modifier une tche qui ne vous est pas attribue.

PHP
Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (PHP)
Vous avez certainement remarqu que jusqu prsent vous avez construit votre application de Gestion de Tches sans avoir vous proccuper du code. En effet, CodeCharge Studio peut vous aider construire des systmes fonctionnels sans programmation ; toutefois la cration de systmes plus sophistiqus requiert un minimum de programmation. Heureusement, CodeCharge Studio facilite la programmation en proposant un diteur de code de haut niveau, en plus des Evnements et des Actions qui vous aident insrer des morceaux de code pr-programms dans le programme. Voici les dfinitions dune Action et dun Evnment : Action Composant de gnration de code dfinissable par lutilisateur, qui insre un bloc de code dans une procdure vnementielle. CodeCharge Studio est fourni avec de nombreuses Actions pr-dfinies, qui se trouvent dans le dossier suivant : (CCS folder)\Components\Actions. Intrieurement, les actions consistent en du code XML et XSL pouvant tre facilement personnalis. Par exemple, une action peut tre paramtre sur un Textbox pour valider une adresse e-mail. Procdure Evnementielle Une procdure automatiquement excute en rponse un vnement lanc par un programme son excution. Les vnements sont les meilleurs emplacements pour mettre du Code Personnalis (Custom Code) .
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 76 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Connexion la Base de Donnes ct Serveur en PHP Bien que la connexion en mode Conception (via lutilisateur de lassistant), quand vous utilisez le PHP puisse tre faite une base de donnes Microsoft Access, la connexion ct Serveur doit tre configure diffremment. La base de donne la plus utilise avec le PHP est MySQL ; la connexion ct Serveur doit alors tre configure pour se connecter MySQL. Avant de connecter la base, vous devez tout dabord crer la base. Le dossier examples de linstallation de CodeCharge Studio propose un fichier script MySQL, qui peut tre utilis pour recrer les tables de la base de donnes Intranet.

Etape 1
Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte
Dmarrons la programmation basique avec une tche simple de changement de la couleur dun champ grille sur notre page Liste de Tches. Concrtement, nous allons mettre en vidence les tches qui vous sont attribues en affichant votre nom en bleu dans la grille. 1 - Ouvrez la page tasks_list dans lExplorateur de Projet. 2 - Ouvrez larborescence de la grille tasks. 3 - Fates un clic droit sur le champ emp_login1 et slectionnez Proprits. 4 - Dans longlet Donnes, paramtrez la valeur de la proprit Name (Nom) user_id_assign_to . 5 - Dans lExplorateur Projet, fates un clic droit sur le champ task_name et slectionnez Proprits. 6 - Dans longlet Donnes, paramtrez la valeur de la proprit Content (Contenu) HTML. 7 - Slectionnez la grille tasks dans lExplorateur de Projet, ou cliquez nimporte o dans la lgende du formulaire. 8 - Slectionnez longlet Evnements dans la fentre Proprits. 9 - Fates un clic droit sur lvnement Before Show Row et slectionnez Ajouter du Code... . Lvnement Before Show Row se dclenche dans le programme aprs que les valeurs champs soient attribues, mais avant dtre gnres en HTML. En ajoutant du code dans cet vnement, vous pouvez modifier la valeur champ avant quelle ne soit montre.

Contrler par Programmation la Valeur Champ


Une fois que vous avez ajout votre Code Personnalis (Custom Code) lvnement, vous verrez la fentre ddition du code avec lemplacement appropri pour entrer le nouveau code. Remplacez cette ligne de code : '//Write your own code here. Par ces lignes (PHP) :

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 77 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) global $tasks; if ($tasks->user_id_assign_to->GetValue() == CCGetSession("UserLogin") && strlen(CCGetSession("UserLogin"))) { $tasks->task_name->SetValue("<b><font color=\"blue\">". $tasks->task_name->GetValue()."</font></b>"); } Ce qui suit est une explication sur le fonctionnement du code PHP du dessus : if ($tasks->user_id_assign_to->GetValue() == CCGetSession("UserLogin") && strlen(CCGetSession("UserLogin"))) Cest une condition if (si) qui est vraie seulement si la valeur du champ user_id_assign_to est gale au nom du login de lemploy connect. Le champ de base de donnes employees1_emp_login fournit la valeur pour le champ user_id_assign_to dans le formulaire Grille. Une fois connect au systme, le programme reconnat vos tches en comparant votre nom de login la valeur emp_login de la personne qui une tche est attribuee. UserLogin est une variable de session utilise par les programmes gnrs par CodeCharge, et cette variable conserve le nom de Login de la session utilisateur en cours jusqu son expiration. Note : Il sagit de variable de session cres par dfaut par CodeCharge Studio : UserID : la valeur champ cl primaire de la session utilisateur UserLogin : le nom de Login de lutilisateur connect au systme GroupID : le niveau/groupe de scurit de lutilisateur connect au systme

$tasks->task_name ->SetValue("<b><font color= \"blue\">" . $tasks ->task_name >GetValue()."</font></b>");


Le code est excut si la condition prcdente if est rencontre. Elle modifie la valeur du champ task_name. La valeur du champ est remplace par sa valeur de base de donnes encapsule dans du code HTML qui spcifie la couleur de la police, comme le bleu, et ajoute un tag HTML <b> pour afficher une police en gras. De plus, vous remarquerez que le code est orient objet et vous indiquez que vous voulez attribuer une valeur au champ task_name dans la grille tasks. SetValue est une mthode dun objet, pouvant tre utilise pour modifier la valeur dun objet.

Prvisualiser la Page Liste de Tches


1 - Sauvegardez votre projet. 2 - Passez en mode Live Page pour visualiser votre page fonctionnelle. Si aucun nom de tche nest mis en vidence dans la colonne "Name", cest que vous ntes probablement pas connect(e) au systme. 3 - Le menu ne contenant pas encore de lien la page Login, vous pouvez y accder en essayant douvrir une des pages restreintes, par exemple la page Maintenance de Tches. 4 - Cliquez sur nimporte lequel des ID projet, et vous devriez voir la page Login. 5 - Connectez-vous en tant que george/george, puis cliquez sur le lien Tasks sur le menu pour retourner la page Liste de Tches. Maintenant, vous devriez voir que certaines tches sont mises en vidence ; ces tches correspondent aux tches de lutilisateur pour lequel vous avez ouvert une session.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 78 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 2
Modifier un Champ Etiquette sur la Page Maintenance de Tches
Maintenant procdons une modification ncessaire sur la page Maintenance de Tches sur laquelle vous avez d remarqu que le champ Etiquette Assigned By naffiche pas le nom de lemploy, mais lID, comme montr ci-dessous ; cest parce que la table tasks contient seulement lID utilisateur, alors que la table employees contient les noms des utilisateurs rels.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 79 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Il y a plusieurs mthodes possibles pour traiter de la question. Merci de vous rfrer aux explications qui suivent : 1 - Crez une Requte qui contient plusieurs tables et qui peut tre utilise en tant que source de donnes par le formulaire Enregistrement, comme vous lavez dj fait avec la grille sur la page Liste de Tches. Malheureusement, les requtes qui contiennent plusieurs tables ne peuvent pas tre mises jour de par leur nature, et donc le formulaire Enregistrement entier peut sarrter de fonctionner. En dautres termes, si vous avez indiqu que vous vouliez utiliser une requte contenant une table tasks et employees dans votre formulaire Enregistrement, alors si vous attribuez une tche quelquun dautre, le programme ne pourra pas savoir si vous vouliez mettre jour la table tasks avec le nouveau employee_id, ou si vous vouliez mettre jour la table employees et changer le nom de lemploy. Ainsi, si vous utilisez plusieurs tables comme source de donnes pour le formulaire Enregistrement, vous devrez galement dfinir les oprations Custom Insert , Custom Update et Custom Delete dans les proprits du formulaire Enregistrement pour indiquer quels champs de la base de donnes devront tre mis jour avec les valeurs correspondantes sai sies sur la page. Cette mthode semble reprsenter beaucoup deffort juste pour afficher une valeur supplmentaire sur la page. 2 - Utilisez une Procdure Evnementielle pour insrer du Code Personnalis (Custom Code) o vous pourrez produire la valeur dsire par programmation. Cette mthode est trs flexible, dans la mesure o elle vous permet dtendre le code gnr par lajout de votre propre code. Ltape qui suit dcrit en dtail cette mthode.

Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette


1 - En mode Conception, slectionnez lEtiquette user_id_assign_by, 2 - Dans la fentre Proprits, cliquez sur longlet Donnes. 3 - Slectionnez Text pour la proprit Data Type (Type de Donnes). 4 - Dans la fentre Proprits, cliquez sur longlet Evnements. 5 - Fates un clic droit sur lvnement Before Show et slectionnez Ajouter du Code.... . CodeCharge Studio va alors automatiquement passer en mode Visualisation du Code .

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 80 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Une fois en mode Visualisation du Code, si vous gnrez du PHP, vous devriez voir le fichier tasks_maint_events.php , avec les lignes de code suivantes : //Custom Code @28-73254650 //------------------------//Write your own code here. //------------------------//End Custom Code Remplacez le texte : // Write your own code here. Par : global $tasks; global $DBIntranetDB; if ($tasks->EditMode) { $tasks->user_id_assign_by->SetValue(CCDLookUp("emp_name", "employees", " emp_id=". $DBIntranetDB->ToSQL($tasks->user_id_assign_by->GetValue(), ccsInteger), $DBIntranetDB)); } else { $tasks->user_id_assign_by->SetValue(CCDLookUp("emp_name", "employees", " emp_id=". $DBIntranetDB->ToSQL(CCGetUserID(), ccsInteger), $DBIntranetDB)); } Le code du dessus comprend les lments suivants : tasks : le nom du formulaire Enregistrement sur la page EditMode : proprit du formulaire, qui indique si lenregistrement peut tre dit. En fonction de la valeur de cette proprit, nous affichons soit le nom de la personne qui a initialement soumis la tche (mode Edition), ou de la personne qui soumet la tche (mode Insertion).
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 81 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) user_id_assign_by : le nom de lEtiquette dans la grille et en mme temps le nom du champ de base de donnes qui a t utilis pour crer cette Etiquette, et qui est maintenant sa source de donnes. SetValue : une mthode dun objet (dans ce cas lEtiquette), qui peut tre utilise pour modifier la valeur de lobjet. $tasks->user_id_assign_by->SetValue : mthode SetValue entirement qualifie, qui dit au programme quel objet il se rfre. En dautres termes, cest la mthode SetValue qui affecte le champ user_id_assign_by , qui en retour appartient la grille tasks. CCDLookUp : fonction de CodeCharge qui supporte la rcupration dune valeur de base de donnes sur un nom de champ, un nom de table, et une condition. Ici, cette fonction rcupre le nom de lEmploy (emp_name ) dans la table employees, en utilisant la condition suivante : la cl (emp_id) est gale la valeur courante de lEtiquette. ToSQL : fonction de CodeCharge qui convertit une valeur en un format support par la base de donnes. Cette fonction requiert un paramtre qui dit si une valeur doit tre convertie en un nombre ( Integer) ou en du texte. Dans ce cas, cette fonction convertit la valeur courante de lEtiquette en un nombre pouvant tre utilis avec la fonction CCDLookUp. Il est conseill de toujours utiliser cette fonction avec CCDLookUp. $DBIntranetDB : le nom de lobjet qui dfinit la connexion base de donnes que vous voulez utiliser avec la fonction CCDLookup. CCGetUserID() : fonction de CodeCharge qui retourne lID de lutilisateur connect au systme. Le code se lit approximativement comme suit : If a record is being edited : Attribue le nom de la personne qui a initialement soumis la question lEtiquette user_id_assign_by, par la recherche du nom de lemploy dans la table employees, en utilisant la fonction CCDLookup qui utilise la connexion IntranetDB et la valeur de lEtiquette user_id_assign_by. If a new record is being created : Attribue un utilisateur connect lEtiquette user_id_assign_by en rcuprant son nom dans la table employees et en utilisant la fonction CCDLookUp qui utilise la connexion IntranetDB et la fonction CCGetUserID (qui permet dobtenir lID de lutilisateur connect). Maintenant que vous avez modifi par programmation la valeur de lEtiquette user_id_assign_by pour sortir le Nom de lEmploy au lieu de lID, vous allez devoir indiquer que ce champ est dsormais un champ Texte, et non un champ Numrique. 1 - Cliquez sur longlet Donnes dans la fentre Proprits. 2 - Slectionnez Text en tant que Data Type (Type de Donnes).

Etape 3
Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches
Vous avez prcdemment utilis lvnement Before Show pour afficher le nom de la personne qui est assigne une tche. Cependant, les champs Etiquette ne peuvent pas tre mis jour de par leur nature, alors bien que le nom de lemploy soit affich sur la page, il nest pas crit dans la base de donnes. Comme nous voulons que la base de donnes enregistre le nom ou lID de la personne qui soumet une tche, nous allons devoir ajouter la logique de programmation pour effectuer cela. 1 - Ajoutez un champ Cach votre page depuis longlet Formulaires de la Bote Outils (Toolbox).

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 82 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Ce type de champ nest pas visible dans le navigateur, mais il sera utilis pour stocker une valeur et mettre jour la base de donnes. 2 - Configurez le nouveau champ en paramtrant ses proprits comme indiqu ci-dessous : Name (Nom) : assigned_by - le nom du champ Cach qui vient dtre ajout. Cela peut tre nimporte quel nom. Control Source : user_id_assign_by - le champ/colonne de la base de donnes qui sera utilis(e) pour rcuprer la valeur du champ et qui sera mis(e) jour avec la nouvelle valeur en cas de changement. Data Type (Type de Donnes) : Integer - le type de la valeur lie au Control Source . Nos ID utilisateur/employ sont numriques. Default (par Dfaut) : CCGetUserID( ) - CCGetUserID() est une fonction de CodeCharge qui rcupre lID de lutilisateur connect au systme. Ainsi vous pouvez facilement indiquer que vous voulez enregistrer lID de lutilisateur dans le champ user_id_assign_by pour chaque nouvelle tche qui sera soumise.

Ajouter un Champ Cach "Date Create d" au Formulaire Enregistrement


Maintenant, nous allons ajouter un autre champ Cach votre page, qui sera utilis pour soumettre la date et lheure courantes dans le champ task_start_date dans la base de donnes. 1 - Configurez le nouveau champ comme indiqu ci-dessous : Name (Nom) : date_created Control Source : task_start_date Data Type (Type de Donnes) : Date Default (Par Dfaut) : CurrentDateTime - La valeur CurrentDateTime vous permet dattribuer automatiquement la date et lheure courantes aux nouvelles tches. La proprit Par Dfaut naffecte pas les enregistrements existants, donc la date et lheure des tches existantes ne seront pas modifies lors de mises jour ultrieures.

1 - Cliquez sur le champ task_start_date dans lExplorateur de Projet.


Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 83 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 2 - Dans la fentre Proprits, paramtrez Default Value (Valeur Par Dfaut) CurrentDateTime. Cest ainsi que le champ Etiquette peut afficher la date bien que le champ Cach ne soit pas visible pour lutilisateur.

Tester les Champs Etiquette et Cach


Pour terminer : 1 - Passez en mode Live Page . 2 - Slectionnez ou ajoutez une Tche, et vous voyez alors votre Etiquette afficher le nom de la personne qui a attribu la tche. 3 - La version de base de votre Gestionnaire de Tches est dsormais finalise. Ne pas oublier de sauvegarder !

Etape 4
Programmation du Formulaire Enregistrement
Maintenant que vous avez cr une application simple de Gestion de Tches, vous souhaitez certainement ltendre pour quelle soit la fois plus pratique et plus utile Dans cette section, vous allez avoir un aperu sur la manire dimplmenter des applications pratiques et sophistiques par lajout de code et dactions, ceci afin doffrir des fonctionnalits supplmentaires votre Gestionnaire de Tches. Vous allez apprendre : Envoyer des notifications demail la personne qui la tche est attribue, Autoriser seulement la personne qui la tche est attribue la modifier.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 84 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails
1 - Slectionnez le formulaire tasks dans la page tasks_maint en le slectionnant depuis lExplorateur de Projet, ou en cliquant nimporte o dans la lgende du formulaire. 2 - Dans la fentre Proprits, cliquez sur longlet Evnements. 3 - Slectionnez lvnement After Insert. 4 - Cliquez sur le bouton [+]. 5 - Slectionnez Ajouter du Code...

Une fois en mode Visualisation du Code , remplacez le commentaire gnr : // Write your own code here.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 85 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Par le code du dessus : global $DBIntranetDB; global $tasks; $from_name =CCDLookUp("emp_name", "employees", "emp_id=". $DBIntranetDB->ToSQL(CCGetUserID(), ccsInteger), $DBIntranetDB); $from_email=CCDLookUp("email", "employees", "emp_id=". $DBIntranetDB->ToSQL(CCGetUserID(), ccsInteger), $DBIntranetDB); $to_email=CCDLookUp("email", "employees", "emp_id=". $DBIntranetDB->ToSQL($tasks->user_id_assign_to->GetValue(), ccsInteger), $DBIntranetDB);

$headers = "From: ".$from_name."<".$from_email.">;"; $headers .= "Content-Type: text/html"; $subject = "New task for you"; $message = "The following task was submitted:<br><br>". "Task ID: ".CCDLookUp("max(task_id)", "tasks", "user_id_assign_by=". $DBIntranetDB->ToSQL(CCGetUserID(), ccsInteger), $DBIntranetDB)."<br><br>". $tasks->task_desc->GetText();

mail$to_email, $subject, $message, $headers); Comme vous pouvez le constater, le code ci-dessus envoie des emails aux utilisateurs qui de nouvelles tches sont attribues. Ce qui suit est une explication du code : $from_name = CCDLookUp("emp_name", "employees", "emp_id=".$DBIntranetDB->ToSQL (CCGetUserID(), ccsInteger),$DBIntranetDB); Paramtre from_name la valeur du champ emp_name pour lutilisateur connect. $from_email = CCDLookUp("email", "employees", "emp_id=".$DBIntranetDB->ToSQL(CCGetUserID(), ccsInteger), $DBIntranetDB); Paramtre from_email la valeur du champ email dans la table employees o emp_id correspond lutilisateur connect. La fonction CCDLookUp est utilise pour rcuprer une valeur de base de donnes, alors que CCGetUserID retrouve lID de la connexion utilisateur en cours. $to_email = CCDLookUp("email", "employees", "emp_id=".$DBIntranetDB->ToSQL($tasks->user_id_assign_to>GetValue(), ccsInteger), $DBIntranetDB);

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 86 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Paramtre to_email lemail de la personne qui la tche est attribue. La fonction CCDLookUp est utilise ici pour rcuprer ladresse email approprie. $headers = "From: ".$from_name."<".$from_email.">;"; Ajoute des dtails sur lexpditeur dans len-tte demail $headers .= "Content-Type: text/html;"; Indique que lemail sera envoy au format HTML, et non pas au format texte brut. $subject = "New task for you"; Le sujet de lemail envoyer. $message = "The following task was submitted:<br><br>"."Task ID: ". CCDLookUp("max(task_id)", "tasks", "user_id_assign_by=".$DBIntranetDB->ToSQL(CCGetUserID, ccsInteger), $DBIntranetDB)."<br><br>". $tasks->task_desc->GetText(); La variable message contient le corps de lemail qui sera envoy. La fonction CCDLookUp est utilise pour rcuprer le plus grand ID de tche soumis par lutilisateur connect (en supposant que les ID de tche soient crs par incrmentation). mail ($to_email, $subject, $message, $headers); Envoie lemail en utilisant les variables cres dans le code du dessus.

Utiliser lEvnement After Update pour Envoyer de s Emails


Vous avez prcdemment ajout le code ncessaire qui envoie une notification demail la personne qui la tche est attribue, une fois lenregistrement dune nouvelle tche effectue dans le systme. Maintenant, il nous faut implmenter une fonctionnalit similaire dans lvnement After Update pour informer la personne qui la tche est attribue, lorsquune tche existante est mise jour et rattribue quelquun dautre. 1 - Cliquez sur le formulaire tasks dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 87 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 3 - Ajoutez le Custom Code (Code Personnalis) dans lvnement After Update : global $DBIntranetDB; global $tasks; if (CCGetUserID() != $tasks->user_id_assign_to->GetValue()) { $from_name = CCDLookUp("emp_name", "employees", "emp_id=". $DBIntranetDB->ToSQL(CCGetUserID(), ccsInteger), $DBIntranetDB); $from_email = CCDLookUp("email", "employees", "emp_id=". $DBIntranetDB->ToSQL(CCGetUserID(), ccsInteger), $DBIntranetDB); $to_email = CCDLookUp("email", "employees", "emp_id=". $DBIntranetDB->ToSQL($tasks->user_id_assign_to->GetValue(),ccsInteger), $DBIntranetDB); $headers = "From: ".$from_name."<".$from_email.">;"; $headers .= "Content-Type: text/html;"; $subject = "A task was assigned to you"; $message = "The following task was assigned to you:<br><br>". "Task ID: ".CCGetFromGet ("task_id", " " )."<br><br>". $tasks->task_desc->GetText(); mail($to_email, $subject, $message, $headers); } Les principales diffrences entre le code ci-dessus et celui utilis dans lvnement After Insert sont les suivantes : 1 - Une condition if a t ajoute pour envoyer un email seulement si un utilisateur attribue une tche une autre personne. 2 - task_id est rcupr depuis lURL utilisant la fonction CCGetFromGet. Nous pouvons utiliser cette mthode parce que des tches peuvent tre mises jour seulement si lutilisateur est arriv la page en cours par une URL qui contient un ID de tche mettre jour. Une telle URL ressemble : http://localhost/TaskManager/tasks_maint.php?task_id=9

Test de lEnvoi dEmail


Avant de tester lenvoi demail : 1 - Vous devez ajouter de nouveaux utilisateurs votre base de donnes avec des adresses em ail correctes, ou modifier les utilisateurs existants en changeant leur adresse email : A - Vous pouvez le faire en ouvrant la base de donnes Intranet.mdb qui se trouve dans votre rpertoire Projet. B - Autrement, vous pouvez utiliser le Gestionnaire de Tches. Allez la page Employs pour y visualiser les emails utilisateur et les modifier. 2 - Une fois vos utilisateurs configurs avec le test demails, sauvegardez votre projet et passez en mode Live Page pour tester votre systme. Remarque : Vous aurez besoin de Microsoft Access 2000 ou une version suprieure pour diter manuellement le fichier base de donnes. Si votre code email fonctionne correctement, vous devez alors vous retrouver sur la page Liste de Tches aprs lajout ou la modification dune tche, et la personne qui la tche a t attribue doit recevoir un email.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 88 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 5
Implmenter la Scurit dEnregistrement dans lEvnement After Initialize
Votre Gestionnaire de Tches est dsormais pratiquement complet, seule une fonctionnalit p ouvant savrer importante manque, savoir la Scurit. Dans ltat actuel nimporte qui peut modifier et supprimer nimporte quelle tche. Vous voudrez certainement limiter laccs pour que seuls les employs autoriss puissent mettre jour leurs tches. Il y a plusieurs faons de procder, et nous allons examiner plusieurs dentre elles. 1 - Cliquez sur la page tasks_maint dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez Custom Code (Code Personnalis) lvnement After Initialize de la page. Procdez comme suit : Une fois en mode Visualisation de Code, remplacez le commentaire gnr : // Write your own code here. Par ce code : global $tasks; global $Redirect; global $DBIntranetDB; $current_task = CCGetParam("task_id", ""); if ($current_task != 0 && CCGetUserID() != CCDLookUp("user_id_assign_to", "tasks", "task_id=". $DBIntranetDB->ToSQL($current_task, ccsInteger), $DBIntranetDB)) { $tasks->Visible = false; // $Redirect = "tasks_list.php"; // $tasks->UpdateAllowed = false; // $tasks->DeleteAllowed = false; } Le code du dessus permet de tester les mthodes suivantes pour implmenter la scurit denregistrement : Ne pas montrer la Tche (formulaire Enregistrement) sur la page si la tche s lectionne nappartient pas lutilisateur connect. Un utilisateur non autoris verra une page blanche. Vous pouvez cacher nimporte quel formulaire sur une page en lui attribuant une valeur False (Faux) pour la proprit Visible (visible) du formulaire. Le code $current_task != 0 dans la condition if indique que le code doit seulement tre excut si lutilisateur essaie de modifier une tche existante et qui ne lui est pas attribue. La condition if sassure aussi que tous les utilisateurs peuvent crer de nouvelles tches. Vous pouvez tester cette fonctionnalit en insrant le code du dessus dans lvnement, puis en passant en mode Live Page, et en essayant de modifier une tche qui ne vous est pas attribue... et alors une page vide devrait safficher. Une telle fonctionnalit nest pas trs utile, mais elle montre comment cacher des formulaires sur une page. Ajoutez un autre formulaire Enregistrement sur votre page qui ne puisse pas tre mis jour et qui ait seulement des champs Etiquette qui montrent les informations. Une fois que vous avez deux formulaires sur la page, vous pouvez cacher chaque formulaire par programmation en utilisant des critres dexclusion.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 89 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Rediriger des utilisateurs non autoriss sur une autre page. Seuls les utilisateurs qui sont attribues des tches peuvent visualiser la page. Vous pouvez mettre en application et tester cette fonctionnalit en modifiant lgrement le code du dessus, comme montr cidessous : global $tasks; global $Redirect; global $DBIntranetDB; $current_task = CCGetParam("task_id", ""); if($current_task != 0 && CCGetUserID() != CCDLookUp("user_id_assign_to", "tasks", "task_id=". $DBIntranetDB->ToSQL($current_task, ccsInteger), $DBIntranetDB)) { // $tasks->Visible = false; $Redirect = "tasks_list.php"; // $tasks->UpdateAllowed = false; // $tasks->DeleteAllowed = false; } Le code du dessus montre que vous devez commenter la ligne prcdemment active, et activer la ligne qui commence avec $Redirect. $Redirect est une variable utilise par CodeCharge Studio pour dterminer si la page en cours doit tre redirige sur une autre page, par exemple dans le cas o un utilisateur na pas de session ouverte. Cette variable peut tre utilise seulement sur les pages ayant un accs restreint et ncessitant une authentification. Vous pouvez simplement attribuer la page de destination la variable $Redirect, et alors la page sera automatiquement redirige. Testez cette fonctionnalit en modifiant le code comme montr, passez en mode Live Page, et essayez de modifier une tche qui ne vous est pas attribue.

ColdFusion
Extension des Fonctionnalits de lApplication avec la Programmation dEvnements (ColdFusion)
Vous avez certainement remarqu que jusqu prsent vous avez construit votre Gestionnaire de Tches sans avo ir vous proccuper du code. En effet, CodeCharge Studio peut vous aider construire des systmes fonctionnels sans programmation ; toutefois la cration de systmes plus sophistiqus requiert un minimum de programmation. Heureusement, CodeCharge Studio facilite la programmation en proposant un diteur de code de haut niveau, en plus des Evnements et des Actions qui vous aident insrer des morceaux de code pr-programms dans le programme. Voici les dfinitions dune Action et dun Evnment : Action Composant de gnration de code dfinissable par lutilisateur, qui insre un bloc de code dans une procdure vnementielle. CodeCharge Studio est fourni avec de nombreuses Actions pr-dfinies, qui se trouvent dans le dossier suivant : (CCS folder)\Components\Actions. Intrieurement, les actions consistent en du code XML et XSL pouvant tre facilement personnalis. Par exemple, une action peut tre paramtre sur un Textbox pour valider une adresse e-mail. Procdure Evnementielle Une procdure automatiquement excute en rponse un vnement lanc par un programme son excution. Les vnements sont les meilleurs emplacements pour mettre du Code Personnalis (Custom Code) . Connexion la Base de Donnes Ct Serveur en ColdFusion

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 90 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Bien que la connexion en mode Conception (via lutilisation de lassistant), quand vous utilisez ColdFusion, puisse tre faite directement une base de donnes Access, la connexion ct Serveur doit tre configure diffremment. Dans ce cas de ColdFusion, la connexion ct Serveur doit tre faite une source de donnes enregistre. Si vous utilisez ColdFusion 4.01, vous aurez besoin de faire la connexion en utilisant ODBC DSN. Pour des versions suprieures de ColdFusion (version 5.0 ou MX), vous pouvez utiliser nimporte quelle source de donnes qui a t enregistre dans ladministrateur ColdFusion. Pour plus dinformations sur les connexions base de donnes en ColdFusion, merci de vous rfrer la section sur les connexions ct Serveur en ColdFusion.

Etape 1
Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte
Dmarrons la programmation basique avec une tche simple de changement de la couleur dun champ grille sur notre page Liste de Tches. Concrtement, nous allons mettre en vidence les tches qui vous sont attribues en affichant votre nom en bleu dans la grille. 1 - Ouvrez la page tasks_list dans lExplorateur de Projet. 2 - Ouvrez larborescence de la grille tasks. 3 - Fates un clic droit sur le champ emp_login1 et slectionnez Proprits. 4 - Dans longlet Donnes, paramtrez la valeur de la proprit Name (Nom) user_id_assign_to . 5 - Dans lExplorateur Projet, fates un clic droit sur le champ task_name et slectionnez Proprits. 6 - Dans longlet Donnes, paramtrez la valeur de la proprit Content (Contenu) HTML. 7 - Slectionnez la grille tasks dans lExplorateur de Projet, ou cliquez nimporte o dans la lgende du formulaire. 8 - Slectionnez longlet Evnements dans la fentre Proprits. 9 - Fates un clic droit sur lvnement Before Show Row et slectionnez Ajouter du Code... . Lvnement Before Show Row se dclenche dans le programme aprs que les valeurs champs soient attribues, mais avant dtre gnres en HTML. En ajoutant du code dans cet vnement, vous pouvez modifier la valeur champ avant quelle ne soit montre.

Contrler par Programmation la Valeur Champ


Une fois que vous aurez ajout le Code Personnalis ( Custom Code) lvnement, vous verrez la fentre ddition du code avec lemplacement appropri pour entrer le nouveau code. Remplacez cette ligne de code : <!--- write your own code here ---> par les lignes suivantes (ColdFusion) :
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 91 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) <CFPARAM Name="Session.UserLogin" Default=""> <CFIF flduser_id_assign_to EQ Session.UserLogin AND Session.UserLogin NEQ ""> <CFSET fldtask_name= '<b><font color="blue">' & fldtask_name & '</font></b>'> </CFIF> Ce qui suit est une explication sur le fonctionnement du code du dessus : <CFPARAM Name="Session.UserLogin" Default=""> Ce code vrifie lexistence de la variable de session UserLogin. Si la variable nexiste pas, elle est cre et ses valeurs paramtres sur une chane vide. <CFIF fldtask_name EQ Session.UserLogin AND Session.UserLogin NEQ ""> Cette instruction conditionnelle est vraie seulement si la valeur du champ fldtask_name est gale au nom de Login de lemploy connect au systme. Le champ de base de donnes employees1_emp_login fournit la valeur pour le champ fldtask_name dans le formulaire Grille. Une fois connect au systme, le programme reconnatra vos tches en comparant votre nom de Login la valeur emp_login de la personne qui la tche est attribue. UserLogin est une des variables de session utilises par les programmes gnrs par CodeCharge, et elle conserve le nom de Login de la session utilisateur en cours jusqu son expiration. Note : Il sagit des variables de session cres par dfaut par CodeCharge Studio : UserID : la valeur champ cl primaire de la session utilisateur UserLogin : le nom de Login de lutilisateur connect au systme GroupID : le niveau/groupe de scurit de lutilisateur connect au systme <CFSET fldtask_name= '<b><font color="blue">' & fldtask_name & '</font></b>'> Ce code est excut si la condition prcdente if (si) est rencontre. Elle modifie la valeur du champ task_name. La valeur champ est remplace par sa valeur de base de donnes encapsule dans du code HTML, qui spcifie la couleur de police, comme le bleu, et ajoute un tag HTML <b> pour afficher la police en gras. </CFIF> Cette ligne manque la fin de la condition if, aussi lexcution du code restant nest pas affecte par cette condition.

Prvisualiser la Page Liste de Tches


1 - Sauvegardez votre projet. 2 - Passez en mode Live Page pour visualiser votre page fonctionnelle. Si aucun nom de tche ne st mis en vidence dans la colonne "Name", cest que vous ntes probablement pas connect(e) au systme. 3 - Le menu ne contenant pas encore de lien la page Login, vous pouvez y accder en essayant douvrir une des pages restreintes, par exemple la page Maintenance de Tches. 4 - Cliquez sur nimporte lequel des ID projet, et vous devriez voir la page Login. 5 - Connectez-vous en tant que george/george, puis cliquez sur le lien Tasks sur le menu pour retourner la page Liste de Tches. Maintenant, vous devriez voir que certaines tches sont mises en vidence ; ces tches correspondent aux tches de lutilisateur pour lequel vous avez ouvert une session.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 92 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 2
Modifier un Champ Etiquette sur la Page Maintenance de Tches
Maintenant vous allez procder une modification ncessaire sur la page Maintenance de Tches sur laquelle vous avez d remarqu que le champ Etiquette Assigned By naffiche pas le nom de lemploy, mais lID, comme montr ci-dessous ; cest parce que la table tasks contient seulement lID utilisateur, alors que la table employees contient les noms des utilisateurs rels.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 93 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Il y a plusieurs mthodes possibles pour traiter de la question. Merci de vous rfrer aux explications qui suivent : 1 - Crez une Requte qui contient plusieurs tables et qui peut tre utilise en tant que source de donnes par le formulaire Enregistrement, comme vous lavez dj fait avec la grille sur la page Liste de Tches. Malheureusement, les requtes qui contiennent plusieurs tables ne peuvent pas tre mises jour de par leur nature, et donc le formulaire Enregistrement entier peut sarrter de fonctionner. En dautres termes, si vous avez indiqu que vous vouliez utiliser une requte contenant une table tasks et employees dans votre formulaire Enregistrement, alors si vous attribuez une tche quelquun dautre, le programme ne pourra pas savoir si vous vouliez mettre jour la table tasks avec le nouveau employee_id, ou si vous vouliez mettre jour la table employees et changer le nom de lemploy. En consquence, si vous utilisez plusieurs tables comme source de donnes pour le formulaire Enregistrement, vous devrez galement dfinir les oprations Custom Insert , Custom Update et Custom Delete dans les proprits du formulaire Enregistrement pour prciser quels champs de la base de donnes devront tre mis jour avec les valeurs correspondantes saisies sur la page. Cette mthode semble reprsenter beaucoup deffort juste pour afficher une valeur supplmentaire sur la page. 2 - Utilisez une Procdure Evnementielle pour insrer du Code Personnalis ( Custom Code) o vous pourrez produire la valeur dsire par programmation. Cette mthode est trs flexible, dans la mesure o elle vous permet dtendre le code gnr par lajout de votre propre code. Ltape suivante dcrit en dtail cette mthode.

Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette


1 - En mode Conception, slectionnez lEtiquette user_id_assign_by, 2 - Dans la fentre Proprits, cliquez sur longlet Donnes. 3 - Slectionnez Text pour la proprit Data Type (Type de Donnes). 4 - Dans la fentre Proprits, cliquez sur longlet Evnements. 5 - Fates un clic droit sur lvnement Before Show et slectionnez Ajouter du Code... . CodeCharge Studio va alors automatiquement passer en mode Visualisation du Code .

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 94 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Une fois en mode Visualisation du Code , remplacez le texte suivant : <!--- write your own code here ---> par : <CFIF blnEditModeTasks> <CF_CCToSQL Value= "#flduser_id_assign_by#" Type= "#ccsInteger#" > <CF_CCDLookUp Field="emp_name" Table="employees" Where="emp_id=#CCToSQL#" Connection="IntranetDB"> <CFSET flduser_id_assign_by=CCDLookUp> <CFELSE> <CF_CCToSQL Value="#Session.UserID#" Type="#ccsInteger#" > <CF_CCDLookUp Field="emp_name" Table="employees" Where="emp_id=#CCToSQL#" Connection="IntranetDB"> <CFSET flduser_id_assign_by=CCDLookUp> </CFIF> Le code du dessus est compos des lments suivants : blnEditModeTasks : variable de formulaire, qui indique si lenregistrement est ditable. En fonction de la valeur de cette proprit, le programme affichera soit le nom de la personne qui a initialement soumis la tche (mode Edition), soit le nom de la personne qui soumet la tche (mode Insertion). user_id_assign_by : le nom de lEtiquette dans la Grille, et en mme temps le nom du champ de la base de donnes qui a t utilis pour crer cette tiquette, et qui est maintenant sa source de donnes. flduser_id_assign_by : le nom de la variable utilise par le programme gnr pour se rfrer ltiquette et au champ de la base de donnes changer. CodeCharge Studio construit des noms de variables par jajout du prfixe " fld" au nom du champ. CCDLookup : tag personnalis de CodeCharge qui supporte la rcupration dune valeur de base de donnes base sur un nom de champ, un nom de table, et une condition. Ici, cette fonction rcupre le Nom de lEmploy emp_name dans la table employees en utilisant la condition suivante : la cl emp_id est gale la valeur courante de lEtiquette. CCToSQL : tag personnalis de CodeCharge qui convertit une valeur dans le format support par la base de donnes. Cette fonction requiert un paramtre qui dit si une valeur doit tre convertie en un nombre (Entier) ou en du texte. Dans ce cas, cette fonction convertit la valeur courante de lEtiquette en un nombre pouvant tre utilis avec la fonction CCDLookUp. Il est conseill de toujours utiliser cette fonction avec CCDLookup. IntranetDB : le nom de la connexion base de donnes que vous voulez utiliser dans la fonction CCDLookUp. Session.UserID : la variable de session qui contient lID de lutilisateur connect au systme.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 95 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Le code se lit approximativement comme suit : If a record is being edited : Attribue le nom de la personne qui a initialement soumis la question lEtiquette user_id_assign_by, par la recherche du nom de lemploy dans la table employees en utilisant le tag personnalis CCDLookUp qui utilise la connexion IntranetDB et la valeur de lEtiquette user_id_assign_by. If a new record is being created : Attribue lutilisateur connect lEtiquette user_id_assign_by en rcuprant son nom dans la table employees et en utilisant le tag personnalis CCDLookUp, qui utilise la connexion IntranetDB et le tag personnalis CCGetUserID (qui permet dotenir lID de lutilisateur connect). Maintenant que vous avez modifi par programmation la valeur de lEtiquette user_id_assign_by pour sortir le Nom de lEmploy la place de lID, vous allez devoir indiquer que ce champ est dsormais un champ Texte, et non plus un champ Numrique. 1 - Cliquez sur longlet Donnes dans la fentre Proprits. 2 - Slectionnez Text en tant que Data Type (Type de Donnes).

Etape 3
Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches
Vous avez prcdemment utilis lvnement Before Show pour afficher le nom de la personne qui une tche est attribue. Cependant, les champs Etiquette ne peuvent pas tre mis jour de par leur nature, alors bien que le nom de lemploy soit affich sur la page, il nest pas crit dans la base de donnes. Dans la mesure o nous voulons que la base de donnes enregistre le nom ou lID de la personne qui soumet une tche, nous allons devoir ajouter la logique de programmation pour effectuer cela. 1 - Ajoutez un champ Cach votre page depuis longlet Formulaires de la Bote Outils (Toolbox). Ce type de champ nest pas visible dans le navigateur, mais il sera utilis pour stocker une valeur et mettre jour la base de donnes. 2 - Configurez le nouveau champ en paramtrant ses proprits comme indiqu ci-dessous : Name (Nom) : assigned_by - le nom du champ Cach qui vient dtre ajout. Cela peut tre nimporte quel nom. Control Source : user_id_assign_by - le champ/colonne de la base de donnes qui sera utilis(e) pour rcuprer la valeur du champ et qui sera mis(e) jour avec la nouvelle valeur en cas de changement. Data Type (Type de Donnes) : Integer - le type de la valeur lie au Control Source . Nos ID utilisateur/employ sont numriques. Default (Par Dfaut) : Session.UserID - Session.UserID est une variable de session cre par CodeCharge qui conserve lID de lutilisateur connect au systme. Ainsi, vous pouvez simplement spcifier que vous voulez enregistrer lID de lutilisateur connect dans le champ user_id_assign_by pour chaque nouvelle tche qui est soumise.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 96 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement


Maintenant, nous allons ajouter un autre champ Cach votre page, qui sera utilis pour soumettre la date et lheure courantes dans le champ date_assignt dans la base de donnes. 1 - Configurez le nouveau champ comme indiqu ci-dessous : Name (Nom) : date_created Control Source : task_start_date Data Type (Type de Donnes) : Date Default (Par Dfaut) : CurrentDateTime - La valeur CurrentDateTime vous permet dattribuer automatiquement la date et lheure courantes aux nouvelles tches. La proprit Par Dfaut naffecte pas les enregistrements existants, donc la date et lheure des tches existantes ne seront pas modifies lors de mises jour ultrieures.

1 - Cliquez sur le champ task_start_date dans lExplorateur de Projet. 2 - Dans la fentre Proprits, paramtrez Default Value (Valeur Par Dfaut) CurrentDateTime. Cest ainsi que le champ Etiquette peut afficher la date bien que le champ Cach ne soit pas visible pour lutilisateur.

Tester les Champs Etiquette et Cach


1 - Passez en mode Live Page . 2 - Slectionnez ou ajoutez une Tche, et vous voyez alors votre Etiquette afficher le nom de la personne qui a attribu la tche. 3 - La version de base de votre Gestionnaire de Tches est dsormais finalise. Ne pas oublier de sauvegarder !

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 97 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 4
Programmation du Formulaire Enregistrement
Maintenant que vous avez cr une application simple de Gestion de Tches, vous souhaitez certainement ltendre pour quelle soit la fois plus pratique et plus utile Dans cette section, vous allez avoir un aperu sur la manire dimplmenter des applications pratiques et sophistiques par lajout de code et dactions, ceci afin doffrir des fonctionnalits supplmentaires votre Gestionnaire de Tches. Vous allez apprendre : Envoyer des notifications demail la personne qui la tche est attribue, Autoriser seulement la personne qui la tche est attribue la modifier.

Ajouter du Code dans lEvnement After Insert pour Envoyer des Emails
1 - Slectionnez le formulaire tasks dans la page tasks_maint en le slectionnant depuis lExplorateur de Projet, ou en cliquant nimporte o dans la lgende du formulaire. 2 - Dans la fentre Proprits, cliquez sur longlet Evnements. 3 - Slectionnez lvnement After Insert. 4 - Cliquez sur le bouton [+]. 5 - Slectionnez Ajouter du Code...

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 98 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Une fois en mode Visualisation du Code , remplacez le commentaire gnr : <!--- write your own code here ---> par le code du dessous : <CF_CCDLookUp Field="email" Table="employees" Where="emp_id=#flduser_id_assign_to#" Connection="IntranetDB"> <CFSET mai1_To=CCDLookUp> <CF_CCDLookUp Field="email" Table="employees" Where="emp_id=#Session.UserID#" Connection="IntranetDB"> <CFSET mai1_From=CCDLookUp> <CF_CCDLookUp Field="max(task_id)" Table="tasks" Where="user_id_assign_by=#Session.UserID#" Connection="IntranetDB"> <CFMAIL TO="#mai1_To#" FROM="#mai1_From#" SUBJECT="New task for you" TYPE="HTML" > The following task was submitted:<br><br> Task ID:#CCDLookUp# <br><br>#fldtask_desc# </CFMAIL> Ce qui suit est une explication du code du dessus : <CF_CCDLookUp Field="email" Table="employees" Where="emp_id=#flduser_id_assign_to#" Connection="IntranetDB"> <CFSET mai1_To= CCDLookUp> Paramtre ladresse email To (Destinataire) ladresse email de la personne qui est attribue la tche. Le tag personnalis CCDLookUp est utilis ici pour rcuprer ladresse email approprie. <CF_CCDLookUp Field= "email" Table= "employees" Where= "emp_id=#Session.UserID#" Connection=quot;IntranetDB"> <CFSET mai1_From= CCDLookUp>

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 99 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Paramtre ladresse email From (Expditeur) la valeur du champ email dans la table employees o emp_id correspond lutilisateur connect. La fonction CCDLookUp est utilise pour rcuprer une valeur de base de donnes, alors que Session.UserID retrouve lID de la connexion utilisateur en cours. <CF_CCDLookUp Field="max(task_id)" Table="tasks" Where="user_id_assign_by=#Session.UserID#" Connection= "IntranetDB"> Rcupre lID de tche courante. Le dernier ID de tche insr peut tre obtenu en utilisant diffrentes mthodes avec diffrentes bases. Malheureusement, Microsoft Access ne supporte pas la rcupration du dernier enregistrement insr, alors vous devrez utiliser la fonction CCDLookUp pour rcuprer le plus grand ID de tche soumis par lutilisateur connect (en supposant que les ID de tche soient crs par incrmentation). <CFMAIL TO="#mai1_To#" FROM="#mai1_From#" SUBJECT="New task for you" TYPE="HTML" > The following task was submitted:<br><br> Task ID:#CCDLookUp# <br><br>#fldtask_desc# </CFMAIL> Le tag CFMail envoie une adresse email en utilisant les variables paramtres dans le tag. Le corps du tag comprend le corps de ladresse email envoyer.

Utiliser lEvnement After Update pour Envoyer des Emails


Vous avez prcdemment ajout le code ncessaire qui envoie une notification demail la personne qui la tche est attribue, une fois lenregistrement dune nouvelle tche effectue dans le systme. Maintenant, il nous faut implmenter une fonctionnalit similaire dans lvnement After Update pour informer la personne qui la tche est attribue, lorsquune tche existante est mise jour et rattribue quelquun dautre. 1 - Cliquez sur le formulaire tasks dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez le Custom Code (Code Personnalis) dans lvnement After Update : <CFIF #flduser_id_assign_to# NEQ #Session.UserID#> <CF_CCDLookUp Field="email" Table="employees" Where="emp_id=#flduser_id_assign_to#" Connection="IntranetDB"> <CFSET mai1_To=CCDLookUp> <CF_CCDLookUp Field="email" Table="employees" Where="emp_id=#Session.UserID#" Connection="IntranetDB"> <CFSET mai1_From= CCDLookUp> <CF_CCGetParam strName="task_id" def=""> <CFMAIL TO="#mai1_To#" FROM="#mai1_From#" SUBJECT="New task for you" TYPE="HTML"> The following task was assigned to you:<br><br> Task ID:#CCGetParam# <br><br>#fldtask_desc# </CFMAIL> </CFIF>

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 100 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Les principales diffrences entre le code ci-dessus et celui utilis dans lvnement After Insert sont les suivantes : 1 - Une condition if (si) a t ajoute pour envoyer un email seulement si un utilisateur attribue une tche une autre personne. 2 - task_id est rcupr depuis lURL utilisant le tag personnalis CCGetParam. Nous pouvons utiliser cette mthode parce que des tches peuvent tre mises jour seulement si lutilisateur est arriv la page en cours par une URL qui contient un ID de tche mettre jour. Une telle URL ressemble : http://localhost/TaskManager/tasks_maint.cfm?task_id=9

Test de lEnvoi dEmail


Avant de tester lenvoi demail : 1 - Vous devez ajouter de nouveaux utilisateurs votre base de donnes avec des adresses email correctes, ou modifier les utilisateurs existants en changeant leur adresse email : A - Vous pouvez le faire en ouvrant la base de donnes Intranet.mdb qui se trouve dans votre rpertoire Projet. B - Sinon, vous pouvez utiliser le Gestionnaire de Tches. Allez la page Employs pour y visualiser les emails utilisateur et les modifier. 2 - Une fois vos utilisateurs configurs avec le test demails, sauvegardez votre projet et passez en mode Live Page pour tester votre systme. Remarque : Vous aurez besoin de Microsoft Access 2000 ou une version suprieure pour diter manuellement le fichier base de donnes. Si votre code email fonctionne correctement, vous devez alors vous retrouver sur la page Liste de Tches aprs lajout ou la modification dune tche, et la personne qui la tche a t attribue doit recevoir un email.

Etape 5
Implmenter la Scurit dEnregistrement dans lEvnement After Initialize
Votre Gestionnaire de Tches est dsormais pratiquement complet, seule une fonctionnalit pouvant savrer importante manque, savoir la Scurit. Dans ltat actuel nimporte qui peut modifier et supprimer nimporte quelle tche. Vous voudrez certainement limiter laccs pour que seuls les employs autoriss puissent mettre jour leurs tches. Il y a plusieurs faons de procder, et nous allons examiner plusieurs dentre elles. 1 - Cliquez sur la page tasks_maint dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez Custom Code (Code Personnalis) lvnement After Initialize de la page. Procdez comme suit : Une fois en mode Visualisation de Code, remplacez le commentaire gnr : <!------------------------------------> <!--- Write your own code here ---> <!------------------------------------>

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 101 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) par le code du dessous : <CF_CCGetParam strName="task_id" outputvar="current_task"> <CFPARAM Name="Session.UserID" Default=""> <CF_CCToSQL Value="#current_task#" Type="#ccsInteger#"> <CF_CCDLookUp Field="user_id_assign_to" Table="tasks" Where="task_id=#CCToSQL#"> <CFIF current_task NEQ 0 AND Session.UserID NEQ CCDLookUp> <CFSET hideTasks = True> <!---<CFSET strRedirect = "tasks_list.cfm"> ---> <!---<CFSET blnUpdateAllowedTasks = False> ---> <!---<CFSET blnDeleteAllowedTasks = False> ---> <!---<CFSET hideUpdate = True>---> <!---<CFSET hideDelete= True>---> </CFIF> Le code du dessus vous permet de tester les mthodes pour implmenter la scurit denregistrement : Ne pas montrer la Tche (formulaire Enregistrement) sur la page si la tche slectionne nappartient pas lutilisateur connect. Un utilisateur non autoris verra une page blanche. Vous pouvez cacher nimporte quel formulaire sur une page en attribuant une valeur True (vraie) la variable hideTasks (cacher Tches). Le code "current_task NEQ 0 " dans la condition CFIF indique que le code sera seulement excut si un utilisateur essaie de modifier une tche existante et qui ne lui est pas attribue. Vous pouvez tester cette fonctionnalit en insrant le code du dessus dans lvnement, passer en mode Live Page et en essayant de modifier une tche qui ne vous est pas attribue et dans ce cas, vous verrez une page vide. Bien que cette fonctionnalit ne soit pas trs utile, elle illustre comment cacher des formulaires sur une page. Maintenant ajoutez un autre formulaire Enregistrement votre page qui ne puisse pas tre mis jour et qui ait seulement des champs Etiquette qui montrent les informations. Une fois que vous avez deux formulaires sur la page, vous pouvez cacher chaque formulaire par programmation en utilisant des critres dexclusion. Rediriger des utilisateurs non autoriss sur une autre page. Seuls les utilisateurs qui les tches sont attribue s peuvent visualiser la page. Vous pouvez mettre en application cette fonctionnalit en modifiant lgrement le code du dessus comme montr ci-dessous : <CF_CCGetParam strName="task_id" outputvar="current_task"> <CFPARAM Name="Session.UserID" Default=""> <CF_CCToSQL Value="#current_task#" Type="#ccsInteger#"> <CF_CCDLookUp Field="user_id_assign_to" Table="tasks" Where="task_id=#CCToSQL#"> <CFIF current_task NEQ 0 AND Session.UserID NEQ CCDLookUp> <!---<CFSET hideTasks = True> ---> <CFSET strRedirect = "tasks_list.cfm"> <!---<CFSET blnUpdateAllowedTasks = False> ---> <!---<CFSET blnDeleteAllowedTasks = False> ---> <!---<CFSET hideUpdate = True>---> <!---<CFSET hideDelete= True>---> </CFIF>

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 102 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Le code du dessus montre que vous devez commenter la ligne prcdemment active, et activer la ligne qui commence avec <CFET stRedirect. StrRedirect est une variable utilise par CodeCharge Studio pour dterminer si la page en cours doit tre redirige sur une autre page, par exemple si un utilisateur na pas de session ouverte. Cette variable peut tre utilise seulement sur les pages ayant un accs restreint et ncessitant une authentification. Vous pouvez simplement attribuer la page de destination la variable strRedirect et la page sera alors automatiquement redirige. Testez cette fonctionnalit en modifiant le code comme montr, ensuite passez en mode Live Page, et essayez alors de modifier une tche qui ne vous est pas attribue.

Perl
Extension des Fonctionnalits de lApplication avec la Programmation dEvnements ( Perl)
Vous avez certainement remarqu que jusqu prsent vous avez construit votre Gestionnaire de Tches sans avoir vous proccuper du code. En effet, CodeCharge Studio peut vous aider construire des systmes fonctionnels sans programmation ; toutefois la cration de systmes plus sophistiqus requiert un minimum de programmation. Heureusement, CodeCharge Studio facilite la programmation en proposant un diteur de code de haut niveau, en plus des Evnements et des Actions qui vous aident insrer des morceaux de code pr-programms dans le programme. Voici les dfinitions dune Action et dun Evnment : Action Composant de gnration de code dfinissable par lutilisateur, qui insre un bloc de code dans une procdure vnementielle. CodeCharge Studio est fourni avec de nombreuses Actions pr-dfinies, qui se trouvent dans le dossier suivant : (CCS folder)\Components\Actions. Intrieurement, les actions consistent en du code XML et XSL pouvant tre facilement personnalis. Par exemple, une action peut tre paramtre sur un Textbox pour valider une adresse e-mail. Procdure Evnementielle Une procdure automatiquement excute en rponse un vnement lanc par un programme son excution. Les vnements sont les meilleurs emplacements pour mettre du Code Personnalis (Custom Code) . Connexion la Base de Donnes cot Serveur en Perl Bien que la connexion en mode conception (via lutilisation de lasssistant), quand vous utilisez Perl, puisse tre faite une base de donnes Microsoft Access, la connexion ct Serveur doit tre configure diffremment. En particulier, linterface DBI doit tre utilise pour que la connexion utilise un driver DBD appropri, disponible sur le serveur sur lequel les pages Web seront publies. Pour plus dinformations sur la configuration des connexions ct Serveur, merci de vous rfrer la section sur les connexions ct Serveur en Perl.

Etape 1
Utiliser lEvnement Before Show Row pour Changer la Couleur du Texte
Dmarrons la programmation basique avec une tche simple de changement de la couleur dun champ grille sur notre page Liste de Tches. Concrtement, nous allons mettre en vidence les tches qui vous sont attribues en affichant votre nom en bleu dans la grille. 1 - Ouvrez la page tasks_list dans lExplorateur de Projet. 2 - Ouvrez larborescence de la grille tasks. 3 - Fates un clic droit sur le champ emp_login1 et slectionnez Proprits. 4 - Dans longlet Donnes, paramtrez la valeur de la proprit Name (Nom) user_id_assign_to . 5 - Dans lExplorateur Projet, fates un clic droit sur le champ task_name et slectionnez Proprits. 6 - Dans longlet Donnes, paramtrez la valeur de la proprit Content (Contenu) HTML. 7 - Slectionnez la grille tasks dans lExplorateur de Projet, ou cliquez nimporte o dans la lgende du formulaire.
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 103 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 8 - Slectionnez longlet Evnements dans la fentre Proprits. 9 - Fates un clic droit sur lvnement Before Show Row et slectionnez Ajouter du Code... . Lvnement Before Show Row se dclenche dans le programme aprs que les valeurs champs soient attribues, mais avant dtre gnres en HTML. En ajoutant du code dans cet vnement, vous pouvez modifier la valeur champ avant quelle ne soit montre.

Contrler par Programmation la Valeur Champ


Une fois votre Code Personnalis (Custom Code ) ajout, vous verrez la fentre ddition du code avec lemplacement appropri pour entrer le nouveau code. Remplacez cette ligne de code : # Write your own code here. Par les lignes suivantes (Perl) : if ($tasks->{user_id_assign_to}->GetValue() eq CCGetSession("UserLogin")) { $tasks->{task_name}->SetValue("<b><font color='blue'>" . $tasks->{task_name}->GetValue(). "</font></b>"); } Ce qui suit est une explication sur le fonctionnement du code Perl du dessus : if ($tasks->{user_id_assign_to}->GetValue() eq CCGetSession("UserLogin")) Cest une condition if (si) qui est vraie seulement si la valeur du champ task_name est gale au nom de Login de lemploy ayant une session ouverte. Le champ base de donnes fournit la valeur pour le champ task_name dans le formulaire Grille. Une fois connect au systme, le programme reconnatra vos tches en comparant votre nom de Login la valeur emp_login de la personne qui cette tche est attribue. UserLogin est une des variables de session utilises par les programmes gnrs par CodeCharge, et elle conserve le nom de Login de la session utilisateur jusqu son expiration. Note : Il sagit des variables de session cres par dfaut par CodeCharge Studio: UserID : la valeur du champ cl primaire de la session utilisateur UserLogin : le nom de Login de lutilisateur connect au systme GroupID : le niveau/groupe de scurit de lutilisateur connect au systme
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 104 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) $tasks->{task_name}->SetValue("<b><font color='blue'>" . $tasks->{task_name}->GetValue() . "</font></b>"); Ce code est excut si la condition if est rencontre. Elle modifie la valeur du champ task_name. La valeur du champ est remplace par sa valeur de base de donnes encapsule dans du code HTML, qui spcifie la couleur de police, telle que le bleu, et ajoute un tag HTML <b> pour afficher la police en gras. De plus, notez que le code est orient objet et que vous indiquez que vous voulez attribuer une valeur au champ task_name dans la grille tasks. SetValue est une mthode dun objet, pouvant tre utilise pour modifier la valeur de lobjet.

Prvisualiser la Page Liste de Tches


1 - Sauvegardez votre projet. 2 - Passez en mode Live Page pour visualiser votre page fonctionnelle. Si aucun nom de tche nest mis en videnc e dans la colonne "Name", cest que vous ntes probablement pas connect(e) au systme. 3 - Le menu ne contenant pas encore de lien la page Login, vous pouvez y accder en essayant douvrir une des pages restreintes, par exemple la page Maintenance de Tches. 4 - Cliquez sur nimporte lequel des ID projet, et vous devriez voir la page Login. 5 - Connectez-vous en tant que george/george, puis cliquez sur le lien Tasks sur le menu pour retourner la page Liste de Tches. Maintenant, vous devriez voir que certaines tches sont mises en vidence ; ces tches correspondent aux tches de lutilisateur pour lequel vous avez ouvert une session.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 105 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 2
Modifier un Champ Etiquette sur la Page Maintenance de Tches
Maintenant procdons une modification ncessaire sur la page Maintenance de Tches sur laquelle vous avez d remarqu que le champ Etiquette Assigned By naffiche pas le nom de lemploy, mais lID, comme montr ci-dessous ; cest parce que la table tasks contient seulement lID utilisateur, alors que la table employees contient les noms des utilisateurs rels.

Il y a plusieurs mthodes possibles pour traiter de la question. Merci de vous rfrer aux explications qui suivent : 1 - Crez une Requte qui contient plusieurs tables pouvant tre utilise en tant que source de donnes par le formulaire Enregistrement, comme vous lavez dj fait avec la grille sur la page Liste de Tches. Malheureusement, les requtes qui contiennent plusieurs tables ne peuvent pas tre mises jour de par leur nature, et donc le formulaire Enregistrement entier peut sarrter de fonctionner. En dautres termes, si vous avez indiqu que vous vouliez utiliser une requte contenant une table tasks et employees dans votre formulaire Enregistrement, alors si vous attribuez une tche quelquun dautre, le programme ne pourra pas savoir si vous vouliez mettre jour la table tasks avec le nouveau employee_id, ou si vous vouliez mettre jour la table employees et changer le nom de lemploy. Ainsi, si vous utilisez plusieurs tables comme source de donnes pour le formulaire Enregistrement, vous devrez galement dfinir les oprations Custom Insert , Custom Update et Custom Delete dans les proprits du formulaire Enregistrement pour indiquer quels champs de la base de donnes devront tre mis jour avec les valeurs correspondantes saisies sur la page. Cette mthode semble reprsenter beaucoup deffort juste pour afficher une valeur supplmentaire sur la page. 2 - Utilisez une Procdure Evnementielle pour insrer du Code Personnalis (Custom Code) o vous pourrez produire la valeur dsire par programmation. Cette mthode est trs flexible, dans la mesure o elle vous permet dtendre le code gnr par lajout de votre propre code. Ltape suivante dcrit en dtail cette mthode.

Utiliser lEvnement Before Show pour Changer la Valeur dune Etiquette


1 - En mode Conception, slectionnez lEtiquette user_id_assign_by,
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 106 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 2 - Dans la fentre Proprits, cliquez sur longlet Evnements. 3 - Fates un clic droit sur lvnement Before Show et slectionnez Ajouter du Code... . CodeCharge Studio va alors automatiquement passer en mode Visualisation du Code .

Une fois en mode Visualisation du Code , si vous gnrez du Perl, vous devriez voir le fichier tasks_maint_events.pl , avec les lignes de code suivantes : # ------------------------# Write your own code here. # ------------------------Remplacez le texte : # Write your own code here. Par : $DBIntranetDB = clsDBIntranetDB->new(); if ( $tasks->{EditMode} ) { $tasks->{user_id_assign_by}->SetValue(CCDlookUp("emp_name", "employees", " emp_id=" . $DBIntranetDB>ToSQL($tasks->{user_id_assign_by}->GetValue(), $ccsInteger),$DBIntranetDB)); } else { $tasks->{user_id_assign_by}->SetValue(CCDlookUp("emp_name", "employees", " emp_id=" . $DBIntranetDB->ToSQL(CCGetSession("UserID"), $ccsInteger), $DBIntranetDB)); } Le code du dessus est compos des lments suivants : tasks : le nom du formulaire enregistrement sur la page. EditMode : proprit du formulaire, qui indique si lenregistrement est ditable. En fonction de la valeur de cette proprit, nous affichons soit le nom de la personne qui a initialement soumis la tche (mode Edition), soit le nom de la personne qui soumet la
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 107 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) tche (mode Insertion). user_id_assign_by : le nom de lEtiquette dans la Grille, et en mme temps le nom du champ base de donnes qui a t utilis pour crer cette Etiquette, et qui est dsormais sa source de donnes. SetValue : une mthode dun objet (dans ce cas lEtiquette), qui a t utilise pour modifier la valeur de lobjet. $tasks->{user_id_assign_by}->SetValue : mthode SetValue entirement qualifie, qui dit au programme quel objet il se rfre. En dautres termes, cest la mthode SetValue qui affecte le champ user_id_assign_by , qui en retour dpend de la grille tasks. CCDlookup : fonction de CodeCharge qui supporte la rcupration dune valeur de base de donnes base sur un nom de champ, un nom de table, et une condition. Ici, cette fonction rcupre le Nom de lEmploy ( emp_name) dans la table employees en utilisant la condition suivante : la cl (emp_id) est gale la valeur courante de lEtiquette. ToSQL : Fonction de CodeCharge qui convertit une valeur dans un format support par la base de donnes. Cette fonction requiert un paramtre qui dit si une valeur doit tre convertie en un nombre (entier) ou en du texte. Dans ce cas, cette fonction convertit la valeur courante de lEtiquette en un nombre pouvant tre utilis avec la fonction CCDlookup. Il est conseill de toujours utiliser cette fonction avec CCDlookup. $DBIntranetDB : le nom de lobjet qui dfinit la connexion base de donnes que vous voulez utiliser dans la fonction CCDLookup. CCGetSession("UserID") : fonction de CodeCharge qui retourne lID de lutilisateur connect au systme. Le code se lit approximativement comme suit : If a record is being edited : Attribue le nom de la personne qui a initialement soumis la question lEtiquette user_id_assign_by, par la recherche du nom de lemploy dans la table employees en utilisant la fonction CCDLookup, qui utilise la connexion IntranetDB et la valeur de lEtiquette user_id_assign_by. If a new record is being created : Attribue lutilisateur connect lEtiquette user_id_assign_by en rcuprant son nom dans la table employees en utilisant la fonction CCDLookup qui utilise la connexion IntranetDB et la fonction CCGetSession("UserID"), qui permet dobtenir lID de lutilisateur connect. Maintenant que vous avez modifi par programmation la valeur de lEtiquette user_id_assign_by pour produire le Nom de lEmploy la place de son ID, vous allez devoir indiquer que ce champ est dsormais un champ Texte, et non plus un champ Numrique. 1 - Cliquez sur longlet Donnes dans la fentre Proprits. 2 - Slectionnez Text en tant que Data Type (Type de Donnes).

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 108 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 3
Ajouter un Champ Cach "Assigned By" pour la Mise Jour Automatique de Nouvelles Tches
Vous avez prcdemment utilis lvnement Before Show pour afficher le nom de la personne qui attribue une tche. Cependant, les champs Etiquette ne peuvent pas tre mis jour de par leur nature, alors bien que le nom de lemploy soit affich sur la page, il nest pas crit dans la base de donnes. Dans la mesure o nous voulons que la base de donnes enregistre le nom ou lID de la personne qui soumet une tche, nous allons devoir ajouter la logique de programmation pour effectuer cela. 1 - Ajoutez un champ Cach votre page depuis longlet Formulaires de la Bote Outils (Toolbox). Ce type de champ nest pas visible dans le navigateur, mais il sera utilis pour stocker une valeur et mettre jour la base de donnes. 2 - Configurez le nouveau champ en paramtrant ses proprits comme indiqu ci-dessous : Name (Nom) : assigned_by - le nom du champ Cach qui vient dtre ajout. Cela peut tre nimporte quel nom. Control Source : user_id_assign_by - le champ/colonne de la base de donnes qui sera utilis(e) pour retrouver la valeur du champ et qui sera mis(e) jour avec la nouvelle valeur en cas de changement. Data Type (Type de Donnes) : Integer - le type de la valeur lie au Control Source . Nos ID utilisateur/employ sont numriques. Default (par dfaut) : CCGetSession("UserID" ) - CCGetSession("UserID") est une fonction de CodeCharge qui rcupre lID de lutilisateur connect au systme. Ainsi, vous pouvez simplement spcifier que vous voulez enregistrer lID de lutilisateur connect dans le champ user_id_assign_by pour chaque nouvelle tche qui est soumise.

Ajouter un Champ Cach "Date Created" au Formulaire Enregistrement


1 - Configurez le nouveau champ comme indiqu ci-dessous : Name (Nom) : date_created Control Source : task_start_date Data Type (Type de Donnes) : Date Default (Par Dfaut) : CurrentDateTime - La valeur CurrentDateTime vous permet dattribuer automatiquement la date et lheure courantes aux nouvelles tches. La proprit Par Dfaut naffecte pas les enregistrements existants, donc la date et lheure des tches existantes ne seront pas modifies lors de mises jour ultrieures.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 109 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

1 - Cliquez sur le champ task_start_date dans lExplorateur de Projet. 2 - Dans la fentre Proprits, paramtrez Default Value (Valeur Par Dfaut) CurrentDateTime. Cest ainsi que le champ Etiquette peut afficher la date, bien que le champ Cach ne soit pas visible pour lutilisateur.

Tester les Champs Etiquette et Cach


Pour terminer : 1 - Passez en mode Live Page . 2 - Slectionnez ou ajoutez une Tche, et vous voyez alors votre Etiquette afficher le nom de la personne qui a attribu la tche. 3 - La version de base de votre Gestionnaire de Tches est dsormais finalise. Ne pas oublier de sauvegarder !

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 110 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL)

Etape 4
Programmation du Formulaire Enregistrement
Maintenant que vous avez cr une application simple de Gestion de Tches, vous souhaitez certainement ltendre pour quelle soit la fois plus pratique et plus utile Dans cette section, vous allez avoir un aperu sur la manire dimplmenter des applications pratiques et sophistiques par lajout de code et dactions, ceci afin doffrir des fonctionnalits supplmentaires votre Gestionnaire de Tches. Vous allez apprendre : Envoyer des notifications demail la personne qui la tche est attribue, Autoriser seulement la personne qui la tche est attribue la modifier.

Ajouter du Code dans lEv nement After Insert pour Envoyer des Emails
1 - Slectionnez le formulaire tasks dans la page tasks_maint en le slectionnant depuis l Explorateur de Projet, ou en cliquant nimporte o dans la lgende du formulaire. 2 - Dans la fentre Proprits, cliquez sur longlet Evnements. 3 - Slectionnez lvnement After Insert. 4 - Cliquez sur le bouton [+]. 5 - Slectionnez Ajouter du Code...

Une fois en mode Visualisation du Code, remplacez le commentaire gnr : // Write your own code here.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 111 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Par le code suivant : $DBIntranetDB = clsDBIntranetDB->new();

$from_name = CCDlookUp("emp_name", "employees", "emp_id=" . CCGetSession("UserID") , $DBIntranetDB); $from_email = CCDlookUp("email", "employees", "emp_id=" . CCGetSession("UserID"), $DBIntranetDB); $to_email= CCDlookUp("email", "employees", "emp_id=" . $tasks->{user_id_assign_to}->GetValue(), $DBIntranetDB);

$subject = "New task for you"; $message = "The following task was submitted:<br><br>" . "Task ID: " . CCDlookUp("max(task_id)", "tasks", "user_id_assign_by=" . CCGetSession("UserID"), $DBIntranetDB) . "<br><br>" .

$tasks->{task_desc}->GetValue();

if(open(SENDMAIL, "| sendmail $from_name")) { print SENDMAIL "From: $from_email\nTo: $to_email\nSubject: $subject\n\n$message\n.\n"; close(SENDMAIL); } Comme vous avez pu le constater, le code du dessus envoie des emails aux utilisateurs qui de nouvelles tches sont attribues. Ce qui suit est une explication du code : $from_name = CCDlookUp("emp_name", "employees", "emp_id=" . CCGetSession("UserID") , $DBIntranetDB); Paramtre from_name la valeur du champ emp_name pour lutilisateur connect. $from_email = CCDlookUp("email", "employees", "emp_id=" . CCGetSession("UserID"), $DBIntranetDB); Paramtre from_email la valeur du champ email dans la table employees o emp_id correspond lutilisateur connect. La fonction CCDlookUp est utilise pour rcuprer une valeur de base de donnes, alors que CCGetSession("UserID") rcupre lID de lutilisateur connect. $to_email= CCDlookUp("email", "employees", "emp_id=" . $tasks->{user_id_assign_to}->GetValue(), $DBIntranetDB); Paramtre to_email lemail de la personne qui est attribue la tche. La fonction CCDlookUp est utilise ici pour rcuprer ladresse email approprie. $subject = "New task for you";

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 112 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Lobjet de lemail envoyer. $message = "The following task was submitted:<br><br>" . "Task ID: " . CCDlookUp("max(task_id)", "tasks", "user_id_assign_by=" . CCGetSession("UserID"), $DBIntranetDB) . "<br><br>" . $tasks->{task_desc}>GetValue(); La variable message contient le corps de lemail qui sera envoy. La fonction CCDlookUp est utilise pour rcuprer le plus grand ID de tche soumis par lutilisateur connect (en supposant que les ID de tche sont crs par incrmentation). if(open(SENDMAIL, "| sendmail $from_name")) { print SENDMAIL "From: $from_email\nTo: $to_email\nSubject: $subject\n\n$message\n.\n"; close(SENDMAIL); } Envoie lemail en utilisant les variables cres dans le code du dessus.

Utiliser lEvnement After Update pour Envoyer des Emails


Vous avez prcdemment ajout le code ncessaire qui envoie une notification demail la personne qui la tche est attribue, une fois lenregistrement dune nouvelle tche effectue dans le systme. Maintenant, il nous faut implmenter une fonctionnalit similaire dans lvnement After Update pour informer la personne, qui la tche est attribue, lorsquune tche existante est mise jour et rattribue quelquun dautre. 1 - Cliquez sur le formulaire tasks dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez le Custom Code (Code Personnalis) dans lvnement After Update : $DBIntranetDB = clsDBIntranetDB->new();

if (CCGetSession("UserID") != $tasks->{user_id_assign_to}->GetValue()) { $from_name = CCDlookUp("emp_name", "employees", "emp_id=" . CCGetSession("UserID") , $DBIntranetDB); $from_email = CCDlookUp("email", "employees", "emp_id=" . CCGetSession("UserID"), $DBIntranetDB); $to_email= CCDlookUp("email", "employees", "emp_id=" . $tasks->{user_id_assign_to}->GetValue(), $DBIntranetDB); $subject = "A task was assigned to you"; $message = "The following task was assigned to you:<br><br>" . "Task ID: " . CCGetFromGet("task_id", "") . "<br><br>" . $tasks->{task_desc}->GetValue(); if(open(SENDMAIL, "| sendmail $from_name")) { print SENDMAIL "From: $from_email\nTo: $to_email\nSubject: $subject\n\n$message\n.\n"; close(SENDMAIL); } } Les principales diffrences entre le code ci-dessus et celui utilis dans lvnement After Insert sont les suivantes :
Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 113 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) 1 - Une condition if a t ajoute pour envoyer un email seulement si un utilisateur attribue une tche une autre personne. 2 - task_id est rcupr depuis lURL utilisant la fonction CCGetFromGet. Nous pouvons utiliser cette mthode parce que des tches peuvent tre mises jour seulement si lutilisateur est arriv la page en cours par une URL qui contient un ID de tche mettre jour. Une telle URL ressemble : http://localhost/TaskManager/tasks_maint.cgi?task_id=9

Test de lEnvoi dEmail


Avant de tester lenvoi demail : 1 - Vous devez ajouter de nouveaux utilisateurs votre base de donnes avec des adresses email correctes, ou modifier les utilisateurs existants en changeant leur adresse email : A - Vous pouvez le faire en ouvrant la base de donnes Intranet.mdb qui se trouve dans votre rpertoire Projet. B - Autrement, vous pouvez utiliser le Gestionnaire de Tches. Allez la page Employs pour y visualiser les emails utilisateur et les modifier. 2 - Une fois vos utilisateurs configurs avec le test demails, sauvegardez votre projet et passez en mode Live Page pour tester votre systme. Remarque : Vous aurez besoin de Microsoft Access 2000 ou une version suprieure pour diter manuellement le fichier base de donnes. Si votre code email fonctionne correctement, vous devez alors vous retrouver sur la page Liste de Tches aprs lajout ou la modification dune tche, et la personne qui la tche a t attribue doit recevoir un email.

Etape 5
Implmenter la Scurit dEnregistrement dans lEvnement After Initialize
Votre Gestionnaire de Tches est dsormais pratiquement complet, seule une fonctionnalit pouvant savrer importante manque, savoir la Scurit. Dans ltat actuel du gestionnaire, nimporte qui peut modifier et supprimer nimporte quelle tche. Vous voudrez certainement limiter laccs pour que seuls les employs autoriss puissent mettre jour leurs tches. Il y a plusieurs faons de procder, et nous allons examiner plusieurs dentre elles. 1 - Cliquez sur la page tasks_maint dans lExplorateur de Projet. 2 - Dans la fentre Proprits, slectionnez longlet Evnements. 3 - Ajoutez Custom Code (Code Personnalis) lvnement After Initialize de la page. Procdez comme suit : 4 - Une fois en mode Visualisation du Code, remplacez le commentaire gnr : # Write your own code here.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 114 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Par ce code : $DBIntranetDB = clsDBIntranetDB->new(); $current_task = CCGetParam("task_id", ""); $task_user_id = CCDlookUp("user_id_assign_to", "tasks", "task_id=" . $DBIntranetDB->ToSQL($current_task, $ccsInteger), $DBIntranetDB);

if ( ($current_task != 0) && (CCGetSession("UserID") != $task_user_id) ) { $tasks->{Visible} = 0; # $Redirect = "tasks_list.cgi"; } Le code du dessus vous permet de tester les diffrentes mthodes pour implmenter la scurit denregistrement : Ne pas montrer la Tche (formulaire Enregistrement) sur la page si la tche slectionne nappartient pas lutilisateur connect. Un utilisateur non autoris verra une page blanche. Vous pouvez cacher nimporte quel formulaire sur une page en lui attribuant une valeur 0 la proprit Visible (visible) du formulaire. Le code $current_task != 0 dans la condition if indique que le code sera seulement excut si lutilisateur essaie de modifier une tche existante et qui ne lui est pas attribue. La condition if sassure galement que tous les utilisateurs peuvent crer de nouvelles tches. Vous pouvez tester cette fonctionnalit en insrant le code du dessus, en passant en mode Live Page, et en essayant de modifier une tche qui ne vous est pas attribue ; vous verrez alors une page vide. Bien que cette fonctionnalit puisse ne pas tre trs sutile, elle illustre comment cacher des formulaires sur une page. Ajoutez un autre formulaire Enregistrement sur la page, qui ne puisse pas tre mis jour et qui aient juste des champs Etiquette qui montrent les informations. Une fois que vous avez vos deux formulaires sur la page, vous pouvez cacher chaque formulaire par programmation en utilisant des critres dexclusion. Rediriger des utilisateurs non autoriss sur une autre page. Seuls les utilisateurs qui les tches sont attribues peuvent visualiser la page. Vous pouvez mettre en application et tester cette fonctionnalit en modifiant lgrement le code du dessus comme montr cidessous : $DBIntranetDB = clsDBIntranetDB->new(); $current_task = CCGetParam("task_id", ""); $task_user_id = CCDlookUp("user_id_assign_to", "tasks", "task_id=" . $DBIntranetDB->ToSQL($current_task, $ccsInteger), $DBIntranetDB);

if ( ($current_task != 0) && (CCGetSession("UserID") != $task_user_id) ) { #$tasks->{Visible} = 0; $Redirect = "tasks_list.cgi"; }

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 115 -

CODECHARGE STUDIO - GUIDE DE DEMARRAGE RAPIDE (DIDACTICIEL) Ce code montre que vous devriez commenter la ligne prcdemment active, et activer la ligne qui commence avec $ Redirect. $Redirect est une variable utilise par CodeCharge Studio qui dtermine si la page en cours doit tre redirige sur une page en cours doit tre redirige sur une autre page, par exemple, dans le cas o un utilisateur naurait pas de session ouverte. Cette variable peut tre utilise seulement sur les pages ayant un accs restreint et ncessitant une authentification. Vous pouvez simplement attribuer la page de destination la variable $ Redirect et la page sera alors automatiquement redirige. Testez cette fonctionnalit en modifiant le code comme montr, en passant en mode Live Page, et enfin en essayant de modifier une tche qui ne vous est pas attribue.

CONCLUSION
Ce didacticiel vous a permis dutiliser le Gnrateur dApplication pour crer un Gestionnaire de Tches. Bien que de nombreuses autres caractristiques et amliorations puissent tre ajoutes votre application, maintenant vous vous tes familiaris(e) avec linterface de CodeCharge Studio et un grand nombre de ses fonctionnalits. Pour plus dinformations sur des points spcifiques, merci de vous rfrer au Guide Utilisateur de CodeCharge Studio.

Traduction ralise par KAPITEC SOFTWARE S.A.S. - Date : mars 2004

- 116 -

You might also like