Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

Direkter Link auf das offene FCKEditor Form im BenutzerKonto

Eingetragen von Schnittmenge@dr... (288)
am 25.09.2008 - 10:04 Uhr in
  • Module
  • Drupal 5.x

Ich habe ein Link, der geht direkt auf das FCKEditor Form im BenutzerKonto und lautet:

print l(t('customize_editor'), "user/$user->uid/edit", array(), NULL, 'richtextsettings');

Der FCKEditor Form is by default "collapsed" was so richtig ist. So wenn der User den obrigen Link benutzt, wird das FCKEditor Form geschlossen angezeig, es sollte jedoch direkt offen angezeigt werden.

Was muss ich da machen?

‹ Calendar erweitern FCK-Editor & DrupalBreak ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

fieldset

Eingetragen von stBorchert (6003)
am 25.09.2008 - 10:18 Uhr

Moin!
Einfach ist langweilig, oder? :-)
Das Fieldset wird ja nur geöffnet/geschlossen, wenn man auf den entsprechenden Link im Titel klickt. Das passiert ja mittels jQuery.
Da Du jedoch den Status ändern willst, wenn Du direkt auf die Seite mit Anker gehst, musst Du irgendwie die Klasse "collapsed" wegbekommen.
Das geht einerseits über ein neues Modul, bei dem Du in hook_form_alter() ($form_id == 'user_edit') abfragst, ob der Anker "richtextsettings" in der URL enthalten ist und dementsprechend das fieldset auf '#collapsed' => FALSE' setzt.

Oder Du packst in Deine page.tpl.php ein wenig jQuery rein, mit dem Du schaust, ob der Anker in der URL enthalten ist und dann schnell die CSS-Klasse "collapsed" vom fieldset entfernst.

Die erste Variante ist sauberer und würde ich auch präferieren.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

jquery <?phpvar url =

Eingetragen von dawehner (2639)
am 25.09.2008 - 10:22 Uhr

jquery

<?php
var url = document.URL;

var
splits = url.split("#");
var
anchor = splits.pop();
$(
"#". anchor).click();
?>

--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Parse error: syntax error,

Eingetragen von Schnittmenge@dr... (288)
am 25.09.2008 - 11:45 Uhr

Parse error: syntax error, unexpected T_VAR in der var url Zeile. Was ist noch nicht richtig?

  • Anmelden oder Registrieren um Kommentare zu schreiben

jQuery

Eingetragen von stBorchert (6003)
am 25.09.2008 - 13:29 Uhr
Schnittmenge@drupal.org schrieb

Was ist noch nicht richtig?

Das ist kein PHP, sondern Javascript.
Also:

<head>
...
<script type="javscript">
  var url = document.URL;
  try {
    var splits = url.split("#");
    var anchor = splits.pop();
    $("#". anchor).click();
  } catch (e) {}
</script>
</head>

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Keine Fehlermeldung mehr und

Eingetragen von Schnittmenge@dr... (288)
am 25.09.2008 - 15:56 Uhr

Keine Fehlermeldung mehr und der Link funktioniert, jedoch das Field bleibt geschlossen. Wir nähern uns der Lösung ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

jQuery

Eingetragen von stBorchert (6003)
am 25.09.2008 - 16:19 Uhr
Schnittmenge@drupal.org schrieb

Keine Fehlermeldung mehr und der Link funktioniert, jedoch das Field bleibt geschlossen. Wir nähern uns der Lösung ...

Probier mal, die CSS-Klasse zu entfernen:

<script type="javscript">
  var url = document.URL;
  try {
    var splits = url.split("#");
    var anchor = splits.pop();
    $("#". anchor).removeClass('collapsed');
  } catch (e) {}
</script>

und schau mal, was denn danach im Quelltext steht (mit firebug).

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Auch wenn ich $("#".

Eingetragen von Schnittmenge@dr... (288)
am 26.09.2008 - 05:38 Uhr

Auch wenn ich $("#". anchor).removeClass('collapsible collapsed'); verwende funktioniert es nicht.

Der Quelltext:
<div id="richtextsettings"><fieldset class="collapsible collapsed"><legend><a href="#">Rich Text Editor settings</a></legend>

Die Class wird nicht entfernt, im Firebug steht weiterhin <fieldset class="collapsible collapsed">.

  • Anmelden oder Registrieren um Kommentare zu schreiben

jQuery

Eingetragen von stBorchert (6003)
am 26.09.2008 - 14:02 Uhr

Moin!

Schnittmenge@drupal.org schrieb

Auch wenn ich $("#". anchor).removeClass('collapsible collapsed'); verwende funktioniert es nicht.

Das kann auch nicht funktionieren, da Du immer nur eine Klasse so entfernen kannst. Und Javascript kennt keine Punkte als String-Verbinder, nur "+" (hatte ich oben gar nicht bemerkt).
Also:

$(document).ready(function() {
  $("#" + anchor).removeClass('collapsed');
  /* $("#" + anchor).removeClass('collapsible'); */
});

Es reicht, wenn Du "collapsed" entfernst. Die zweite Klasse sagt dem System nur, dass das fieldset prinzipiell zusammenfaltbar ist.

hth,

 Stefan

PS: Der hier genannte Quelltext funktioniert bei mir prinzipiell.

  • Anmelden oder Registrieren um Kommentare zu schreiben

jQuery

Eingetragen von stBorchert (6003)
am 26.09.2008 - 14:17 Uhr

Ich frage mich allerdings gerade, ob das mit dem Anker wirklich so funktioniert.
Hat denn das fieldset wirklich die Id? Wenn nicht, müsstest Du erstmal das fieldset finden.
Also ausgehend vom Element mit der Id nach oben gehen (in der Hierarchie), bis mal ein fieldset auftaucht und dann dessen Klasse entfernen.

Ok, habs gerade mal ausprobiert: ist doch nicht ganz so einfach.
Die erste Id im fieldset ist "edit-fckeditor-default". Von dort muss man dann 3 Ebenen nach oben um das fieldset zu haben:

    <script type="text/javascript">
      $(document).ready(function() {
        var elem = $('#edit-fckeditor-default');
        var fieldset = $(elem).parent().parent().parent();
        $(fieldset).removeClass('collapsed');
      });
    </script>

Das funktioniert bei mir (und ist sicherlich noch schöner hinzubekommen).

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

+ Also es funktioniert, wenn

Eingetragen von Schnittmenge@dr... (288)
am 26.09.2008 - 15:34 Uhr

+ Also es funktioniert, wenn der Link print l(t('customize_editor'), "user/$user->uid/edit", array(), NULL, 'richtextsettings'); von einer anderen URL kommt, wo sich das Fieldset nicht befindet.

- Jedoch funktioniert es nicht mit diesem Link noch über <a href="#richtextsettings" title="Test innerhalb einer Seite »">Anker</a>. Da kommt man an die richtige Stelle, aber das Fiedset bleibt zu.

- Noch schlimmer ist, wenn man auf die Seite kommt, ohne das Fieldset (#) angesprochen zu haben, wird das Fieldset bereits offen angezeigt.

Desweitern bräuchte ich eine grundsätzliche Lösung, da ich diese Spiel mit sechs weiteren Fieldsets machen möchte.

Ich bin von Deiner Geduld begeistert!

Schnittmenge

  • Anmelden oder Registrieren um Kommentare zu schreiben

jQuery

Eingetragen von stBorchert (6003)
am 26.09.2008 - 18:20 Uhr

Moin!
Mal vorweg: hast Du mal eine Testseite, wo ich mir das mal live anschauen könnte?

Schnittmenge@drupal.org schrieb

+ Also es funktioniert, wenn der Link print l(t('customize_editor'), "user/$user->uid/edit", array(), NULL, 'richtextsettings'); von einer anderen URL kommt, wo sich das Fieldset nicht befindet.

Hatte ich auch so getestet. Allerdings frage ich mich noch immer, wo der Anker "richtextsettings" bei Dir herkommt. Den finde ich bei mir nirgendwo.

Schnittmenge@drupal.org schrieb

- Jedoch funktioniert es nicht mit diesem Link noch über <a href="#richtextsettings" title="Test innerhalb einer Seite »">Anker</a>. Da kommt man an die richtige Stelle, aber das Fiedset bleibt zu.

Macht Sinn, da der jQuery-Code nur beim Öffnen der Seite ausgeführt wird. Da die Seite jedoch bei einem einfachen Klick auf einen Ankerverweis innerhalb der angezeigten Seite nicht erneut geladen wird, wird der Code auch nicht ausgeführt.
Eine Möglichkeit wäre, diesem Ankerverweis eine zusätzliche Klasse mitzugeben und dann beim click()-Ereignis zusätzlich den obigen jQuery-Code ausführen zu lassen.

Schnittmenge@drupal.org schrieb

- Noch schlimmer ist, wenn man auf die Seite kommt, ohne das Fieldset (#) angesprochen zu haben, wird das Fieldset bereits offen angezeigt.

Auch klar, da keine Prüfung stattfindet, ob überhaupt ein Anker in der URL enthalten ist.

Schnittmenge@drupal.org schrieb

Desweitern bräuchte ich eine grundsätzliche Lösung, da ich diese Spiel mit sechs weiteren Fieldsets machen möchte.

Ok:

    <script type="text/javascript">
      function uncollapseReferencedFieldSet() {
        var url = document.URL;
        try {
          var splits = url.split("#");
          if (splits.length < 1) return;
          var elem = $('#' + splits.pop());
          while (elem.tagName.toLowerCase() != 'fieldset') {
            elem = $(elem).parent();
          }
          $(elem).removeClass('collapsed');
        } catch (e) {}
      }
      $(document).ready(function() {
        uncollapseReferencedFieldSet();
        $('a.uncollapse').click(function() {
          $(this).click();
          uncollapseReferencedFieldSet();
        });
      });
    </script>

Den letzten Teil konnte ich jetzt leider nicht testen.

Schnittmenge@drupal.org schrieb

Ich bin von Deiner Geduld begeistert!

Na und ich erst :-)

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Testseite

Eingetragen von Schnittmenge@dr... (288)
am 27.09.2008 - 06:11 Uhr

Besuche b2.test.consenser.org und melde Dich als user6 (Passwort: user6) an. Auf /user/95/edit findest Du die Seite von der wir reden. Auf /node/add/consensus hast Du einen Link auf das Fieldset.

Status:

Zitat:

+ Also es funktioniert, wenn der Link print l(t('customize_editor'), "user/$user->uid/edit", array(), NULL, 'richtextsettings'); von einer anderen URL kommt, wo sich das Fieldset nicht befindet.

Funktioniert nicht mehr. Der Anker "richtextsettings" kommt vom FCKEditor, wenn Du Deinen Benutzer das Recht gibst den FCKEditor zu personalisieren zu können.

Zitat:

- Jedoch funktioniert es nicht mit diesem Link noch über Anker. Da kommt man an die richtige Stelle, aber das Fiedset bleibt zu.

Daran hat sich nicht geändert

Zitat:

- Noch schlimmer ist, wenn man auf die Seite kommt, ohne das Fieldset (#) angesprochen zu haben, wird das Fieldset bereits offen angezeigt.

Das Problem ist gelöst.

Saludos,
Daniel

  • Anmelden oder Registrieren um Kommentare zu schreiben

jQuery und fieldset

Eingetragen von stBorchert (6003)
am 27.09.2008 - 15:34 Uhr
Schnittmenge@drupal.org schrieb

Besuche b2.test.consenser.org und melde Dich als user6 (Passwort: user6) an. Auf /user/95/edit findest Du die Seite von der wir reden. Auf /node/add/consensus hast Du einen Link auf das Fieldset.

Ok, jetzt sehe ich :-)

Schnittmenge@drupal.org schrieb
Zitat:

+ Also es funktioniert, wenn der Link print l(t('customize_editor'), "user/$user->uid/edit", array(), NULL, 'richtextsettings'); von einer anderen URL kommt, wo sich das Fieldset nicht befindet.

Funktioniert nicht mehr. Der Anker "richtextsettings" kommt vom FCKEditor, wenn Du Deinen Benutzer das Recht gibst den FCKEditor zu personalisieren zu können.

Ah, war bei meiner Testinstallation gestern nicht so. Macht aber nichts.
Dann wird das Ganze sogar noch ein wenig einfacher:

    <script type="text/javascript">
      function uncollapseReferencedFieldSet(anchor) {
        var url = document.URL;
        try {
          if (!anchor) {
            var splits = url.split("#");
            if (splits.length < 1) return;
            var anchor = '#' + splits.pop();
          }
          var fieldset = $(anchor + ' fieldset');
          $(fieldset ).removeClass('collapsed');
        } catch (e) {}
      }
      $(document).ready(function() {
        uncollapseReferencedFieldSet();
        $('a.uncollapse').click(function() {
          /* $(this).click(); */
          uncollapseReferencedFieldSet($(this).href());
        });
      });
    </script>

Schnittmenge@drupal.org schrieb
Zitat:

- Jedoch funktioniert es nicht mit diesem Link noch über Anker. Da kommt man an die richtige Stelle, aber das Fiedset bleibt zu.

Daran hat sich nicht geändert

Ja, weil der Code nicht zur HTML-Struktur gepasst hat.

Probiers mal mit obenstehendem Quelltext. Könnte funktionieren.

Grüsse,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

+ Also es funktioniert, wenn

Eingetragen von Schnittmenge@dr... (288)
am 27.09.2008 - 22:44 Uhr

+ Also es funktioniert, wenn der Link print l(t('customize_editor'), "user/$user->uid/edit", array(), NULL, 'richtextsettings'); von einer anderen URL kommt, wo sich das Fieldset nicht befindet. SUPER

+ Wenn man auf die Seite kommt, ohne das Fieldset (#) angesprochen zu haben, wird das Fieldset geschlossen angezeigt. SUPER

- Jedoch funktioniert es nicht mit obrigen Link noch über <a href="#richtextsettings" title="Test innerhalb einer Seite »">Anker auf richtextsettings</a>. Da kommt man an die richtige Stelle, aber das Fiedset bleibt zu. FUNKTIONIERT NOCH NICHT

Wir sind fast am Ziel. ;-)

Saludos,
Daniel

PS: Wenn wir uns treffen, brauchst du kein Geld mitnehmen. Ich lade ein ..

  • Anmelden oder Registrieren um Kommentare zu schreiben

Klasse

Eingetragen von stBorchert (6003)
am 28.09.2008 - 10:52 Uhr
Schnittmenge@drupal.org schrieb

- Jedoch funktioniert es nicht mit obrigen Link noch über <a href="#richtextsettings" title="Test innerhalb einer Seite »">Anker auf richtextsettings</a>. Da kommt man an die richtige Stelle, aber das Fiedset bleibt zu.

Gib mal dem Link die Klasse "uncollapse" mit:
<a href="#richtextsettings" class="uncollapse" title="Test innerhalb einer Seite »">Anker auf richtextsettings</a>

Schnittmenge@drupal.org schrieb

PS: Wenn wir uns treffen, brauchst du kein Geld mitnehmen. Ich lade ein ..

Ok. Spätestens im nächsten Jahr auf der drupalCon ;-)

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: Gib mal dem Link die

Eingetragen von Schnittmenge@dr... (288)
am 28.09.2008 - 14:10 Uhr
Zitat:

Gib mal dem Link die Klasse "uncollapse" mit:
<a href="#richtextsettings" class="uncollapse" title="Test innerhalb einer Seite »">Anker auf richtextsettings</a>

Dies war leider nicht die Lösung.

  • Anmelden oder Registrieren um Kommentare zu schreiben

uncollapse

Eingetragen von stBorchert (6003)
am 28.09.2008 - 14:53 Uhr

Hm, kommen denn irgendwelche JS-Fehler (im Firebug)?
Mach mal

      $(document).ready(function() {
        uncollapseReferencedFieldSet();
        $('a.uncollapse').click(function() {
          console.log('öffne ' + $(this).href());
          uncollapseReferencedFieldSet($(this).href());
        });
      });

und schau, was in der Console vom firebug steht. Wenn da nicht "öffne richtextsettings" steht, findet jQuery den Link irgendwie nicht.
Mir ist allerdings das hier immer noch schleierhaft:

Schnittmenge@drupal.org schrieb

Der Anker "richtextsettings" kommt vom FCKEditor, wenn Du Deinen Benutzer das Recht gibst den FCKEditor zu personalisieren zu können.

Ich habs jetzt installiert und konfiguriert, allerdings wird das fieldset bei mir nicht in ein extra div-Element mit der Id gepackt. Hast Du da noch irgendeine Theme-Funktion überschrieben?

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Anker gesetzt

Eingetragen von Schnittmenge@dr... (288)
am 29.09.2008 - 11:25 Uhr

Also ich sehe kein "öffne richtextsettings" siehst Du es?

Richtig ich habe per div ein Anker gesetzt. Bei mir steht in der custom_form_alter Funktion folgende Zeilen:

  $request = request_uri();
      $form['fckeditor']['fckeditor']['#prefix'] = '<div
        id="richtextsettings">';
      $form['fckeditor']['fckeditor']['#suffix'] = '</div>';

Hast Du nicht mal Lust, dass wir uns in Mumble treffen? Ich bin über den drupal.de IRC-Channel zu erreichen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also

Eingetragen von Schnittmenge@dr... (288)
am 29.09.2008 - 15:37 Uhr

Das Aufrufen von Anker auf der selben Seite habe ich jetzt anders gelöst und werde nur den Teil benutzen der den Anker von einer anderen Seite aufruft. Vielen Dank für Deine Hilfe.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was kann ich rausnehmen?

Eingetragen von Schnittmenge@dr... (288)
am 29.09.2008 - 16:27 Uhr

Also wenn ich nur die Funktion haben möchte, wenn ich von einer anderen Seite komme, was kann ich aus dem Code herausnehmen?

<script type="text/javascript">
      function uncollapseReferencedFieldSet(anchor) {
        var url = document.URL;
        try {
          if (!anchor) {
            var splits = url.split("#");
            if (splits.length < 1) return;
            var anchor = '#' + splits.pop();
          }
          var fieldset = $(anchor + ' fieldset');
          $(fieldset ).removeClass('collapsed');
        } catch (e) {}
      }
      $(document).ready(function() {
        uncollapseReferencedFieldSet();
        $('a.uncollapse').click(function() {
          /* $(this).click(); */
          uncollapseReferencedFieldSet($(this).href());
        });
      });
    </script>

  • Anmelden oder Registrieren um Kommentare zu schreiben

jQuery und fieldset

Eingetragen von stBorchert (6003)
am 29.09.2008 - 18:53 Uhr

Moin!
Hab gerade Urlaub, daher die etwas späte Reaktion ;-)

        $('a.uncollapse').click(function() {
          /* $(this).click(); */
          uncollapseReferencedFieldSet($(this).href());
        });

kann dann weg.

schöne Grüsse,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Advertising Modul gesucht
  • Mysql Ver 8.0.41 zu MariaDB 10.11.11
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Doppelte Einträge verhindern
  • [abgeschlosen] PHP Composer von Plesk + .bashrc nicht vorhanden
  • Drupal 7 Focal Point – Bild auf Desktop vollständig anzeigen, nur in Responsive zuschneiden
  • ECA validiere Felder mit unlimitierter Eingabe
  • Zugriff auf Webform beschränken/gewähren
  • Drupal 10.4.5 und Bootstrap 3.x.
  • Probleme mit Drupal 10 - HTTP Statuscode 403 (gelöst)
  • View mit mehreren Ansichten, übersteuert nicht
  • [gelöst] Wiederherstellen mit backup&migrate
Weiter

Neue Kommentare

  • War Eure Suche erfolgreich?
    vor 2 Tagen 14 Stunden
  • V-Server ..
    vor 1 Woche 3 Tagen
  • ... generelle
    vor 1 Woche 3 Tagen
  • oder..
    vor 2 Wochen 4 Tagen
  • Also ich will dich ja nicht
    vor 2 Wochen 4 Tagen
  • nochmal MariaDB vs Mysql
    vor 2 Wochen 4 Tagen
  • Vielen Dank - feedback zu den Videos
    vor 4 Wochen 1 Tag
  • Falls dieses Thema noch mal
    vor 4 Wochen 4 Tagen
  • Prima, dann schreib bitte
    vor 4 Wochen 5 Tagen
  • Ah perfekt. Es hat an der
    vor 4 Wochen 5 Tagen

Statistik

Beiträge im Forum: 249988
Registrierte User: 20278

Neue User:

  • CharlestydaY
  • Darrenwem
  • DavidSeero

» Alle User anzeigen

User nach Punkten sortiert:
wla9454
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3855
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 11 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association