Astuce Ordre des champs en ExtraData Astuce Tester si une chaîne
Transcription
Astuce Ordre des champs en ExtraData Astuce Tester si une chaîne
Astuce Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Initialiser une variable de classe Lorsqu'on utilise des variables statiques, on peut souvent les initialiser directement à leur déclaration : public class MaClasse { public static String myStaticString = "Ma chaîne"; public static String[] myStaticArray = {"Ma chaîne 1", "Ma chaîne 2"}; } Mais si vous avez une Collection ou un autre Objet en variable de classe, vous ne pourrez pas l'initialiser de cette manière. Vous pouvez donc déclarer un bloc statique, qui sera exécuté une seule fois, à la première utilisation de la classe. Dans ce bloc, appelez une fonction statique qui se chargera d'initialiser votre variable : public class MaClasse { public static List<String> myStaticList = new ArrayList<String>(); static { MaClasse.initMyStaticList(); } private static void initMyStaticList() { MaClasse.myStaticList.add("Ma chaîne 1"); MaClasse.myStaticList.add("Ma chaîne 2"); } } Publié le : 05/12/2014 Modifié le : 09/04/2015 Astuce Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Ajouter un espace (ou autre) tous les n caractères Si vous souhaitez formater un numéro de téléphone, un IBAN, ou n'importe quelle chaîne en y ajoutant régulièrement un séparateur, cette fonction peut vous être utile : /** * Formate une chaîne en ajoutant un séparateur tous les <code>length</code> caractères. * * @param string Chaîne à formater * @param separator Séparateur à ajouter * @param length Taille des groupes de caractères à séparer * @return La chaîne formatée */ public static String addChar(String string, String separator, int length) { if (string != null && string.length() > length) { string = string.replaceAll("([^\\s]{" + length + "})", "$0" + separator); } return string; } Publié le : 03/12/2014 Modifié le : 09/04/2015 Astuce Créer un lien symbolique entre deux Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png répertoire sous Windows Pour créer un lien symbolique sous Windows, il faut utiliser la commande symlink : mklink [[/D] | [/H] | [/J]] <Lien> <Cible> Pour cela, lancez une invite de commande : Menu démarrer Exécuter... Tapez cmd et validez Si par exemple vous souhaitez pouvoir accéder au répertoire C:\Windows\System32\drivers\etc directement via C:\etc, tapez cette commande : mklink /J C:\etc C:\Windows\System32\drivers\etc Remarques : Selon le lien que vous souhaitez créer, vous devrez peut-être être admin de votre machine (ou lancer l'invite de commande en mode administrateur). Si vous voulez créez un lien vers un répertoire qui n'existe pas (encore) sur votre système, utilisez l'option /D et non pas /J. Cela créera un lien symbolique et non pas une jonction. Image not readable or empty DOS Tags : /extension/devnotebook/design/devnotebook/images/icon/tag.png DOS Publié le : 01/12/2014 Modifié le : 15/04/2016 Astuce Afficher une erreur dans JCMS Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Dans JCMS (7 et +) les erreurs sont affichées dans un bloc ressemblant à ça. Message d'erreur JCMS Image not readable or empty /var/devnotebook/storage/images/media/images/message-d-erreur-jcms/857-1-fre-FR/Messag Transmettre le message Vous devez tout d'abord transmettre votre message à JCMS. Si vous êtes dans une JSP, utilisez l'une ou l'autre de ces méthodes : // Ajoute un message d'erreur dans la request setErrorMsg("Le téléchargement du document a échoué", request); // Ajoute un message d'erreur dans la session setErrorMsgSession("Le téléchargement du document a échoué", request); Pour faire la même chose dans une classe Java, utilisez l'une de celles-ci : // Ajoute un message d'erreur dans la request JcmsContext.setErrorMsg("An error occured while saving your content", request); // Ajoute un message d'erreur dans la session JcmsContext.setErrorMsgSession("An error occured while saving your content" , request); Remarque : Des méthodes équivalentes existent pour les messages d'information et d'avertissement. Afficher le message Une fois le message transmis, il reste à l'afficher. Il suffit pour cela d'inclure ce bout de code : <%@ include file='/jcore/doMessageBox.jsp' %> Cette JSP fournie par JCMS va récupérer tous les messages d'information, d'avertissement ou d'erreur présents en session, dans les paramètres de la request et dans le contexte de la page. Si un de ces message est présent il sera affiché. Remarque : Depuis la version 7.1 JCMS utilise Bootstrap. Si vous êtes en version antérieure, le message d'erreur ne ressemblera pas à celui ci-dessus. Source : API Jalios JCMS 7.0.0 Publié le : 27/11/2014 Modifié le : 09/04/2015 Astuce Ordre des champs en ExtraData Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png Lors de l'affichage des champs en ExtraData, JCMS utilise l'ordre l'alphabétique des clés des propriétés d'ExtraData. Si vous avez en propriété les champs suivants dans votre plugin.prop : extra.Category.jcmsplugin.monplugin.premierchamp extra.Category.jcmsplugin.monplugin.champ2 extra.Category.jcmsplugin.monplugin.champ3 extra.Category.jcmsplugin.monplugin.dernierchamp Il s'afficheront dans cet ordre : champ2 champ3 dernierchamp premierchamp Publié le : 25/11/2014 Modifié le : 09/04/2015 Astuce Tester si une chaîne est vide ou ne contient Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png que des espaces Voici une méthode pour tester si une chaîne est vide ou contient uniquement des espaces : /** * Retourne si la chaîne en argument est vide ou contient uniquement des espaces. * * @param string Chaîne * @return <code>true</code> si la chaîne est nulle, vide, ou s'il ne contient que des caractèr */ public static boolean isEmpty(String string) { boolean isEmpty = true; if (string != null) { isEmpty = "".equals(string.replaceAll("[\\s\\u00A0]+$", "")); } return isEmpty; } Remarque : \u00A0 représente les espaces insécables. Si on utilise uniquement \s dans le remplacement, ils ne seront pas considérés comme des espaces. Publié le : 14/11/2014 Modifié le : 09/04/2015 Astuce Activer automatiquement tous les modules Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png d'un profil Si vous utiliser Drush dans Drupal, vous pouvez activer automatiquement tous les modules déclarés en dépendance dans votre profil. Pour cela utilisez cette commande : drush en $(grep dependencies /path/to/my-site/profiles/my_profile/my_profile.info | sed -n 's/dependencies\[\]=\(.*\)/\1/p') Version : 7.x, Drush 6.2 Tags : Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/tag.png Drush Drush Publié le : 18/09/2014 Modifié le : 22/11/2016 Astuce Effectuer des requêtes sur une autre base Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png de données Il est possible d'effectuer des requêtes SQL sur une base de données autre que celle de Drupal, tout en utilisant les fonctions db_select(), db_query(), .... Pour cela, il faut déclarer la ou les bases externes dans le fichier site/default/settings.php : $databases = array ( 'default' => array ( 'default' => array ( 'database' => 'drupal', 'username' => 'username', 'password' => 'password', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ), 'ma_nouvelle_base' => array ( 'default' => array ( 'database' => 'db1', 'username' => 'username2', 'password' => 'password2', 'host' => 'db.example.com', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ), ); Vous pouvez maintenant utiliser les nouvelles bases dans vos modules, grâce à la fonction db_set_active() : // Sélection de la nouvelle base db_set_active('ma_nouvelle_base'); // Exécution d'un requête $results = db_query($sql); // Retour à la base par défaut db_set_active('default'); Version : 7.x Publié le : 18/09/2014 Modifié le : 22/06/2016 Astuce Un décompilateur Java dans Eclipse Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png L'application Java Decompiler permet de décompiler un fichier .class simple ou tout ceux présent dans un JAR : ezembed Le site de l'application fournit un plugin Eclipse qui ne fonctionne pas avec les dernières versions (testé avec Eclipse Juno). Plusieurs fork du ont été créés et ce site en propose un qui fonctionne : JDEclipse-Realign. Pour l'installer: cliquez sur Help > Install New Software... dans le menu d'Eclipse Ajoutez un nouveau site via le bouton Add... Choisissez un nom (ex: JDEclipse-Realign) et cette URL : http://mchr3k-eclipse.appspot.com/ Cochez JavaDecompiler Eclipse Plug-in > JD-Eclipse (Realign Edition) et suivez la procédure d'installation Une fois installé et Eclipse redémarré, vérifiez l'association des fichiers : Windows > Preferences > General > Editors > File Associations Pour *.class without source sélectionnez Class File Editor par défaut Si vous ouvrez un fichier .class (via F3 ou Ctrl+clic sur le nom d'une classe) vous devriez maintenant voir la source décompilée. Publié le : 30/07/2014 Modifié le : 09/04/2015 Astuce Passer des variables supplémentaires au Image not readable or empty /extension/devnotebook/design/devnotebook/images/icon/trick.png template node.tpl.php Lorsque vous affichez un n?ud dans le template node.tpl.php ou une de ses surcharges (ex: node-article.tpl.php), vous avez souvent besoin d'effectuer des traitements particuliers. Pour séparer les parties traitement et affichage, il est préférable de mettre le maximum de code PHP dans votre fichier mymodule.module. Pour cela, utilisez le hook_node_view(). Par exemple si dans le template d'un article on veut afficher les 3 derniers articles publiés : /** * Implements hook_node_view(). */ function mymodule_node_view($node, $view_mode, $langcode) { global $language; switch ($node->type) { case 'article': // Last published articles $query = db_select('node', 'n') ->fields('n', array('nid')) ->condition('status', 1) ->condition('bundle', 'article') ->orderBy('changed', 'DESC') ->range(0, 3); $nids = $query->execute()->fetchCol(); $nodes = !empty($nids) ? node_load_multiple($nids) : array(); $node->content['last_published_articles'] = $nodes; break; } } Explications : Pour n'effectuer le traitement que pour les articles, on utilise un switch sur le type de n?ud. La requête récupère les nids des n?uds recherchés. Ils sont ensuite chargés. Les n?uds sont envoyés en paramètre au template. La variable $content['last_published_articles'] sera disponible dans le template. Remarque : En général on ajoute une condition sur le type d?affichage ($view_mode), pour éviter un traitement inutile à chaque affichage du n?ud. Source : Documentation officielle du hook Version : 7.x Publié le : 18/07/2014 Modifié le : 22/06/2016 « PrécédentSuivant » 1 2 3 4 5 6 7 8 9 10 11 12 ...26