Zugriff auf Taxonomy Tabelle

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Arno
    Contao-Fan
    • 11.12.2009
    • 290

    #16
    Zitat von w3scout Beitrag anzeigen
    Bei mir steht unter response nur <script>location.replace("http://ctdemo.example.com/contao/index.php")</script>
    Ja, das sagt er bei mir auch. Obwohl ich jetzt gerade noch mal in der Installation mit der Catalog-Erweiterung geschaut habe und die scheint die Darstellung der Taxonomie-Daten irgendwie anders zu machen. Da findet - jedenfalls laut Firebug - kein Ajax-Request statt, sondern die Seite wird in der Tat neu geladen... vielleicht liegts also doch am Ajax...

    Kommentar

    • Arno
      Contao-Fan
      • 11.12.2009
      • 290

      #17
      Zitat von w3scout Beitrag anzeigen
      Problem gelöst: es lag am fehlenden REQUEST_TOKEN im Ajax Request.
      Hatte übersehen, dass das Taxonomy Modul nur bis CT 2.10. freigegeben ist.

      Hab´ die angepasste taxonomywizard.js angehängt. Einfach in den html Ordner des Taxonomy Modules kopieren (und entpacken).
      Oh! Super... sehr aufmerksam von dir! Danke.

      Kommentar

      • w3scout
        Contao-Fan
        • 20.06.2009
        • 273

        #18
        keine Ursache.

        Hab´ allerdings nur unter CT2 getestet.
        Contao Tutor GPT

        Kommentar

        • Arno
          Contao-Fan
          • 11.12.2009
          • 290

          #19
          Zitat von w3scout Beitrag anzeigen
          keine Ursache.

          Hab´ allerdings nur unter CT2 getestet.
          Und ich unter 3. Läuft.

          Kommentar

          • w3scout
            Contao-Fan
            • 20.06.2009
            • 273

            #20
            Und ich unter 3. Läuft.
            sehr gut.

            Hab´ das Update auch an xtra gesendet. Dürfte dann wohl nur ´ne Frage der Zeit sein, bis das Modul auch unter CT3 im ER verfügbar ist.

            LG,
            Darko
            Zuletzt geändert von w3scout; 24.03.2013, 00:12.
            Contao Tutor GPT

            Kommentar

            • Arno
              Contao-Fan
              • 11.12.2009
              • 290

              #21
              Was mich jetzt aber immer noch etwas verwirrt: Ich hatte ja geschrieben, dass ich mir noch eine andere Contao-Installation - auch auf Version 3.0.5 - angesehen hatte, wo im Zusammenhang mit dem Catalog die Taxonomy auch zum Einsatz kommt. Da trat ja das Problem nicht auf. Nach der Erkenntnis mit dem Request Token habe ich mir auf der Installation jetzt noch mal die taxonomywizard.js angesehen und da fehlt der Request Token natürlich auch, aber die Taxonomy-Ausklappung funktioniert trotzdem. Sehr seltsam.

              Kommentar

              • MacKP
                Contao-Yoda
                • 15.06.2009
                • 13315

                #22
                Zitat von Arno Beitrag anzeigen
                andere Contao-Installation - auch auf Version 3.0.5 - angesehen hatte, wo im Zusammenhang mit dem Catalog die Taxonomy auch zum Einsatz kommt.
                Und das funktioniert? Catalog mit Contao 3.0.5? Würde mich wundern ^^

                Viele Grüße
                Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
                [Arbeitet bei -> Paus Design & Medien]
                "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

                Kommentar

                • Arno
                  Contao-Fan
                  • 11.12.2009
                  • 290

                  #23
                  Zitat von MacKP Beitrag anzeigen
                  Und das funktioniert? Catalog mit Contao 3.0.5? Würde mich wundern ^^
                  Na ja, nicht out-of-the Box. Aber ich habe etwas Hand angelegt, weil ich ein Projekt mit Catalog halt Updaten muss/soll. Bin auch noch nicht ganz durch damit, aber so im Prinzip gehts glaube ich. Zumindest schmieren mir inzwischen Back-und Frontend nicht mehr komplett weg sobald ich den Catalog anschalte.
                  Und mir schien eine vertretbare Portierung des Catalogs auf MetaModels zum jetzigen Zeitpunkt einfach nicht möglich, vor allem weil wir auch das Frontend-Editing brauchen und generell meine ersten Gehversuche mit MetaModels nicht gerade erfolgreich waren. Ich bin in MetaModels aber auch noch nicht so tief eingestiegen wie in den Catalog.
                  Zuletzt geändert von Arno; 25.03.2013, 14:35.

                  Kommentar

                  • Arno
                    Contao-Fan
                    • 11.12.2009
                    • 290

                    #24
                    Noch ein Nachtrag von mir:
                    Also so ganz funktioniert die Taxonomy unter Contao 3 doch nicht: Die von mir ausgwählten Taxonomy-Einträge werden nämlich nicht gespeichert. Bereits gespeicherte Optionen bleiben brav erhalten und funktionieren auch weiterhin, aber hinzufügen oder entferenen kann ich keine. Mal weitergucken...

                    EDIT: Habe gerade herausgefunden, dass offensichtlich ein Save Callback in der taxonomy_content Erweiterung überhaupt nicht ausgeführt wird. Deshalb auch keine Speicherung der ausgewählten Optionen. Das ist logisch. Warum der Save Callback nicht ausgeführt wird, verstehe ich nicht...
                    Zuletzt geändert von Arno; 25.03.2013, 17:41.

                    Kommentar

                    • dhe
                      Contao-Fan
                      • 25.10.2010
                      • 663

                      #25
                      Hallo Leute,
                      ich hol das Thema nochmal nach vorne, da ich gerade am gleichen Problem hänge.
                      Die Taxonomie-Einträge werden korrekt im Backend ausgegeben, allerdings nicht gespeichert.

                      Hat jemand eine Idee, woran das liegt?

                      Hier mein DCA
                      PHP-Code:
                      $GLOBALS['TL_DCA']['tl_page']['fields']['taxonomyid'] = array (
                          'label'                => &$GLOBALS['TL_LANG']['tl_page']['taxonomyid'],
                          'exclude'            => true, 
                          'filter'            => true,
                          'inputType'            => 'taxonomyTree',
                          'foreignKey'        => 'tl_taxonomy.name',
                          'eval'                => array('multiple'=>true,'fieldType' => 'checkbox', 'tl_class' => 'long clr', 'mandatory' => false),
                          'sql'                => "varchar(255) NOT NULL default ''"
                      ); 
                      
                      Die taxonomywizard.js Datei habe ich schon ausgewechselt.
                      Contao 3.1.1
                      taxnomy per autoload.php intitialisiert.

                      Gruß
                      Zuletzt geändert von dhe; 16.07.2013, 15:58.

                      Kommentar

                      • Arno
                        Contao-Fan
                        • 11.12.2009
                        • 290

                        #26
                        Ich habe mich gestern nach langer Pause dem Problem noch einmal gewidmet und bin - zumindest für mich - zu einer Lösung gekommen, die ich hier gerne beschreiben möchte.

                        In meinem Fall (in den Felddefinitionen des Catalog waren Änderungen an der Optionsauswahl für Select-Felder nicht mehr änderbar) lag das Problem aber offensichtlich gar nicht (wie ursprünglich vermutet) ausschließlich bei der Taxonomy, sondern vor allem an der Erweiterung "backend_tabletree".

                        Dort habe ich Anpassungen in den Dateien TableTree.php und vor allem in tabletreewizard.js vorgenommen.

                        Grundsätzlich lag das Problem nämlich darin begründet, dass es auf Grund der Änderungen von Contao 2 zu Contao 3 und im MooTools Framework zu Javascript-Fehlern kam, welche die korrekte Ausführung der Ajax-Requests zur Darstellung des TableTrees und zur Speicherung der getätigten Auswahl verhinderten.

                        Die Änderungen im Core-Javascript von Contao beinhalteten offensichtlich eine Entfernung der Funktionen showTreeBody und hideTreeBody. Über diese wurde der Ein-/Ausklappzustand des TableTrees im Backend gesteuert. Durch das Fehlen der Funktion hideTreeBody war der TableTree immer sofort sichtbar. Man musste also die Checkbox "Auswahl ändern" nicht anhaken, die musste aber eben angehakt werden, damit Änderungen beim Speichern auch in die Datenbank geschrieben werden. Da bin ich gestern einfach durch Zufall drauf gestoßen, als ich mich aus lauter Frust mit dem Aus- und Einklappen des TableTree beschäftigt habe, weil ich sonst nicht weiterkam.

                        Ich habe mir also aus der alten Contao Javascript-Datei die beiden Funktionen herauskopiert und einfach mit in die Datei tabletreewizard.js gepackt und in die Variable AjaxRequestTabletree inkludiert. Dann musste ich natürlich noch entsprechend den Aufruf von showTreeBody in der TableTree.php ändern.

                        Auf Zeile 174 wurde aus
                        PHP-Code:
                        onclick="Backend.showTreeBody(this, \''.$this->strId.'_parent\');" 
                        
                        PHP-Code:
                        onclick="AjaxRequestTabletree.showTreeBody(this, \''.$this->strId.'_parent\');" 
                        
                        Darüber hinaus habe ich in der tabletreewizard.js die Variable für das Einfügen des Request Tokens ändern müssen (Zeilen 34 und 40), da die alte Variable "REQUEST_TOKEN" nicht mehr zur Verfügung stand. Stattdessen kann nun "Contao.request_token" verwendet werden.

                        Als letztes gab es dann noch die oben erwähnten MooTools-Fehler auszubügeln (Zeilen 62 und 63).
                        Aus
                        Code:
                        ul.injectInside(item);
                        item.injectAfter($(el).getParent('li'));
                        wird nun
                        Code:
                        ul.inject(item,'bottom');
                        item.inject(($(el).getParent('li')),'after');
                        Zu guter letzt habe ich dann einfach noch ein
                        Code:
                        window.addEvent('domready', function() {
                        	AjaxRequestTabletree.hideTreeBody();
                        });
                        an das Ende der tabletreewizard.js gepackt, damit der TablTree auch brav beim Laden der Seite versteckt wird.

                        Die komplette tabletreewizard.js sieht bei mir nun so aus:
                        Code:
                        /**
                         * Class BackendTabletreeWizard
                         *
                         * Provide methods to handle back end tasks.
                         * @copyright  Thyon Design 2009
                         * @author     John Brand <john.brand@thyon.com>
                         * @package    BackendTaxonomyWizard
                         */
                         
                        var AjaxRequestTabletree =
                        {
                        
                        	/**
                        	 * Toggle the page tree (input field)
                        	 * @param object
                        	 * @param string
                        	 * @param string
                        	 * @param string
                        	 * @param integer
                        	 * @return boolean
                        	 */
                        	toggleTabletree: function (el, id, field, name, level)
                        	{
                        		el.blur();
                        		var item = $(id);
                        		var image = $(el).getFirst();
                        
                        		if (item)
                        		{
                        			if (item.getStyle('display') != 'inline')
                        			{
                        				item.setStyle('display', 'inline');
                        				image.src = image.src.replace('folPlus.gif', 'folMinus.gif');
                        				new Request.Contao().post({'isAjax': 1, 'action':'toggleTabletree', 'id': id, 'state': 1, 'REQUEST_TOKEN': Contao.request_token});
                        			}
                        			else
                        			{
                        				item.setStyle('display', 'none');
                        				image.src = image.src.replace('folMinus.gif', 'folPlus.gif');
                        				new Request.Contao().post({'isAjax': 1, 'action':'toggleTabletree', 'id': id, 'state': 0, 'REQUEST_TOKEN': Contao.request_token});
                        			}
                        
                        			return false;
                        		}
                        
                        		new Request.Contao(
                        		{
                        			onRequest: AjaxRequest.displayBox('Loading data ...'),
                        			onSuccess: function(txt, xml)
                        			{
                        				var ul = new Element('ul');
                        
                        				ul.addClass('level_' + level);
                        				ul.set('html', txt);
                        
                        				item = new Element('li');
                        
                        				item.addClass('parent');
                        				item.setProperty('id', id);
                        				item.setStyle('display', 'inline');
                        
                        				ul.inject(item,'bottom');
                        				item.inject(($(el).getParent('li')),'after');
                        
                        				image.src = image.src.replace('folPlus.gif', 'folMinus.gif');
                        				AjaxRequest.hideBox();
                        
                        			}
                        		}).post({'isAjax': 1, 'action':'loadTabletree', 'id': id, 'level': level, 'field': field, 'name': name, 'state': 1, 'REQUEST_TOKEN': Contao.request_token});
                        
                        		return false;
                        	},
                        
                        	/**
                        	 * Show all pagetree and filetree nodes
                        	 * @param object
                        	 * @param string
                        	 */
                        	showTreeBody: function(el, id)
                        	{
                        		el.blur();
                        		var parent = $(id);
                        
                        		parent.setStyle('display', ($(el).checked ? 'inline' : 'none'));
                        	},
                        
                        	/**
                        	 * Hide all pagetree and filetree nodes
                        	 */
                        	hideTreeBody: function()
                        	{
                        		var lists = $$('ul');
                        
                        		for (var i=0; i<lists.length; i++)
                        		{
                        			if (lists[i].className.indexOf('mandatory') != -1)
                        			{
                        				$('ctrl_' + lists[i].id).checked = 'checked';
                        				continue;
                        			}
                        
                        			if (lists[i].className.indexOf('tl_listing') != -1)
                        			{
                        				var parent = lists[i].getFirst().getNext();
                        
                        				if (parent && parent.className == 'parent')
                        				{
                        					parent.setStyle('display', 'none');
                        				}
                        			}
                        		}
                        	}
                        	
                        }
                        
                        window.addEvent('domready', function() {
                        	AjaxRequestTabletree.hideTreeBody();
                        });
                        Ich habe keine Ahnung, ob das noch irgendjemandem weiterhelfen wird; ich bin genötigt mich damit zu beschäftigen, weil wir den alten Catalog für ein Projekt einfach unter Contao 3 brauchen und ich glaube ich bin jetzt auf einem Stand wo wir damit arbeiten können. Und dokumentiert wollte ich das ganze auch gerne hier haben.
                        Man kann mit dieser Vorgehensweise auch den Backend-Feldtyp "TaxonmyTree" fitmachen (relevant z.B. in den Benutzer- und Benutzergruppen-Einstellungen, um erlaubt Taxonomy-Mounts festzulegen), das habe ich gerade eben verifiziert.
                        Zuletzt geändert von Arno; 12.11.2013, 12:09.

                        Kommentar

                        Lädt...