Hallöchen,
habe ein Problem mit der Extension dr_wiki.
Wenn ich dort Einträge erzeuge und danach etwas ändern möchte, wird immer die alte Version angezeigt. Um die aktuelle Version angezeigt zu bekommen, muss ich im Backend die älteren Versionen im Modul Liste löschen.
Ich suche also im Prinzip nur eine Möglichkeit , der Extension bzw. Typo3 zu sagen, daß immer der Datensatz mit der höchsten ID angezeit werden soll.
Hat dazu jemand eine Idee?
Schon mal vielen Dank
Hallo chris77
also eigentlich sollte es funktionieren, vielleicht hast du irgendwo ne Einstellung gemacht wo die Sortierreihenfolge umgestellt wird
fueg doch mal drwiki auf ner Seite ein wo du n extTemplate anlegst und da die vorherigen Constant/Setup Werte loescht, wenn da dann auch noch die Reihenfolge falsch ist weiss ich auch nicht weiter
aber kannst du den Fehler vielleicht n bisserl eingrenzen 🙂
Gruessle TOm
Hallo TOm,
ich hatte nicht erwähnt, das mein Projekt mit YAML zusammen laufen soll. Macht das einen Unterschied? Im Moment ist noch alles lokal auf einem XAMPP. Ich habe jetzt paralell zu dem bestehnden Projekt ein zweites installiert, in dem ich keine Veränderungen vorgenommen habe, bis auf die Installation der Extension, aber da tritt der gleiche Fehler auf. Dachte, dass durch irgendwelche Einstellungen, die ich vielleicht fälschlicher Weise gemacht habe, das ganze nicht funktioniert. Dann habe ich noch eine TYPO3 3.8.1 laufen ohne YAML, da habe ich dr_wiki auch installiert und es tritt das Problem wieder auf: Ich ändere einen Inhalt der Wiki und er wird zwar gespeichert (man siehts im phpMyAdmin), aber die Änderung wird nicht dargestellt, sondern immer die älteste Version des Keywords.
Scheint eine Einstellung in MySQL zu sein, die den Fehler verursacht, oder?
Gruß Christoph
Hi Christoph
hast du die aktuellste drwiki Version ?
in der Funktion getUid wird zumindest die hoechste id genommen (order by .. desc limit 1)
ebenso die Funktion showlist
da koenntest dir per $showAllVersions=2 immer die aelteste Version hohlen ..
komisch
ich verwend Typo3 4.0.2 und dr_wiki 1.2.0
Gruessle TOm
Hallo TOm,
ich will ja immer die neuste/jüngste Version mit der höchsten ID. Das wäre ja o.k., leider passiert das Gegenteil es wird immer die älteste angezeigt. Ich arbeite auch mit TYPO3 4.0.2 und dr_wiki 1.2.0.
Zwischenzeitlich habe ich auf einem anderen Rechner noch einmal einen frischen XAMPP (in der neusten Version 1.5.4a - der Installer) aufgesetzt und Typo3 mit YAML sowie dr_wiki installiert. Das Ergebnis bzw. das Problem bleibt das gleiche.
Was nun?
Hi Christoph
was passiert wenn du einen Query an deine DB ohne dem order by Statement schickst ? sortiert er da auf oder absteigend ?
Gruessle Tom
Hi Tom,
habe im phpMyAdmin eine Abfrage auf die Tabelle tx_drwiki_pages gemacht. Der Text der Wiki steht ja da im Feld "body". Eine Abfrage darauf (SELECT * FROM tx_drwiki_pages` WHERE `body` LIKE '%ein Begriff%' LIMIT 0 , 30) führt zu einer Ausgabe die aufsteigend nach dem Feld UID sortiert ist (1,2,4,5,6,8,usw.)
Ist es das was du dazu wissen wolltest?
Gruß
Christoph
Hi Christoph
aehm ja .. ich glaub ich hab da grad an was andres gedacht .. sorry des fuehrt bei deinem Problem glaubich nicht weiter 🙁
hmm allerdings faellt mir auhc grad nix andres schlaues mehr ein was du mit deinem Problem machen kannst
vielleicht weiss ja jemand anders noch was .. gibt ja doch n paar die dr_wiki einsetzen
wenn mir doch noch was einfaellt meld ich mich, wenn du ne Loesung bekommst post sie einfach hier rein 🙂
Gruessle TOm
Hi Tom,
ja schade, ich hatte schon Hoffnung gehegt, das ich das heute noch in den Griff krieg. Aber egal, vielen Dank erst mal, ich hoffe jemand anderes hat vielleicht noch eine Idee.
tschö
Christoph
Hallo TOm und alle die das noch interessiert,
habe scheinbar die Lösung für mein Problem gefunden. Wenn ich in der class.tx_drwiki_pi1.php bei der Abfrage:
// The newest version has the highest uid
$query = "select MAX(uid) as uid from tx_drwiki_pages";
$query .= " WHERE tx_drwiki_pages.pid IN (".$pidList.")".chr(10). $this->cObj->enableFields("tx_drwiki_pages").chr(10);
$query .= " AND keyword = '" . trim($keyword) . "' order by uid DESC LIMIT 1";
am Ende das "DESC LIMIT 1" raushaue, funktioniert die Wiki wie gewünscht. Es liegt also an dieser Einschränkung. Leider weiß ich gar nicht so genau was das "DESC LIMIT 1" bewirkt.
Vielleicht kann mir da jemand weiterhelfen.
Schöne Grüsse
Chris
Hallo Chris
DESC ist die Abkuerzung fuer Descending und legt die Sortierreihenfolge fest, sollte eigentlich schon desc sein damit die hoechste ID als erstes kommt
LIMIT 1 beschraenkt die Rueckgabe auf einen Datensatz
aber schoen dass es bei dir geklappt hat
Gruessle TOm
Hallo zusammen
Mitlerweile wird das dr_wiki in der Version 1.4.5 angeboten... Habe aber den gleichen Effect wie oben beschrieben. Leider hilft der CodeHack auch nicht... da der Aufruf nicht mehr der selbe ist...
Und erlich gesagt kann ich mir nicht vorstellen, dass ein solcher "Fehler" solche Versionssprünge überlebt hätte.
Also gehe ich davon aus, das ich was falsch konfiguriert habe. Rsp. eigentlich habe ich nichts configuriert, lediglich die Extension installiert, und ausprobiert.
Weiss jemand wie man es richtig machen sollte?
In Version 1.4.5 sieht der Code etwas anders aus... hier die lösung:
function getUid($keyword)
{
$pidList = $this->pi_getPidList($this->conf["pidList"], $this->conf["recursive"]);
$keyword = $GLOBALS['TYPO3_DB']->fullQuoteStr($keyword,'tx_drwiki_pages');
// The newest version has the highest uid
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('MAX(uid) AS uid','tx_drwiki_pages',
'tx_drwiki_pages.pid IN ( '.$pidList.')'.$this->cObj->enableFields("tx_drwiki_pages").' AND keyword='.$keyword,
'','uid DESC','1');
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
return $row["uid"];
}
'','uid DESC','1'); muss in '','uid',''); geändert werden!
PS: Habs doch noch geschafft ;-)