Wie kann ich jQuery 1.7 verwenden, ohne Probleme auf den Administrationsseiten zu haben?

11

Läuft jemand erfolgreich jQuery 1.7? Ich verwende auf meinen Seiten eine jQuery-Komponente, für die jQuery 1.7 oder höher erforderlich ist. Diese Version verursacht einige unerwünschte Nebenwirkungen in der Administrator-Benutzeroberfläche, z. B. aktivierte Kontrollkästchen, die keine zusätzlichen Steuerelemente anzeigen, wenn sie verfügbar sind, oder das Feld-Widget, das nicht aktiv ist.

Ich habe mich gefragt, ob es eine Lösung gibt, mit der ich problemlos mit jQuery 1.7 arbeiten kann.

Ich habe diese Antwort gesehen, bevor ich gefragt habe. Soweit ich weiß, gibt es zwei verschiedene Probleme: Aktualisieren von src der jQuery auf 1.7.x und Aktualisieren des von admin verwendeten Javascript. Ich habe versucht, den neuesten Entwicklungs-Snapshot von jquery_update zu verwenden und einen Patch anzuwenden , aber er löst die oben genannten Probleme mit der Benutzeroberfläche nicht.

Artur
quelle
Die Richtlinie schreibt ziemlich genau vor, dass das Aktualisieren von Drupal-Versionen nichts beschädigen darf, was auf jQuery beruht, sodass die Version konsistent bleibt.
mpdonadio
Technisch gesehen ist dieses Problem ein Betrug von drupal.stackexchange.com/a/41394/809. Auch ich bin ein bisschen voreingenommen, aber die andere Frage hat eine bessere Antwort.
Ericduran

Antworten:

11

Ich würde Clives Ratschlag hier manuell lesen:

Wie aktualisiere ich jQuery auf die neueste Version, die ich herunterladen kann?

und fügen Sie dem Skript etwas mehr Intelligenz hinzu, um dies nicht auf Administrationsseiten zu tun, z.

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

Sie müssten dies auch auf node/#/addund node/#/editSeiten usw. tun, um dort nichts "Kern" zu stören, oder, wenn Sie möchten, in den Drupal-Kern eintauchen und alles andere auf 1.7 bringen.

Abhängig davon, welche Version von Drupal Sie ausführen, funktioniert dies möglicherweise auch:

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);
  }
}

Hier können Sie "IHR ZUSTAND HIER" so einstellen, dass es sich um die Seiten handelt, auf denen die neue Abfrage ausgeführt werden soll, z. B. arg(0)!='admin'usw.

Jimajamma
quelle
Danke Jimajamma, ich habe Ihren Code nicht verwendet, aber Ihre Antwort hat mich auf den richtigen Weg gebracht. Ich habe einen schönen Patch gefunden, der dem Konfigurationsbildschirm von jquery_update eine Benutzeroberfläche hinzufügt, mit der Sie verschiedene Versionen von jQuery für Administratoren verwenden können. drupal.org/node/1524944 . Bisher gut funktioniert.
Artur
2
Denken Sie daran, dass ctools in der Vergangenheit auch mit jquery-Updates gebrochen hat. Möglicherweise müssen Sie den Patch anpassen, um dies zu berücksichtigen.
mpdonadio
Vielen Dank für den Hinweis. Haben Sie eine Idee, wie Sie dies am besten testen können?
Artur
3
+1 Eine schöne einfache Möglichkeit, eine Liste aller Admin-Seiten zu erhalten, deren URL nicht 'admin' enthält, ist:$pages = module_invoke_all('admin_paths');
Clive
1
@Clive, fängt dies ctools AJAX-URLs ab? Wie wenn Sie ein ctools-Widget auf einer "normalen" Seite verwenden?
mpdonadio
2

jQuery Update bietet jetzt die Möglichkeit, verschiedene jQuery-Versionen für das Front-End und das Back-End zu aktivieren. Laden Sie die neueste Entwicklungsversion herunter und los geht's: 1.5 im Backend, damit es mit der Views-Benutzeroberfläche funktioniert, und 1.7 oder 1.8 im Frontend für zusätzliche jQuery-Qualität.

Renee
quelle