Zitat von w3scout
Beitrag anzeigen
Zugriff auf Taxonomy Tabelle
Einklappen
X
-
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...
-
Oh! Super... sehr aufmerksam von dir! Danke.Zitat von w3scout Beitrag anzeigenProblem 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).
Kommentar
-
-
Und ich unter 3. Läuft.Zitat von w3scout Beitrag anzeigenkeine Ursache.
Hab´ allerdings nur unter CT2 getestet.
🙏 1Kommentar
-
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
-
Und das funktioniert? Catalog mit Contao 3.0.5? Würde mich wundern ^^Zitat von Arno Beitrag anzeigenandere Contao-Installation - auch auf Version 3.0.5 - angesehen hatte, wo im Zusammenhang mit dem Catalog die Taxonomy auch zum Einsatz kommt.
Viele GrüßeContao 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
-
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.Zitat von MacKP Beitrag anzeigenUnd das funktioniert? Catalog mit Contao 3.0.5? Würde mich wundern ^^
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
-
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
-
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
Die taxonomywizard.js Datei habe ich schon ausgewechselt.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 ''" );
Contao 3.1.1
taxnomy per autoload.php intitialisiert.
GrußZuletzt geändert von dhe; 16.07.2013, 15:58.
Kommentar
-
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\');"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.PHP-Code:onclick="AjaxRequestTabletree.showTreeBody(this, \''.$this->strId.'_parent\');"
Als letztes gab es dann noch die oben erwähnten MooTools-Fehler auszubügeln (Zeilen 62 und 63).
Aus
wird nunCode:ul.injectInside(item); item.injectAfter($(el).getParent('li'));
Zu guter letzt habe ich dann einfach noch einCode:ul.inject(item,'bottom'); item.inject(($(el).getParent('li')),'after');
an das Ende der tabletreewizard.js gepackt, damit der TablTree auch brav beim Laden der Seite versteckt wird.Code:window.addEvent('domready', function() { AjaxRequestTabletree.hideTreeBody(); });
Die komplette tabletreewizard.js sieht bei mir nun so aus:
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.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(); });
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
Kommentar