en | fr | Contact  | Imprimer  | Partager

FrameBeurk documentation

6. Fonctionnalités

6.1. Réécriture d’URI

(Voir Miscellaneous pour une réflexion sur le terme d’URI)

Pour activer la réécriture d’URI, le paramètre de configuration « UrlRewriting » doit être positionné à true, et le fichier .htaccess (pour Apache) correctement paramétré (voir Miscellaneous).

Les requêtes normalement destinées à index.php et ajax.php sont alors redirigées vers interpreteur.php qui va analyser l’URL et alimenter le tableau PHP des paramètres $_REQUEST[]. Les règles de construction de l’URL réécrite sont schématisées ci-dessous :


  • Le bloc (1) n’est présent que si la requête est effectuée par Ajax. Il précise dans quelle div la vue devrait être affichée à son retour du serveur.
  • Le bloc (2) est habituellement toujours présent. S’il est absent -et que le bloc (3) l'est aussi, la vue configurée par défaut est affichée.
    Le 4ème terme du bloc est un « slug » -libellé composé de mots en lettres minuscules séparés par des tirets, utile au référencement, mais qui n’est pas interprété, donc facultatif. Ce sont les autres termes du bloc qui définissent la clef unique d’accès à la page.
    Dans la gestion actuelle des URL réécrites, le slug n’est pas présent dans les liens générés par FrameBeurk mais présent dans les URL canoniques renvoyées dans les pages et vues.
  • Le bloc (3) facultatif demande une Vue avec Jeton Clef. Les blocs (2) et (3) sont mutuellement exclusifs.
  • Le bloc (4) spécifie la vue à afficher en cas d'erreur de l'action de Maj demandée par le bloc (5) ou le bloc (6).
  • Le bloc (5) facultatif demande une Maj en spécifiant une clef complète pour la Maj.
  • Le bloc (6) facultatif demande une Maj avec Jeton Clef. Les blocs (5) et (6) sont mutuellement exclusifs.

6.2. Navigation Ajax

Dans le cas d’une navigation par Ajax, l’historique des pages reste accessible à la navigation par page précédente / page suivante, toujours par Ajax, et de manière transparente. En effet, au retour de la réponse du serveur, le client récupère l’URL canonique qui y est présente et alimente l’objet Javascript history.

L’URI complète avec action Maj, DivVue… ne s’affiche donc jamais dans la barre d’adresse du navigateur tant qu’on navigue par Ajax -que la réécriture d’URL soit active ou pas.

6.3. Amélioration des balises

La navigation par ajax utilise une fonctionnalité plus large du framework destinée à associer un comportement à un élément de la page affichée, sans inclure de code Javascript dans le code HTML : C’est l’amélioration des balises.
Celle-ci utilise la possibilité de créer des attributs HTML. Le principe de fonctionnement est le suivant :

  • On associe en configuration des attributs à des fonctions javascript
  • A partir de cette configuration, FrameBeurk génère la fonction javascript qui va, à chaque chargement de page ou de div, associer les fonctions Javascript aux évènements OnClick des éléments portant l’attribut.

A titre d’exemple, pour gérer la navigation ajax, on a la configuration suivante :

$CONFIG['Tissage']['Beurk']['Attribut']['data-ajax'] = 'beurk_lienAmeliore';

Le code de la page sera, dans l’exemple d’un lien vers une vue destinée à saisir une action de modification :

<a href="/forum2/modifie-Commentaire-148" data-ajax="modifieCommentaire148" >Editer...</a>

Lorsque l'utilisateur clique sur un lien ayant l’attribut data-ajax, la fonction « beurk_lienAmeliore » va lire le contenu de l’attribut pour déterminer dans quelle div devra afficher le résultat de la requête ajax. La fonction va donc recomposer l’URI à partir du contenu des attributs data-ajax et href.

6.4. Couche de communication avec la DB

Pour donner au framework une interface indépendante de la base de données SQL utilisée, une couche de communication apporte des fonctions « chapeaux » aux fonctions standard de l’interface mysql (ou mysqli), avec principalement 2 améliorations :

  • Le cumul du temps passé dans les requêtes SQL de la transaction.
  • La possibilité d’écrire ses requêtes sous forme de tableau associatif avec une notation qui reste très proche du sql.
    • Le 1er découpage de la requête conduit à placer les clauses SELECT, FROM, WHERE… dans des éléments différents du tableau.
    • Le 2nd découpage permet de placer les colonnes d’une clause SELECT, SET ou VALUES dans un sous-tableau. Exemple :
array( 'SELECT' => array('S.IdSection', 'S.Section', 'S.NbrSujets', 'S.NbrSujetsArchives',                      'S.IdCreateur', 'U.User', 'S.TsCRE', 'S.TsMAJ', 'S.Etat'),    'FROM' => 'Rhum_Section AS S '              . 'LEFT JOIN Uzers_User AS U ON S.IdCreateur = U.IdUser '    'WHERE' => "S.IdSection = '$IdSection'");

L’usage de requêtes tableaux n’est pas obligatoire, sauf dans le cas de l’utilisation des Permissions (fonctionnalité décrite plus loin)


© ToolOscope SASU 2010-2015. © Arnaud De Rette 2016-2018. Tous droits réservés.