javascript

DHTML Menu : double action sur un lien parent (animation du menu + affichage de la page)

Bonjour à tous,

J'utilise le module dhtml_menu et souhaiterai le personnaliser, je m'explique :

J'ai deux catégories principales dans mon menu. Sur l'une d'elle, j'aimerai qu'au clic l'animation déroule ses éléments enfants et qu'à la fois elle affiche le contenu de sa page.

J'arrive bien à faire fonctionner l'animation qui déroule les sous-catégories, mais il n'est pas prévu qu'au clic sur une catégorie principale, le sous-menu se déroule et affiche la page de cette catégorie principale.

Par Artusamak
Julien Dubois

Créer un tri par glisser déposer

Votre module serait vraiment plus sympa si une liste d’éléments pouvait être triée via un glisser-déposer, non ? Long et compliqué à implémenter vous dites ? Et bien détromprez-vous, il existe des outils dans le coeur de Drupal pour justement pouvoir facilement implémenter cela, découverte de l’élément de formulaire de type #weight qui est assez méconnu.

Implémenter une telle fonctionnalité relève de l’ordre du theming, vous cherchez à afficher un formulaire d’une façon particulière et les éléments que vous voulez réordonner vont devoir être themés comme un tableau. La fonction qui nous intéresse pour arriver à nos fins s’appelle drupal_add_tabledrag(), elle est appelée au sein d’une fonction de theming que l’on applique à l’élément de formulaire qui englobe vos éléments à réordonner, regardons un peu de code :

/**
 * Implements hook_theme().
 */
function module_reorder_text_theme($existing, $type, $theme, $path) {
 return array(
 'MODULE_reorder_text' => array(
 'arguments' => array($form => NULL),
 ),
}

Il faut donc dans un premier temps déclarer votre fonction de thème. Cette fonction sera directement appliquée à un élément du formulaire comme suit :

function orderable_form($form_state) {
 $form = array();
 $form['#theme'] = 'module_reorder_text';
}

Regardons maintenant plus en détails le contenu de la fonction de thème :

function theme_module_reorder_text($form) {
 // Titre des colonnes du tableau à trier
 $header = array('', t('Weight'), t('Content'));
 // Ajout du comportement "triable" sur le tableau qui a l'ID "sortable-table"
 // Order signifie que les éléments seront triables voir la documentation pour les autres comportements
 // Sibling : comportement à utiliser sur les éléments du tableau
 // sortable-weight est un nom de classe à utiliser sur les champs qui sont liés dans le tableau
 drupal_add_tabledrag('sortable-table', 'order', 'sibling', 'sortable-weight');
 // $form['items'] est un tableau d'éléments à trier, cet élément de tableau a sa propriété #tree à TRUE.
 foreach ($form['items'] as $key => $value) {
  $value['weight']['#attributes']['class'] = 'upload-weight';
  // Il est nécessaire d'utiliser la fonction drupal_render() pour afficher le champ en HTML
  // Le javascript va remplacer le champ weight par des éléments qui peuvent être glissés / déposés pour réorganiser le tri.
  $row = array('', drupal_render($value['weight']), drupal_render($value['text']));
  $rows[] = array('data' => $row, 'class' => 'draggable');
 }
 $output .= theme('table', $header, $rows, array('id' => 'sortable-table'));
 return $output;
}


Le vrai point important ici consiste à utiliser la fonction drupal_render() pour afficher le contenu des éléments du tableau.
C’est vraiment grâce à ce genre de petits détails que Drupal devient toujours plus indispensable. Merci Drupal !

Javascript dans un bloc Drupal

Bonjour,

Je n'arrive pas à insérer du Javascript dans mes Bloc drupals.

Ca fonctionne dans les noeuds.

J'ai suivi ce topic : http://gotdrupal.com/videos/quick-tip-allowing-javascript-blocks

Mais ca ne fonctionne pas non plus...

J'utilise le Theme Garland, faut il ajouter quelque chose ?

Merci pour votre aide !

Fabien

[Recherche] Alternance deuxième année de BTS Informatique de Gestion

Je suis actuellemet etudiant BTS Informatique de Gestion et je recherche un contrat en alternance dans le cadre de ma deuxième année.

J'ai effectué mon stage de fin de première année au sein de la société Pix'N'Graph durant lequel j'ai travaillé sur Drupal.

Comment activer le javascript pour organiser les blocs quand on utilise son propre thème ?

Bonjour,

J'ai remarqué que sur le thème "Garland" le système de drag and drop pour organiser des blocs fonctionne très bien.

Par contre, quand j'active un thème que j'ai fait moi même, je n'arrive pas à organiser mes blocs car le JS n'est pas activer ou ne fonctionne pas.

J'ai du oublié quelque chose quelque part ?

Sophie.

Impossibilité de faire fonctionner les évènements js

Bonjour,

Je souhaite développer un tout petit morceau de code js intégré dans une page. Il y a un champ de texte et un bouton. Quand l'utilisateur appuie sur le bouton, une popup s'ouvre avec la valeur du champ de texte concaténée à une URL donnée. Jusque là ça paraît basique.

Or, lorsque j'essaie de mettre en place un simple évènement du type btn.onclick = alert('clic'); l'évènement se déclenche au chargement de la page et non au clic sur le bouton.

Voici mon code (enlevez les "*")

Probléme de javascript lors du déploiement

Bonjour,

Je déploie actuellement la maquette du site sur serveur. Mon java script marche parfaitement en locale ainsi que sur la page d'accueil de Drupal.Des lors que je rentre dans la partie administration mon menu de la page sur le serveur ne se déplie pas. Avec firebug j'obtiens donc une requête de type Get en rouge en me disant introuvable alors que le script se trouve bien ds le bon dossier sur le serveur.

Probleme form ajax

Bonjour,

Lorsque l utilisateur clic sur un bouton je lui affiche un form que je recupere en json. Mais il ne fonctionne pas correctement. Par exemple lors d un form_set_error il affiche une page blanche avec du json et il m et impossible de faire marcher l autocomplete_path.
Mais si j affiche le meme formulaire sans passer par de l ajax tout marche parfaitement.

Auriez vous une solution?

Merci d avance.

Voici un bou de code pour plus de detail

Cote php

problème javascript slidemenu

Bonsoir à toute la communauté,

je vous explique mon problème : j'ai un menu javascript qui fonctionne très bien (accordeon). A cela j'ai voulu rajouter un slide en js que j'ai trouvé sur le net et qui se trouve à l'adresse suivante : http://phatfusion.net/imagemenu/

J'ai importer tous les scripts, j'ai bien vérifié que j y est accés. Avec web develop (Modulefirefox), il me renvoie une erreur comme quoi le construction ImageMenu n'existe pas, script qui est contenu dans la page web :

Pages