Seite 1 von 1
bug bei mehrsprachigkeit con_code
Verfasst: Sa 23. Okt 2004, 12:52
von emergence
hab mir gerade was nettes angesehen und bin da auf ein problem gestossen...
beispiel zum testen:
2 sprachen -> 1=deutsch, 2=englisch
ich hab ein modul das jeweils in einem template vorkommt und in beiden sprachen verwendet wird.
ich ändere das modul in deutsch oder englisch (ist in dem fall egal)
dann wird im feld createcode der wert auf 1 gesetzt...
bis hier her ist ja noch alles in ordnung...
nun kommt aber der clou...
ich sehe mir die seite im frontend auf deutsch an.
hier wird die änderung übernommen...
mit einem wechsel auf die zweite sprache wird die änderung nicht übernommen...
das intressante ist nun der wert für create code wird auf 0 gesetzt sobald die con_code in der einen sprache upgedatet wurde...
in der anderen sprache bleibt der alte modul code aktiv...
hauptproblem dürfte nun sein das dass feld createcode nicht sprachabhängig ist... dieses feld sollte am ehesten in die con_art_lang wandern... in der con_cat_art bringts leider nicht viel...
wie das ganze mit kategorien und layouts momentan aussieht kann ich momentan leider nicht abschätzen...
leider wird das etwas umbauarbeit im system benötigen...
oder anders gesagt der fehler tut wirklich weh...
Verfasst: Sa 23. Okt 2004, 12:59
von timo
danke, das problem haben wir auch immer wieder - wir löschen öfters die con_code
ich seh mir das mal am montag an und bespreche das ganze mal
eventuell könnte create_code auch ganz rausfliegen, und die entsprechenden con_code-artikel könnten schon gleich gelöscht werden...dann werden sie ja auf jeden fall neu generiert
Verfasst: Sa 23. Okt 2004, 13:08
von emergence
das wäre eventuell die beste lösung...
wenn eine änderung statt findet den eintrag in der con_code komplett löschen...
ob dann noch createcode überhaupt benötigt wird ist dann noch fraglich...
ich werd mich selbst noch ein wenig damit spielen...
Verfasst: Sa 23. Okt 2004, 13:29
von SkyBlader
mhh, wenn ihr bei jeder moduländerung die con_code leert, um ein neuerstellen zu erwzingen, seh ich nur irgendwann acuh ein problem wenn mal sehr viele templates/artikel/module/sprachen vorhanden sind ...
oder meint ihr nicht ?
stefan
Verfasst: Sa 23. Okt 2004, 13:36
von emergence
es soll nicht die komplette con_code geleert werden sondern nur der entsprechende eintrag.
erzeugt werden muss der code der seite ja sowieso noch...
momentan wird zuerst das flag createcode gesetzt und erst dann in der front_content findet die erzeugung des codes statt...
wenn das flag nicht gesetzt ist und kein eintrag in der con_code vorhanden ist wird dieser sowieso erzeugt...
besonders bei vielen seiten ist es hilfreich nicht nachkontrollieren zu müssen ob die änderung auf allen seiten durchgeführt wurde.
momentan muss man das machen in dem man die con_code komplett leert... (das ist der momentane workaround für das problem)
Verfasst: Sa 23. Okt 2004, 14:19
von SkyBlader
ah, ok ..
dann komm ich da mit, danke emerg

Verfasst: Sa 23. Okt 2004, 14:23
von emergence
ähm hab mir das jetzt ne zeitlang überlegt und bin auf nen relativ simplen fix für das problem gekommen...
die änderung betrifft nur die front_content.php
da gibt ja
Code: Alles auswählen
/* Check if code is expired, create new code if needed */
if ( $db->f("createcode") == 0 && $force == 0) {
...
} else {
...
conGenerateCode($idcat, $idart, $lang, $client);
...
}
ähm der fix macht nichts anderes wie falls force=1 oder createcode=1
vorher die einträge aus der con_code zu entfernen
Code: Alles auswählen
/* Check if code is expired, create new code if needed */
if ( $db->f("createcode") == 0 && $force == 0) {
...
} else {
...
$sql = "DELETE FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".$idcatart."'";
$db->query($sql);
conGenerateCode($idcat, $idart, $lang, $client);
...
}
müsste an sich alle probleme beheben... oder hab ich was übersehen... ?
Verfasst: Sa 23. Okt 2004, 14:33
von timo
ja, aber dann wird der artikel doch immer neu generiert oder?
Verfasst: Sa 23. Okt 2004, 14:36
von emergence
nein eben nicht... sollte createcode auf 1 stehen wird der code einmal neu generiert, nach dem erstmaligen erzeugen des artikels wird das feld createcode wieder auf 0 gesetzt...
vorher werden aber alle einträge aus der con_code entfernt.
wechselt man nun in die andere sprache ist das feld createcode zwar noch immer 0 aber der eintrag in der con_code existiert nicht und wird erzeugt...
bei einem force=1 ist es egal, da die seite sowieso neu erzeugt wird.
denk ich mir zumindestens...
Verfasst: Sa 23. Okt 2004, 15:18
von timo
ah okay, verstanden
war vorhin noch etwas früh am morgen

Verfasst: Fr 14. Jan 2005, 12:34
von timo
so den Bugfix habe ich endlich auch eingebaut.
Verfasst: So 16. Jan 2005, 14:38
von emergence
gecheckt sieht gut aus...
geschlossen...
Verfasst: Fr 1. Jul 2005, 12:32
von timo
Irgendwie hat das alles nicht richtig funktioniert.
In der Funktion conSetCodeFlag habe ich noch ein Delete-Statement für die übergebene idcatart eingebaut.