Comment puis-je utiliser jQuery 1.7 sans avoir de problèmes dans les pages d'administration?

11

Quelqu'un exécute-t-il jQuery 1.7 avec succès? J'utilise un composant jQuery sur mes pages qui nécessite jQuery 1.7 ou une version ultérieure. Cette version provoque des effets secondaires indésirables dans l'interface utilisateur d'administration, tels que des cases à cocher qui ne révèlent pas de contrôles supplémentaires lorsqu'ils sont disponibles, ou le widget de champ n'est pas actif.

Je me demandais s'il y avait une solution qui pourrait me permettre de travailler facilement avec jQuery 1.7.

J'ai vu cette réponse avant de demander. Pour autant que je comprends, il y a 2 problèmes distincts: la mise à jour de src du jQuery vers 1.7.x, et la mise à jour du javascript utilisé par l'administrateur. J'ai essayé d'utiliser le dernier instantané de développement jquery_update et d'appliquer un correctif , mais cela ne résout pas les problèmes susmentionnés avec l'interface utilisateur.

Artur
la source
La politique dicte à peu près que la mise à niveau des versions Drupal ne doit pas casser quoi que ce soit qui repose sur jQuery, donc la version reste cohérente.
mpdonadio
Techniquement, ce problème est une dupe de drupal.stackexchange.com/a/41394/809 De plus, je suis un peu biaisé, mais l'autre question a une meilleure réponse.
ericduran

Réponses:

11

Je regarderais les conseils de Clive pour le faire manuellement ici:

Comment mettre à jour jQuery vers la dernière version que je peux télécharger?

et ajouter un peu plus d'intelligence dans le script pour ne pas le faire sur les pages d'administration, par exemple:

if (arg(0)=='admin') {
  return;
}

Vous devrez également le faire sur node/#/addet sur les node/#/editpages, etc. afin de ne pas perturber quoi que ce soit de "core" là-bas, ou, si vous le souhaitez, plonger dans le noyau drupal et porter tout le reste à 1.7.

Selon la version de Drupal que vous utilisez, cela peut également fonctionner:

function YOURTHEME_preprocess_page(&$vars) {
  if (YOUR CONDITION HERE) {
    $scripts = drupal_add_js('PATH TO YOUR JQUERY FILE');
    unset($scripts['core']['PATH TO DRUPAL JQUERY FILE']);
    $variables['scripts'] = drupal_get_js('header', $scripts);
  }
}

où vous pouvez définir "VOTRE CONDITION ICI" pour être sur les pages sur lesquelles vous souhaitez que le nouveau jquery, par exemple, arg(0)!='admin'etc.

Jimajamma
la source
Merci Jimajamma, je n'ai pas utilisé votre code, mais votre réponse m'a mis sur la bonne voie. J'ai trouvé un joli correctif qui ajoute l'interface utilisateur à l'écran de configuration jquery_update, qui vous permet d'utiliser différentes versions de jQuery pour l'administrateur. drupal.org/node/1524944 . Fonctionne bien jusqu'à présent.
Artur
2
Gardez à l'esprit que ctools a également connu des ruptures avec les mises à jour jquery. Vous devrez peut-être ajuster le patch pour en tenir compte.
mpdonadio
Merci de l'avoir signalé. Avez-vous une idée de la meilleure façon de tester cela?
Artur
3
+1 Une bonne façon simple d'obtenir une liste de toutes les pages d'administration qui n'ont pas «admin» dans l'url est:$pages = module_invoke_all('admin_paths');
Clive
1
@Clive, cela intercepte-t-il les URL ctools AJAX? Comme lorsque vous utilisez un widget ctools sur une page "normale"?
mpdonadio
2

jQuery Update a désormais la possibilité d'activer différentes versions de jQuery pour le front-end et le back-end. Téléchargez la dernière version de développement et vous êtes prêt à partir: 1,5 dans le backend, donc cela fonctionne avec l'interface utilisateur Views, et 1,7 ou 1,8 dans le frontend, pour une qualité jQuery supplémentaire.

Renée
la source