Généralités

Compatibilité PHP 5.3 et Apache Solr 1.4

La version 3.0.2 de RBS Change est maintenant compatible avec toutes les versions de PHP supérieures ou égales à 5.1.6 incluant PHP 5.3. Nous recommandons aux développeurs de s'assurer que leurs développement spécifiques respectent dans la mesure du possible cette compatibilité avec PHP 5.3.

RBS Change 3.0.2 est aussi compatible avec la version 1.4 d'Apache SOLR.


Nouvelles fonctionnalités

Framework

Filtres et Restrictions "Commence/termine par (sensible/insensible à la casse)"

Pour permettre l'évolution 8034, les restrictions beginsWith, ibeginsWith, endsWith et iEndsWith ont été introduites. Elles sont des simples alias des restrictions like et ilike qui permettaient  déjà d'exprimer ce type de restrictions. Ces restrictions sont alors disponibles sous formes de filtres de requêtes en backoffice pour pouvoir réaliser des filtres du type "les clients dont le code postal commence par 67".

Exemple d'utilisation de la restriction beginsWith : 

// Retrouve tous les mots clés qui commencent par RBS
$rbsKeywords = blog_KeywordService::getInstance()->createQuery()
->add(Restrictions::beginsWith("label", "RBS")) ->find();
// La ligne précédente est équivalente à
$rbsKeywords = blog_KeywordService::getInstance()->createQuery()
->add(Restrictions::like("label", "RBS", MatchMode::START())) ->find();


Nouvelles méthodes dans patch_BasePatch

Introduction de executeModuleScript qui permet d'exécuter un script d'import XML contenu dans le dossier setup d'un module depuis un patch.

    /**
     * @param String $scriptName
     * @param String $module
     */
    protected function executeModuleScript($scriptName, $module)
    {
        // [...]
    }

Introduction de execChangeCommand qui permet d'exécuter des commandes change ou changedev. C'est la méthode à utiliser plutôt qu'un exec. Exemple :

    /**
     * Entry point of the patch execution.
     */
    public function execute()
    {
        // Implement your patch here.
        echo $this->execChangeCommand("compile-blocks");
        echo $this->execChangeCommand("compile-locales", array("markergas"));
    }

HTTPClient : changement de comportement

La correction du bug #11567 nous a conduit à changer légèrement le comportement de la classe HTTPClient. Dorénavant, le tableau de paramètres passé en tant que deuxième argument de la méthode post de HTTPClient voit ses arguments "URL encodés" avant d'effectuer la requête POST. Si vous utilisiez cette méthode en encodant les paramètres manuellement, ce n'est dorénavant plus nécéssaire (et provoquerai un double encodage des paramètres problématique).

Une nouvelle méthode download() a également été introduite. Cette méthode permet le téléchargement de ressources web directement vers le système de fichiers, sans charger le contenu en mémoire.

f_web_http_Headers : nouvelle classe de manipulation des en-têtes de requête

Afin de supprimer la dépendance à la librairie PEAR HTTP_Header, nous avons introduit une nouvelle classe, f_web_http_Headers, dont l'objectif est de centraliser la manipulation des headers de requête. Pour l'instant, elle ne contient qu'une méthode mais sera amenée à s'enrichir. Exemple d'utilisation :

    public function _execute($context, $request)
    {
        f_web_http_Header::setStatus(503);
        die("<h1>Service Unavailable</h1>");
    }

Si vous souhaitez continuer à utiliser la librairie PEAR HTTP_Header, merci de la déclarer dorénavant explicitement comme dépendance de vos modules dans les fichiers change.xml!

Implémentation du protocole OAuth 1.0a

Des classes qui implémente le protocole d'authentification OAuth 1.0a ont été introduites dans framework/f_web/oauth . Vous pouvez les utiliser pour :

  • effectuer les requêtes d'obtentions de jetons (tokens) d'accès
  • effectuer des requêtes authentifiées à l'aide d'un jeton d'accès
  • contrôler la validité des informations d'authentification
Exemple d'utilisation - effectuer une requête avec un jeton existant :
            $token = $profile->getOauthaccesstoken(); // récuparation du token
            $consumer = $profile->getOauthconsumer(); // récuparation du consumer
            $oauthRequest = new f_web_oauth_Request('http://mon-super-site.fr/mon-url', $consumer, f_web_oauth_Request::METHOD_GET);
            $client = new f_web_oauth_HTTPClient($oauthRequest);
            $data = $client->execute();

Catalogue

Nouveau type de produit : les groupes de produits (bundle)

Dans l'objectif d'enrichir la typologie de produit disponible dans le module catalogue, les groupes de produits ont été introduits. Ils permettent de constituer des packs composés de produits simples en quantités variables  (et uniquement de produits simples pour l'instant) existants dans le catalogue  : (exemple: 1 ordinateur + 1 écran + 1 souris ou 2 manettes de jeux + 1 console de jeux + 1 jeu). Le groupe de produits à un prix qui lui est propre : il est donc possible de réaliser des kits à prix réduits simplement de cette manière.


E-Commerce étendu

Filtre "Abandon de panier"

Pour permettre une relance manuelle des clients ayant abandonnés leurs paniers, le module "E-Commerce étendu" propose un filtre "Abandon de panier", utilisable dans le module Comptes clients, pour permettre de constituer des groupes dynamiques et donc des listes d'abonnés pour le module E-mailing.

screenshot_paniers_abandonnés

exemple d'utilisation du filtre "abandon de panier"

Sites et Pages

Génération d'URL

Suite à la demande d'évolution 6759, RBS Change va maintenant systématiquement comparer l'URL demandée pour un document avec l'URL générée par LinkHelper::getDocumentURL

Si les deux URL ne sont pas égales (hormis bien entendu les paramètres de requête), une redirection 301 est effectuée vers l'URL.

Permalink

La classe LinkHelper possède une nouvelle méthode statique qui permet de générer un permalien pour un document.

$permalink = LinkHelper::getPermalink(DocumentHelper::getDocumentInstance(12050));
// Sort : http://centos.rbschange.fr/fr/permalink/12050
Lorsque quelqu'un click sur un permalien, une redirection 301 est automatiquement générée vers l'URL actuelle du document.

Formulaires

Gestion des accusés de réception

Suite à la demande d'évolution 7576, les formulaires peuvent maintenant activer ou non l'envoi d'un accusé de réception. Le message envoyé est configurable dans le module notifications et une nouvelle propriété "destinataire de l'accusé de réception" dans les champs de type e-mail permet de déterminer son destinataire.

Amélioration de la gestion des destinataires

  • ajout d'un dossier spécial pour les groupes de destinataires.
  • possibilité de créer un nouveau groupe de destinataires depuis l'édition d'un formulaire.
  • possibilité de sélectionner plusieurs groupes de destinataires même si aucun champ de sélection n'est présent (l'ensemble des destinataires recevra alors les mails).
  • si plusieurs groupes de destinataires sont sélectionnés mais qu'aucun champ de choix du groupe destinataire n'est présent, tous les groupes sélectionnés sont destinataires.

Amélioration de la saisie dans un formulaire

  • ajout d'une valeur de configuration dans les champs mail pour activer ou non l'initialisation du champ avec l'adresse e-mail de l'utilisateur connecté.
  • lorsque le CAPTCHA est activé, celui-ci n'est visible que si l'utilisateur n'est pas connecté.
  • ajout d'options permettant d'activer ou non l'auto-complétion, l'auto-correction et l'auto-capitalisation des champs texte sur iPhone.

Améliorations en backoffice

  • le panneau de résumé affiche maintenant la raison lorsqu'un formulaire n'est pas publiable.
  • possibilité de supprimer un formulaire sans devoir préalablement supprimer les champs (effacement récursif dans toutes les langues).
  • possibilité de supprimer un formulaire contenant un champ "verrouillé".
  • la sélection du champ qui sert de condition d'activation à un champ ou groupe de champs se fait maintenant via une liste déroulante de champs valides plutôt que par un sélecteur de ressource, évitant de devoir les champs dans l'arbre du module.

Meilleure gestion du statut de publication

  • un formulaire n'est plus publiable dans une langue donnée s'il contient des champs non-traduits dans
    cette langue.
  • les formulaires non-publiés ne sont plus affichés sur le site. Pensez donc à vérifier que vos
    formulaires sont bien publiés.

Ajout du document baseform

Cette évolution est purement technique et n'influe pas directement sur le fonctionnement du module. Elle a consisté à extraire une partie du fonctionnel des formulaire dans un nouveau document baseform, dont hérite le formulaire standard.

L'objectif est de permettre de créer d'autres types de formulaires éditable en backoffice mais dont la fonction n'est pas d'envoyer un e-mail. Un autre module peut ainsi, en étendant baseform, apporter un nouveau type de formulaire dédié à son fonctionnel spécifique. Ce nouveau formulaire sera éditable comme un formulaire standard mais pourra avoir des propriétés supplémentaires adaptées à son utilisation.

Le premier module à utiliser ce mécanisme est le nouveau module Demandes introduit dans cette version 3.0.2 de RBS Change.

Demandes

Il s'agit d'un nouveau module introduit suite à la demande d'évolution 7576 pour gérer les demandes provenant du site. Le traitement d'une demande se passe alors sur le site au travers d'un workflow et non plus uniquement par e-mail.

Le module propose les éléments suivants :
  • un nouveau type de formulaire spécifique au demandes disponible en backoffice dans le module formulaire.
  • la soumission d'un formulaire de demande crée une demande (visible en backoffice dans le moduledemandes) avec un workflow de traitement.
  • le formulaire de demande est paramétré pour spécifier les destinataires (utilisateurs backoffice), le workflow utilisé, les notifications...
  • tant que la demande est en cours, l'auteur et les destinataires peuvent y ajouter des messages.
  • une demande peut être soumise sur le site par un utilisateur anonyme ou enregistré.
  • si le demandeur est enregistré sur le site, il dispose d'une page listant ses demandes passées. S'il n'est pas inscrit, il ne pourra accéder à ses demande que via les liens donnés dans les notifications associées (le lien contiendra alors un code d'authentification garantissant que lui seul peut y accéder).
  • deux workflows différents en standard : avec et sans notifications de rappels.

Médiathèque

Utilisation une bibliothèque d'icônes externe

Il faut spécifier la bibliothèque dans le fichier project.xml, dans la section config/modules/media.

Exemple :
                 <icons>
                     <entry name="library">/usr/share/pear/rbs/webedit4/libs/icons-1.0</entry>
                 </icons>

Moteur de recherche

Deux nouveaux blocs remplacent les anciens blocs de formulaire et de résultats de recherche. Les deux anciens blocs sont toujours là pour compatibilité mais dépréciés et masqués par défaut dans la barre de blocs de l'éditeur de page.

Ces deux nouveaux blocs, outre une réécriture plus au goût du jour, introduisent deux nouvelles fonctionnalités.

Introduction du standard OpenSearch

En l'occurrence il s'agit de la partie qui permet, depuis certains navigateur (actuellement, Firefox et Interet Explorer 7 et 8) d'ajouter le moteur de recherche du site à la barre de recherche du navigateur.

Spécialisation du rendu des résultats de recherche par document

À l'heure actuelle, dans les modules standards, deux utilisent cette fonctionnalité :
  • le module Catalogue : les produits sont affichés avec mention de leur rayon, leur prix et leur visuel.
  • le module Forums : les messages sont affichés avec mention du sujet et du forum qui les contiennent.
Cette spécialisation peut être faite pour n'importe quel type de document en définissant dans le service associé la méthode getSolrserachResultItemTemplate qui renvoie un tableau contenant le module et le template à utiliser.

Par exemple, dans le service forums_PostService du module forums on trouve la méthode suivante :

    /**
     * @param forums_persistentdocument_post $document
     * @param string $bockName
     * @return array with entries 'module' and 'template'.
     */
    public function getSolrserachResultItemTemplate($document, $bockName)
    {
        return array('module' => 'forums', 'template' => 'Forums-Inc-PostResultDetail');
    }

Associé au template Forums-Inc-PostResultDetail.all.all.html.

Marqueur Google Analytics

Amélioration du tracking e-commerce

Le nom de la boutique est remontée systématiquement dans le tracker analytics. Il est aussi possible de tracker les transactions hors taxes ou toutes taxes ainsi que tracker les transactions "non payées".

Utilisateurs

Ajout dans le bloc d'authentification, ajout d'un paramètre "hideRegistrationLinks" permettant de ne pas inclure les liens vers les pages d'inscriptions. Ce paramètre est par exemple utilisé par le block de détail d'une demande.

Workflow

L'implémentation du module Demandes a été l'occasion d'ajouter quelques améliorations techniques au module Workflow :

  • ajout d'une méthode executeMessageTask dans workflow_WorkflowEngineService permettant de déclancher par code une transition de type "message".
  • ajout d'une méthode getActiveMessageWorkitemsByDocumentId dans workflow_WorkitemService permettant de lister les transitions de type "message" disponibles sur un document donné.
  • ajout des raccourcis getParameter et setParameter directement sur le document case et pointant sur les méthodes du service.
  • ajout d'une liste dynamique des "tâches de workflows" disponibles, avec comme valeurs les valeurs du champs starttaskid et en libellé le libellé du workflow correspondant (si plusieurs workflows ont le même starttaskid, on prend prioritairement celui qui est publié).

Bugs corrigés

  1. [FIX #9859] Duplication des mots-clés sur un billet de blog
  2. [FIX #10324] Affichage de la liste des prix d'un produit sensible aux minutes de la date de validité
  3. [FIX #10349] Affichage des dates de validité dans la liste des prix en GMT
  4. [FIX #10598] date picker dans formulaires front
  5. [FIX #11171] Impossible de créer un dossier (module Animation des boutiques)
  6. [FIX #11212] Section URL du panneau de synthèse ne s'affiche qu'une fois
  7. [FIX #11567] HTTPClient n'encode pas les paramètres
  8. [FIX #8118] Editeur de locale, manque un ascenseur
  9. [FIX #8103] Gmaps : champ couleur du picto manquant
  10. [FIX #8080] Gmaps : liens GPS toujours présent
  11. [FIX #8056] Problème d'en-têtes si cache activés
  12. [FIX #11492] Bean aggregate
  13. [FIX #11459] Mauvais doctype
  14. [FIX #11335] Préférences videos
  15. [FIX #11313] Préférences actualités
  16. [FIX #7538] Switcher de langue et site non publié
  17. [FIX #12756] Log fatal au lieu de debug
  18. [FIX #12824] Panier vide sans page panier vide : mauvais lien vers le catalogue
 
 
Connexion
  1. Cochez cette case pour être reconnecté automatiquement.

prochains événements

rubrique courante
 
Ils utilisent RBS Change
 
1386 membres
Aucun membre connecté