Conventions utilisées dans le texte
HTML affiché dans un fond bleu
Javascript affiché dans un fond vert
Javascript définie par le système affiché en rouge
fichiers et répertoires affichés en Times

Quomodo Authoring Toolkit, Documentation

3. Référence

Comment surcharger un comportement par défaut

La règle pour modifier un comportement par défaut est la suivante.
  • Une action "whatever" donnée est traitée par la fonction qsn_whatever, fournie par le système. Supposons par exemple que qsn_whatever prend un argument, un noteid: qsn_whatever( id ). Selon ce que "whatever" est en réalité, le système et/ou le programme peuvent appeler qsn_whatever dans diverses occasions.
  • Si vous définisez une fonction fred_whatever, elle va automatiquement surcharger qsn_whatever. N'importe quel appel de qsn_whatever dans le contexte de votre smartnote va être redirigé vers fred_en_whatever. Bien entendu vous pouvez faire une copie de la fonction originale pour écrire votre propre fonction: recopiez les sources dont vous avez besoin dans scripts/qsn_defaultbehaviors.js.
  • A tout moment, vous pouvez appeler le comportement par défaut en forçant qsn_whatever avec un argument supplémentaire mis à true:
    qsn_whatever( id , true )
    .

Les événements

Il est important de bien comprendre quel événements appelleront votre smartnote, quelles routines sont appelées, et notamment quelles fonctions vous pouvez surcharger et comment vous devrez le faire.
Votre smartnote recevra trois genres d'appels: des appels système, à l'occasion de la création ou de la suppression d'une note, les appels d'interface standards, effectués par l'interface standard commune, à savoir les liens pour faire basculer la smartnote en mode édition et pour la faire revenir en mode normal (boutons valider et annuler), et enfin les appels d'interface spécifiques aux éléments d'interface que vous-même avez implémentés.
  1. Les appels système
    En différents occasions, par exemple durant le chargement d'une page, le système peut appeler trois fonctions:
    • qsn_addnote à l'affichage d'une smartnote existante,
    • qsn_newnote à la création d'une nouvelle instance d'une smartnote,
    • qsn_suppressnote à la suppression d'une note de la page.
    Le comportement par défaut consiste dans les suites d'appels de fonctions suivantes, qui appellent notamment vos propres fonctions (les fonctions fred_).
    	qsn_addnote
    		qsn_template
    		qsn_renderhtml
    			fred_renderhtml
    	qsn_newnote
    		qsn_addnote
    		qsn_entereditmode
    			qsn_makeedittarget
    				qsn_addnote
    			qsn_showsettings
    				fred_displaysettings
    	qsn_suppressnote
    		qsn_allowsuppress
    
  2. Les appels d'interface standards
    L'interface standard d'une smartnote est gérée dans des éléments DIV qu'il vous est recommandé d'installer dans votre smartnote, comme vous pouvez le voir fait dans les exemples.
    Les actions de l'utilisateur sur les éléments standard d'interface peuvent lancer les appels suivant:
    • qsn_editnote quand on clique sur le lien modifier (edit dans la version anglaise), dans la marge supérieure de la note,
    • qsn_canceledit quand on clique sur le bouton annuler (cancel dans la version anglaise), dans la marge inférieure de la note en mode édition,
    • qsn_saveedit quand on clique sur le bouton valider (validate dans la version anglaise), dans la marge inférieure de la note en mode édition,
    • qsn_mouseover quand la souris entre dans le rectangle de la note,
    • qsn_mouseout quand la souris quitte la note,
    • qsn_addnote quand on veut ajouter une note sur la page,
    • qsn_newnote quand on veut créer une nouvelle note (comme une réponse),
    • qsn_suppressnote quand on veut supprimer une note,
    • qsn_closenote si la note est unique, quand on veut fermer (cacher) une note pour l'utilisateur courant .
    Ces appels, à leur tour, appellent les fonctions que nous avons déjà décrites ci-dessus, et également une fonction décrite plus en détail dans le chapitre bibliothèque: qsn_notechanged. Vous devez appeler qsn_notechanged pour notifier le serveur que la note a changé si vous souhaitez que les modifications soient enregistrées.
    	qsn_editnote
    		qsn_entereditmode
    	qsn_canceledit
    	qsn_saveedit
    		qsn_addnote
    		qsn_notechanged
    	qsn_mouseover
    	qsn_mouseout
    								
    À la différence des appels système, les appels figurent dans le HTML que vous fournissez. Par exemple, qsn_editnote est le gestionnaire de l'événement onclick du lien permettant de passer une smartnote en mode édition que vous avez installé dans votre modèle d'affichage. Si pour une raison quelconque le comportement par défaut ne convient pas à vos besoins, vous pouvez choisir d'installer dans le HTML votre propre gestionnaire d'événements à la place du gestionnaire par défaut.
  3. Les appels d'interface spécifiques
    Vous êtes libre de définir l'interface de votre smartnote qui convient le mieux, et également de programmer les appels que vous souhaitez en réponse aux actions de l'utilisateur.
    Pour une meilleure cohérence graphique nous recommandons d'utiliser les contrôles personnalisés de Quomodo: le bouton radio avec un cercle bleu (un élément A modifié) au lieu des boutons radio et des listes à choix multiples, et le bouton rectangulaire (un élément A modifié également) avec un cadre gris à la place des boutons classiques.
    Si vous utilisez les boutons radio Quomodo, vous pouvez souhaiter installer le gestionnaire intégré qsn_handleclick pour gérer l'événement onclick.
    	qsn_handleclick( this )
    		fred_handleclick( r )
    								
    qsn_handleclick appelle fred_handleclick, une fonction que vous devez alors obligatoirement fournir. Indiquez this (une référence au bouton radio lui-même) comme argument de qsn_handleclick, mais notez que ce dernier va passer un argument différent r à votre fonction fred_handleclick. Cet argument r se comporte comme un bouton standard, puisqu'il possède les propriétés (en l'occurrence, les clés) r.id, r.name, et r.checked.

Bibliothèque

Cette section présente les variables globales que vos scripts peuvent utiliser, décrit les comportements par défaut des fonctions presentées ci-dessus, et présente un ensemble de fonctions supplémentaires auxquelles vos scripts peuvent faire appel.
  1. Variables globales
    Votre script peut accéder en lecture à toutes les variables globales suivantes. Vous ne devez accéder en écriture qu'à qsn_thenotes[ noteid ], noteid étant l'id de la note courante.
    • qsn_noteidslist
      Un Array Javascript contenant la liste de tous les ids des notes à installer sur la page:
      [ note_1 , note_2 , ... ]
    • qsn_thenotes
      Un Object Javascript contenant les Source Data de toutes les notes, les clés étant les noteids des smartnotes et les valeurs étant leur Source Data, sous la forme:
      {note_1: { ... }, note_2: { ... }, ...}
      C'est dans cette structure Object que figure le Source Data de vos smartnotes, et c'est elle que vous modifierez pour obtenir l'enregistrement sur le serveur des changements des notes.
    • members
      Un Object Javascript dont les clés sont les identifiants de tous les membres de l'espace (chaque membre d'un espace possède un identifiant unique dans cet espace) et dont la valeur est à son tour un Object Javascript contenant le nom du membre dans la clé username et son niveau d'autorisation ("admin", "member" ou "invite" tant que l'invitation du membre est en attente) dans la clé userlevel. Exemple:
      {"member_1": {"username": "Mary", "userlevel": "admin"} , "member_2": {"username": "Fred", "userlevel": "member"} }
    • memberid
      L'identifiant de l'utilisteur courant, une des clés de members. Par exemple:
      "member_2"
    • qsn_currstate
      l'état courant, une chaîne de caractère pouvant prendre les valeurs "edit" ou "view",
    • qsn_edittarget
      Une référence à la smartnote actuellement en mode édition (un élément DIV), ou null si aucune note n'est en mode édition.
  2. Les comportements par défaut
    Nous fournissons ci-dessous la description des comportements par défaut pour les principales fonctions impliquées dans la gestion standard des événements. Pour chaque fonction le signe surchargeable signifie que vous pouvez définir une fonction de votre choix dont le comportement remplacera le comportement par défaut, suivant les règles décrites dans la première section.
    Pour écrire votre propre fonction, vous pouvez partir de la fonction définie par défaut: les fonctions que vous pouvez vouloir recopier se trouvent dans scripts/qsn_defaultbehaviors.js.
    Rappelez-vous que l'appel par exemple de qsn_addnote( id , true ) (avec un argument supplémentaire égal à true) force le comportement par défaut et ne sera pas redirigé vers votre fonction fred_addnote, qui peut donc inclure un tel appel pour invoquer le comportement par défaut.
    • qsn_addnote( id ) affiche une smartnote existante dans un nouveau bloc, soit en mode view soit en mode edit, selon la valeur de qsn_currstate. surchargeable
    • qsn_template( id ) retourne l'id du modèle HTML de votre smartnote, selon la valeur de qsn_currstate, et en supposant que vous avez fourni les ids de vos modèles sous la forme fred_notetemplate et fred_notetemplate_edit. surchargeable
    • qsn_renderhtml( id ) appelle common_renderhtml, puis votre fonction fred_en_renderhtml, que vous devez obligatoirement fournir dans votre fichier Javascript. Utilisez qsn_currstate pour savoir si l'appel s'effectue en mode view ou en mode edit. surchargeable
    • qsn_initdone() retourne true si l'initialisation des smartnotes de la page courante est terminée, sinon false.
    • qsn_newnote( kind ) est appellé par le système quand l'utilisateur demande la création d'une nouvelle instance de smartnote avec kind comme signature. surchargeable (la fonction personnalisée fred_newnote( ) ne requiert aucun argument).
    • qsn_entereditmode( id ) fait une copie des données, masque la note courante, l'affiche en mode édition, affiche le bloc d'options dans la marge gauche, modifie l'opacité de toutes les autres notes pour les rendre semi-transparentes, et enfin ramène la note courante au premier plan.surchargeable
    • qsn_makeedittarget( id ) masque la smartnote, et l'affiche en mode édition.
    • qsn_showsettings( id ) affiche le bloc d'options dans la marge gauche, et appelle votre routine fred_displaysettings, que vous devez obligatoirement fournir, et qui doit mettre à jour le bloc d'options pour rendre compte des propriétés de la note actuellement en mode édition.
    • qsn_username( id ) retourne le nom d'utilisateur du créateur de la note identifiée par id.
    • qsn_suppressnote( id ) peut être appellé par le système, ou par le lien supprimer de votre smartnote. surchargeable
    • qsn_allowsuppress si le créateur de la note n'est pas Quomodo, demande à l'utilisateur de confirmer qu'il veut supprimer la note. surchargeable
    • qsn_editnote( id ) passe la smartnote en mode édition, en mettant qsn_currstate à true puis en appelant qsn_entereditmode.
    • qsn_canceledit() met fin au mode édition de la note, rétablit la note qui était en mode édition (et les autres) dans l'état qu'elle avait avant de passer en mode édition, et rétablit également qsn_thenotes à la valeur précédemment stockée par qsn_entereditmode. surchargeable
      Note: qsn_canceledit ne prend pas d'argument. Ainsi, pour appeler le comportement par défaut, ajouter un argument true:
      qsn_canceledit( true )
    • qsn_saveedit() a le même effet que qsn_canceledit mais le nouveau contenu de qsn_thenotes[ noteid ] est enregistré sur le serveur. surchargeable
    • qsn_mouseover( elem , e ) est appelé périodiquement tant que la souris est au-dessus de la smartnote. Le comportement par défaut consiste à rendre visibles les liens en haut de la note (modifier et supprimer) et à transformer le curseur en flèche de redimensionnement si la souris est assez proche du bord droit de la note. surchargeable
      elem: une référence à l'élément DIV qui affiche la smartnote,
      e: la variable globale d'événement.
    • qsn_mouseout( elem , e ) est appelée quand la souris quitte la note. Le comportement par défaut consiste à rendre invisibles les liens en haut de la note et à remettre le curseur standard.surchargeable
      elem: une référence à l'élément DIV qui affiche la smartnote,
      e: la variable globale d'événement.
    • qsn_handleclick( this ), s'il est installé comme gestionnaire de l'événement onclick dans un bouton radio personnalisé Quomodo, lance un appel:fred_en_handleclick( r )r contient trois clés: r.id, qui contient la valeur de l'attribut id du bouton radio, r.name, qui contient son attribut name, et r.checked, un booléen qui décrit le nouvel état du bouton.
      this: une référence à l'élément de HTML du bouton
    • qsn_clonejsontemplate( notekind ) sert à cloner le JSON associer à une smartnote.surchargeable
      notekind: le type de la note à cloner
    • fred_en_upgradejson( r ) est une fonction que vous devez inclure dans votre script pour gérer les Source Data produites par les versions antérieures de votre smartnote. fred_en_upgradejson est appelé automatiquement quand le script détecte un Source Data avec un numéro de version inférieur au numéro de version le plus récent. r inclut une clé r.version, un nombre entier que vous devez comparer avec la version courante de votre smartnote, qui est stockée dans fred_json_template.version. fred_en_upgradejson doit retourner le Source Data mis à jour, dans un nouveau Object Javascript. Le résultat doit donc inclure une clé version remise à jour, c'est-à-dire dont la valeur est égale à fred_json_template.version.
      r: le Source Data original de votre smartnote, possiblement d'une version antérieure.
  3. Les comportements par héritage
    L'héritage (en anglais inheritance) est un principe connu de la programmation orientée objet qui permet, chez Quomodo, de ne pas avoir à repartir de zéro lorsque l'on veut créer une smartnote. L'héritage concerne donc une smartnote enfant et une ou plusieurs smarnote(s) parent(s). Par analogie, la note enfant possède les caractéristiques (données) et les comportements (fonctions) de ses parents.
    Bien que dans la vie ceux sont les parents qui conçoient l'enfant, c'est à nous de dire quels sont les parents de notre smartnote. Pour cela il faut spécifier les parents dans le JSON. Cette manipulation permet de surcharger les fonctions de la smartnote enfant par celles de ses parents et donc d'éviter de recopier les mêmes lignes de codes plusieurs fois.
    Par exemple, si on voulait que fred hérite de la note bnq_intl, on devrait spécifier son JSON de cette manière :

    var fred_json_template = {common : { inherited : [ { notekind : "bnq_intl" } ], n_days: 3, max_t: {"11°C", "14°C", "13°C"}, min_t: {"4°C", "8°C", "4°C"}}
    La clé inherited situé dans common a pour valeur une liste de clé-valeur, ou les clés sont des notekind et les valeurs sont des types de notes. On peut ajouter autant de notekind que l'on souhaite en les séparant par des virgules.
    Remarque. Lorsqu'une smartnote hérite de plusieurs autres smartnotes parents et que celles-ci possèdent des fonctions qui ont les mêmes noms, c'est la fonction associée à la première smartnote de la liste inherited qui est prise en compte chez l'enfant. Sinon si le premier parent ne possède pas une fonction que le deuxième parent possède, alors c'est celle du deuxième parent qui est prise en compte.
  4. Enregistrement des modifications d'une note
    Quand l'utilisateur procède à des modifications sur la smartnote, vous souhaiterez la plupart du temps enregistrer les modifications sur le serveur. L'enregistrement des modifications permet que 1/ la prochaine fois que l'utilisateur rechargera la page les modifications seront prises en compte, et 2/ les autres membres du même espace qui sont connectés à ce moment-là voient les modifications sur leur écran en temps réel.
    Les modifications qui ont lieu pendant que la smartnote est en mode édition sont automatiquement enregistrées quand l'utilisateur clique le bouton valider, du moment que vous avez installé le gestionnaire par défaut qsn_saveedit dans ce bouton, ou que le gestionnaire personnalisé fred_saveedit que vous avez pu installer appelle lui-même le comportement par défaut.
    Par contre, il se peut que vous installiez des éléments d'interface dans votre smartnote telle qu'elle est visible en mode normal ("view"), et il se peut que les actions de l'utilisateur dans cette interface entraînent des modifications qui doivent être enregistrées. Dans ce cas, votre gestionnaire doit appeler explicitement une des trois fonctions prévues à cet effet, et que nous présentons ci-dessous.
    Remarque importante. Vous devez respecter une précaution importante. Si vous installez un gestionnaire d'événement pour un événement souris - par exemple un gestionnaire de clic onclick = "fred_somehandler( this )" - et si cette fonction appelle à un certain moment une des fonctions d'enregistrement sur le serveur, vous devez impérativement désactiver la gestion par défaut des événements souris. Pour cela, installez un gestionnaire de l'événement onmousedown qui devra appeler la fonction disabledrag(). Autrement dit, si votre fonction fred_somehandler appelle, par exemple, qsn_notechanged, alors:
    onclick = "fred_somehandler( this )"
    implique de programmer dans le même élément un attribut:
    onmousedown = "disabledrag()"
    ou, si vous installez les gestionnaires d'événements dynamiquement en Javascript:
    theelement.onmousedown = disabledrag
    (où theelement contient une référence à l'élément DIV). Sinon, le gestionnaire par défaut peut envoyer une requête AJAX au serveur juste avant la vôtre, ce qui peut annuler celle-ci et finalement empêcher l'enregistrement des modifications.
    Voici les fonctions que vous devez appeler quand vous devez enregistrer les modifications de la note sur le serveur.
    • qsn_notechanged( id , action , callBack ) envoie au serveur la version courante des données de la note dont le noteid est id, autrement dit qsn_thenotes[ id ]. Le serveur va enregistrer les données, et va retourner ou non un nouvel noteid pour la note, en fonction de si action est "newnote" (signifie que les données correspondent à une nouvelle note, qui n'a encore jamais été enregistrée sur le serveur) ou "notechanged" (la note existait déjà, et on souhaite enregistrer des modifications). Appelez qsn_notechanged avec "notechanged" comme paramètre action chaque fois que vous voulez stocker le dernier état de la note sur le serveur.
      id: le noteid de la note dont il faut enregistrer les modifications,
      action: une chaîne de caractères, égale soit à "newnote" soit à "notechanged" selon qu'il s'agit d'une nouvelle note ou pas,
      callBack: facultatif, une référence à une routine. Si elle est présente, cette routine recevra les données retournées par le serveur, à savoir la liste des changements n'ayant pas encore été pris en compte par la page (par exemple, une note nouvellement créée par un autre utilisateur). Si vous ne fournissez pas d'argument callBack, la callBack par défaut est appelée, celle-ci applique les changements renvoyés par le serveur et le cas échéant (cas d'une note nouvellement créée) attribue un nouvel identifiant (unique) à la nouvelle note: à sa création dans la page, une nouvelle note reçoit en effet un id unique mais provisoire.
    • qsn_spacedefaultsnotechanged( id , callBack ) fonctionne comme qsn_notechanged sauf que qsn_spacedefaultsnotechanged limite la sauvegarde au contenu de la clé spacedefaults des Source Data. Le système utilise les paires clé-valeur trouvées dans spacedefaults à la place de ceux contenus dans le sous-objet user tant que ce dernier n'est pas renseigné - typiquement, tant que l'utilisateur n'a pas chargé la page où est installée la smartnote. Vous pouvez par conséquent stocker certains changements ou certains réglages spécifiques effectués par l'utilisateur créateur de le smartnote dans le sous-objet spacedefaults: ils seront utilisés comme valeurs par défaut dans la page des autres utilisateurs. Le memberid de l'utilisateur qui a créé la smartnote est stocké dans le champ common.ownerid du Source Data de la smartnote.
    • qsn_usernotechanged( id , callBack ) fonctionne comme qsn_notechanged sauf que qsn_usernotechanged limite la sauvegarde au contenu de la clé user du Source Data, le sous-objet dans lequel sont stockées (s'il y en a) les données privées de l'utilisateur (celles que les autres utilisateurs n'ont pas à connaître).
    • qsn_childremoved( id , callBack ) est appelée quand une note fille est supprimée.
    Quand vous testez votre smartnote dans l'environnement de développement (QAT), bien entendu les données ne sont pas stockées sur un serveur distant. A la place, QAT utilise les cookies de votre navigateur pour simuler le serveur, et y stocker les données. La clé sous laquelle ces données sont stockées dans les cookies est serverdata.
    Ainsi, afin de simuler le comportement normal, dans lequel la page recharge automatiquement les notes qui ont été précédemment enregistrées, la page HTML doit pouvoir utiliser les cookies. Sous certaines configurations (Safari), ceci peut impliquer d'ouvrir le HTML, non comme un fichier (protocole file://), mais par l'intermédiaire d'un serveur Web local avec http://localhost.
  5. Modifications de l'aspect d'une note
    • applymove( elem , left , top , width ) déplace un élément HTML. L'élément HTML doit remplir quelques conditions afin d'être mobile, donc cela ne s'applique pas à tous les éléments, mais applymove fonctionne avec les smartnotes elles-mêmes. applymove change la coordonnée gauche de l'élément seulement si l'élément a déjà une clé left dans son attribut de style(pas dans une classe déclarée dans un css), et de même pour top et width.
      elem: une référence à l'élément HTML considéré.
      left, top, width: trois entiers, les futures valeurs des coordonnées gauche et supérieure de l'élément HTML considéré, et de sa largeur, en pixels.
    • qsn_top( id ) retourne la position par rapport au haut de la page de la smartnote identifiée par id.
      id: l'id de la smartnote considérée.
    • qsn_left( id ) retourne la position par rapport à la gauche de la page de la smartnote identifiée par id.
      id: l'id de la smartnote considérée.
    • qsn_width( id ) retourne la largeur de la smartnote identifié par id.
      id: l'id de la smartnote considérée.
    • qsn_puttofront( id ) ramène au premier plan la note possédant id comme noteid.
      id: the noteid of the note to bring to front,
    • qsn_setselected( elem , selected ) affiche ou supprime un cadre bleu épais autour de la note concernée, pour indiquer qu'elle est (ou qu'elle n'est plus) sélectionnée.
      elem: une référence à l'élément HTML concerné - logiquement, une référence à l'élément DIV qui fait votre note.
      selected: un booléen, true dessine le cadre, false le supprime.
    • qsn_dim ( elem , dimtarget , slow ) modifie la transparence de la note dont on passe la référence.
      elem: une référence à l'élément HTML concerné -logiquement, une référence au DIV qui fait votre note.
      dimtarget: la valeur à atteindre pour l'opacité. 1 = opaque, 0 = transparent.
      slow: un booléen, true change graduellement la transparence, false change la transparence immédiatement.
  6. Les contrôles personnalisés
    Nous vous recommandons, au lieu des boutons standard, des boutons radio, et des cases à cocher, d'utiliser les contrôles personnalisés de Quomodo, comme décrit dans QAT: Guide de programmation. Voici les fonctions à appeler pour utiliser ces contrôles.
    • disabledrag() neutralise la gestion par défaut du clic et du glisser-déposer de la smartnote. À chaque fois que vous installez un contrôle, ou tout autre élément où vous voulez gérer le clic de l'utilisteur - typiquement dans le gestionnaire d'événement onclick - installez également "disabledrag()" comme gestionnaire de l'événement onmousedown, pour désactiver le comportement par défaut. Si vous n'appelez pas "disabledrag()" sur onmousedown, l'utilisateur pourra seulement déplacer la note mais pas utiliser votre interface.
    • getchecked ( elemOrId ) retourne l'état du bouton radio personnalisé.
      elemOrId: une référence à l'élément HTML concerné, ou son id.
    • setchecked ( elemOrId , checked ) place l'état d'un bouton radio personnalisé. Selon si le bouton appartient à une famille (un ensemble de boutons avec le même attribut name) ou pas, il se comporte comme le bouton radio standard ou comme une case à cocher standard.
      elemOrId: une référence à l'élément HTML concerné, ou a son id.
      checked: le nouvel état du bouton. Si le bouton appartient à une famille, le clic ne peut qu'activer le bouton en question et désactiver les autres (on ne désactive pas un bouton radio en cliquant le bouton actif).
    • getcheckedid( buttonfamilyname ) retourne l'id du bouton radio de la famille qui est activé.
      buttonfamilyname: le nom partagé par une famille de boutons.
  7. Fonctions DOM supplémentaires
    • getelement ( id ) est un raccourci pour document.getElementById( id ). getelement retourne null quand aucun élément avec l'id spécifié n'existe.
      id: l'id à rechercher
    • getContainer( elem ) retourne une référence à l'élément DIV correspondant à la note qui contient elem.
      elem: un élément HTML appartenant à une note
    • getElementsByClassName( elem , s ) retourne, dans un nouveau tableau, tous les noeuds non-textuels contenus dans elem qui possèdent s dans leur attribut class. s doit apparaître comme mot, c'est-à-dire séparé des autres mots par un espace.
      elem: un élément HTML appartenant à une note
      s: une chaîne de caractères composée d'un ou de plusieurs mots: getElementsByClassName recherchera les éléments possédant tous les mots de s dans son attributclass.
    • getElementByClassName( elem , s ) retourne le premier noeud non-textuels contenu dans elem qui possède s dans son attribut class. s doit apparaître comme mot, c'est-à-dire séparé des autres mots par un espace.
      elem: un élément HTML appartenant à une note
      s: une chaîne de caractères composée d'un ou de plusieurs mots: getElementByClassName recherchera le premier élément possédant tous les mots de s dans son attributclass.
  8. Fonctions de gestion de Date/Temps
    • q_isot2string ( s ) permet de convertir un objet String de la forme date ISO (ISO Time) en objet String de la forme ddmmyyhhmm.
      s: la date ISO à convertir
    • q_date2isot( d ) permet de convertir un objet Date en un objet String de la forme date ISO.
      d: un objetDate
  9. Créer une note unique
    Il se trouve dans certain cas que l'on veuille avoir, sur une page donnée, une et une seule occurence de la smartnote que l'on conçoit. Ceci est possible en spécifiant que la note est unique dans son JSON. Par exemple, si on voulait rendre unique la note fred, on devrait spécifier son JSON de cette manière :
    var fredunique_json_template = {common: {unique: { true }}, members: {mem_00001: {common: {invisible: false }}}, n_days: 3, max_t: {"11°C", "14°C", "13°C"}, min_t: {"4°C", "8°C", "4°C"}}
    Comme la note est unique pour tous les membres, chaque membre peut choisir de fermer la note. Dans ce cas, la note est seulement cachée à l'utilisateur qui l'a fermée et reste visible aux autres membres de l'espace. Pour cela, vous pouvez deviner qu'il faut évidemment mettre à jour la partie soulignée du JSON ci-dessus en remplaçant mem00001 par le memberid du membre ayant effectué l'action.

    Le fait qu'une smartnote soit unique implique, comme on l'a vu, un changement partiel dans ses comportements. Voici la liste des fonctions qui se comportent différement si la smartnote est unique:
    • qsn_newnote ( kind ) vérifie, avant de créer la smartnote, si celle-ci ne serait pas seulement cachée à l'utilisateur. Si c'est le cas, elle met invisible à false dans le JSON, sinon elle créée la note comme d'habitude.
    • qsn_closenote( id ) vérifie, avant de fermer la smartnote (invisible à true), si celle-ci est bien unique. Sinon, elle supprime la note. surchargeable.
    Il faut faire attention à rendre accessible par des contrôles (boutons, comportement par défaut ou autres) les deux cas d'utilisations : fermeture de la note (qsn_closenote( id )) et suppression de la note (qsn_suppressnote( id )). Il est important de savoir qu'une note, tant qu'elle n'est pas supprimée de l'espace, serait en théorie périodiquement facturée au client. Mais une smartnote que l'on ne peut pas supprimer de l'espace est considérée comme buggée et ne serait pas acceptée.
English site >>
QAT: Référence