Zum Inhalt springen

Problem mit dr_wiki

Erstellt am 8. November 2006 · 12 Antworten · letzte Antwort am 18. März 2008

Tags: Frage

chris77 ·

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

T0m ·

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

chris77 ·

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

T0m ·

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

chris77 ·

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?

T0m ·

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

chris77 ·

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

T0m ·

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

chris77 ·

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

chris77 ·

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

T0m ·

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

boxi ·

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?

boxi ·

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 ;-)