Ergebnis 1 bis 18 von 18

Thema: Im BE für einen Seitenbaum die Eingabefelder Text und TinyMCE in RTL umstellen

  1. #1
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.725
    User beschenken
    Wunschliste

    Frage Im BE für einen Seitenbaum die Eingabefelder Text und TinyMCE in RTL umstellen

    Hi,

    ich habe verschiedene Sprachen in einer Contaoversion zu verwalten - u.a. auch zwei "RTL-Sprachen". Hier würde ich im BE die zwei Seitenbäume so einstellen, dass die normalen Textfelder wie Überschriften und der TinyMCE in RTL anzeigen.

    Geht das und wenn ja wie?

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich denke du kannst z.B. in der dcaconfig.php den Query auslesen und so an die ID des CEs kommen.
    PHP-Code:
    $query = \Environment::getInstance()->get('queryString'); // do=article&table=tl_content&act=edit&id=524&rt=2e41f4e278411dad601951245a7e75ce&ref=1d4a5608
    // oder direkt
    $query Environment::get('queryString'); 
    Aber dann müsstest du anhand der CE-ID zurückgehen, bis du den Seitenbaum hast.

    Felder und tinyMCE dann einzustellen sollte ja nicht das Problem für dich sein.
    Geändert von Andreas (02.10.2015 um 17:54 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.725
    User beschenken
    Wunschliste

    Standard

    hmmm... stehe noch etwas auf dem Schlauch, wie es dann weiter gehen soll...

  4. #4
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Mal ganz grob
    PHP-Code:
    <?php
    $dbObj 
    Database::getInstance();

    $objCe $dbObj->prepare("SELECT pid FROM tl_content WHERE id=".$ceID)
             ->
    executeUncached();

    $objArticle $dbObj->prepare("SELECT pid FROM tl_article WHERE id=".$objCe->pid)
                  ->
    executeUncached();

    $objPage $dbObj->prepare("SELECT languageRoot FROM tl_page WHERE id=".$objArticle->pid)
               ->
    executeUncached();
    ?>
    Würde wahrscheinlich auch mit nem Join gehen, bin da aber nicht so fit drin.

    Die ID aus dem Query holen kannst du ja mit explode() oder evtl. mit parse_url().
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.725
    User beschenken
    Wunschliste

    Standard

    ähhh - damit keine Unklarheiten aufkommen: ich bin im BACKEND

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ja, klar, aber du willst doch, dass wenn du im BE in CEs von bestimmten Startpunkten bist, z.B. den Tiny auf RTL einstellen, oder?
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.725
    User beschenken
    Wunschliste

    Standard

    ich müsste demnach ein eigenes BE-Modul schreiben..??

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ja, was wolltest du denn? In irgendein Feld von dem Startpunkt was reinschreiben und dann geht das automatisch?
    Du kannst das ja erstmal alles über die dcaconfig.php probieren bevor du ein Modul schreibst.

    Also nach deiner Prüfung, ob sich das CE auf einem RTL-Root befindet, sowas hier:
    PHP-Code:
    // use tinyCustom or tinyCustomRTL for all textareas that use tinyMCE
    // Geändert: geht nicht mit Variable $tinyConfig
    #$tinyConfig = $isRTL ? 'tinyCustomRTL' : 'tinyCustom';

    array_walk_recursive($GLOBALS['TL_DCA'], function(&$v$k){
      if(
    $k === 'rte' && $v === 'tinyMCE')
      {
        
    #$v = $tinyConfig;
        
    $v $isRTL 'tinyCustomRTL' 'tinyCustom';
      }
    }); 
    Geändert von Andreas (06.10.2015 um 12:06 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  9. #9
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.725
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    Du kannst das ja erstmal alles über die dcaconfig.php probieren bevor du ein Modul schreibst.
    das klingt doch gut - werde ich testen...

    Dank schonmal!

  10. #10
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich bin gestern nochmal darauf zurück gekommen. Das scheint nicht so einfach zu sein den Root (Startpunktseite) eines Inhaltselementes herauszufinden. Es gibt eine Erweiterung parentslist https://contao.org/erweiterungsliste...rentslist.html, welche dir neue Felder in die tl_page macht. Eines davon ist rootId. Damit könntest du dann von jeder Seite sofort die Startpunkt ID abgreifen. Je nachdem, was changelanguage da macht, könntest du aber evtl. darauf verzichten. Falls changelanguage die Sprache jeder Seite in ein Feld schreiben sollte.

    Hier mal ein Ansatz mit parentslist
    PHP-Code:
    $isRTL false;

    // If URL query includes: table=tl_content, act=edit, id=integer
    if(TL_MODE == 'BE' && 'BE view' == 'content editing view')
    {
      
    $ceID 163// dummy id for testing

      // get root page id of a particular content element
      // install parentslist first
      
    $rootPageId = \Database::getInstance()->prepare(
        
    "SELECT
           p.rootId
        FROM
           tl_content as c,
           tl_article as a,
           tl_page    as p
        WHERE
           c.id  = "
    .$ceID." AND
           c.pid = a.id AND
           a.pid = p.id"
      
    )->executeUncached()->rootId;

      
    $rootPageLanguage = \PageModel::findOneBy('id'$rootPageId)->language;

      
    // set RTL for some languages
      
    $isRTL in_array($rootPageLanguage, array('ar''pk')) ? true false;
    }

    // use tinyCustom or tinyCustomRTL for all textareas that use tinyMCE 
    // Geändert: geht nicht mit Variable $tinyConfig
    #$tinyConfig = $isRTL ? 'tinyCustomRTL' : 'tinyCustom';

    array_walk_recursive($GLOBALS['TL_DCA'], function(&$v$k){
      if(
    $k === 'rte' && $v === 'tinyMCE')
      {
        
    #$v = $tinyConfig;
        
    $v $isRTL 'tinyCustomRTL' 'tinyCustom';
      }
    }); 
    Der MySQL-query ist kein Join, funktioniert aber trotzdem, ich weiß nicht, ob ein Join da noch performanter wäre. Er greift das Feld rootId der Seite ab, auf welcher das CE liegt. Durch das Feld rootId (parentslist) spart man sich hier den Weg von dieser Seite aus dann nochmal den Startpunkt ermitteln zu müssen, was aufwendig wäre, weil eine Seite ja nur auf level 1 ein direktes Child vom Root ist.

    Die if-Anweisung musst du noch bearbeiten, die Anweisung soll im BE ja nur ausgeführt werden, wenn du erfolgreich ermittelt hast, dass du in der Bearbeiten-Maske eines Inhaltselementes bist. Damit solltest du dann auch die ID des CEs haben. Ich hatte zum Testen einfach mal eine Dummy-ID eingetragen.

    Die Sprachen ar und pk sind wahrscheinlich falsch, ich habe einfach irgendwas genommen.
    Geändert von Andreas (06.10.2015 um 12:03 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  11. #11
    Contao-Fan
    Registriert seit
    16.05.2014.
    Beiträge
    295

    Standard

    https://github.com/contao/core/issues/7232
    Bist du das? Sonst häng dich da mit dran, dann könnte das Contao direkt umsetzen,
    wenn schon rtl Sprachen unterstützt werden sollte man das meiner Meinung nach auch entsprechend anpassen.

    Der TinyMCE sollte das meine ich schon können das muss man vtl umstellen.
    Gibt ja Threads und meine auch Erweiterungen bzlg TinyMCE Anpassung.
    Vtl. das:
    http://www.tinymce.com/wiki.php/Conf...directionality

  12. #12
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.725
    User beschenken
    Wunschliste

    Standard

    im Tiny ist das mit "directionality" umzustellen - ich hatte noch die Idee als Workaround einfach einen extra "RTL"-Benutzer anzulegen und diesem dann eine customConfig mit RTL mit auf den Weg zu geben

  13. #13
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Znrl Beitrag anzeigen
    Bist du das?
    Nein das bin ich nicht. Auf Github bin ich Aybee.

    Für den Core würde ich so eine Lösung auch nicht vorschlagen. Da würde ich eher sagen, wenn man die BE-Sprache auf irgendeine RTL-Sprache einstellt, werden auch die CEs inkl. Tiny in RTL angeboten. Oder man macht einen Button im Element, um auf RTL umzustellen. Oder irgendwo anders im BE einen Switch auf RTL CEs. Oder wie zonky sagt, einen BE-User mit RTL-CEs.

    Hier geht es ja hauptsächclich darum, dass RTL automatisch anhand der FE-Sprache des CEs auf RTL eingestellt werden soll.
    Geändert von Andreas (02.10.2015 um 17:52 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  14. #14
    Contao-Fan
    Registriert seit
    16.05.2014.
    Beiträge
    295

    Standard

    Sry meinte eig. Zonky.

    In gewisser weise hängt hier FE und BE ja auch zusammen. Ich hatte das auch nicht direkt auf eine gepostete Möglichkeit bezogen.

    Es geht ja generell ums BE und da macht es ja Sinn, wenn man das komplette BE oder einen Seitenstartpunkt auf RTL setzt entsprechend alles oder den Seitenbaum (das mit dem User ist vtl. praktikabler, wenn es nicht um das gesamte Backend geht) zumindest die Eingabefelder etc. an RTL anpasst.
    Die Sprache wird ja immerhin vom Contao Core angeboten und ist RTL, um das ordenrlich nutzen zu können sollte deshalb meine ich der Core auch RTL Eingabefelder/TinyMCE anbieten.

    Da Issue auf Github geht ja prinzipiell darum, wenn da noch der eine oder andere Bedarf meldet, wird das vtl. wieder geöffnet.

  15. #15
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.725
    User beschenken
    Wunschliste

    Standard

    nun, das komplette BE in RTL abzubilden ist ein ganzes Stück Arbeit... zumal es m.E. noch für wenige RTL-Sprachen überhaupt eine Übersetzung gibt...

    Aus meiner Praxis ist es eher so, dass im DE oder EN-Backend eine RTL-Sprache eingegeben wird und dafür wäre eine Umstellung like "[_] Eingabefelder/TinyMCE in RTL verwenden" prima

    @Andreas: m.E. bräuchte man einen Hook, wo man sich einklinken kann - auf den ersten Blick könnte https://docs.contao.org/books/api/ex...Container.html passen...

  16. #16
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.725
    User beschenken
    Wunschliste

    Standard

    ich habe nun als ersten Workaround eine eigene tinyMCEcustomrtl.php als Kopie der tinyMCE.php angelegt und folgendes ergänzt

    PHP-Code:
    <script>window.tinymce || document.write('<script src="<?php echo TL_ASSETS_URL?>assets/tinymce4/tinymce.gzip.js">\x3C/script>')</script>
    <script>
    window.tinymce && tinymce.init({
      skin: "contao",
      selector: "#<?php echo $selector?>",
      language: "<?php echo Backend::getTinyMceLanguage(); ?>",
      directionality : 'rtl',
    ....
    im dcaconfig.php

    PHP-Code:
    // Benutzergruppe RTL = 4
    if (BackendUser::getInstance()->isMemberOf(4))
    {
        
    array_walk_recursive($GLOBALS['TL_DCA'], function(&$v$k){
          if(
    $k === 'rte' && $v === 'tinyMCE')
          {
            
    $v 'tinyMCEcustomrtl';
          }
        });

    (http://www.e-spin.de/dcaconfig-editor.html)

  17. #17
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Habe gerade festgestellt, dass der array_walk mit der Variablen $tinyConfig aus meinem Beispiel oben nicht funktioniert. Habe es oben geändert.
    https://community.contao.org/de/show...l=1#post386161
    https://community.contao.org/de/show...l=1#post386161
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  18. #18
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du kannst auch direkt mit einer tinyCustom arbeiten und die Unterscheidung dort machen. Direkt anhand der BE-Sprache oder anhand einer Benutzergruppe.
    PHP-Code:
    <?php
    if ($GLOBALS['TL_CONFIG']['useRTE']):

    // Directionality depends on BE-Language
    #$directionality = in_array(Backend::getTinyMceLanguage(), array('fa')) ? 'rtl' : 'ltr';
    // Directionality depends on usergroup
    $directionality BackendUser::getInstance()->isMemberOf(4) ? 'rtl' 'ltr';
    ?>
    ...
      directionality: "<?= $directionality ?>",
      ...
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •