Razer
Hallo Freunde!
Ich habe ein Problem... und zwar:
Wenn ich ein Thema/Thread in ein anderes Forum verschiebe, verliert es sein Prefix.
Sprich ich muss es manuell nochmal setzen.
Gibt es eine Einstellung/Berechtigung/Änderung im Code, damit der Thread sein Präfix fest behält?
Für jede Hilfe bin ich sehr dankbar!
C-Board
Wie sind den die Foreneinstellungen des Zielforums in Bezug auf Präfixe?
Gruß Mike
Razer
Alle Einstellungen sind gleich. .
Die Präfixe sind alle global in der Vorgabe (unter Einstellungen -> Beiträge erstellen) angelegt. Deswegen versteh ich es irgendwo nicht.
Kann es sein, dass das verschieben eines Threads (inkl. Prefix) generell nicht funktioniert?
C-Board
Scheiß die Wand an
Habs gerade mal getestet - ebenso wie bei Dir mit den gleichen Voraussetzungen in Quell- und Zielforum.
Das klappt tatsächlich nicht.
Ich muss mir den Quelltext mal anschauen, wo das hakt.
Wenn Du Zeit hast, schaue ich heute abend mal danach.
Gruß Mike
EDIT: Es geht doch.
Allerdings müssen die Präfixe im Quell- und Zielforum absolut identisch lauten - das war bei mir nicht der Fall, deshalb klappte das auch nicht. Jetzt getestet mit gleichlautenden und schon wirds mit verschoben.
Razer
Ok stimmt du hast recht. Wenn man die Präfixe für jedes Forum hinterlegt klappt es.
Ist dann allerdings nicht so gut durchdacht mit den Vorgabepräfixen für alle Foren

Das wäre leichter zu pflegen gewesen. So muss ich in je 4-5 Foren einzeln die Präfixe hinzufügen.
Aber das ist jetzt erstmal egal, hauptsache es funktioniert

Dank dir!
Schrimm
Hallo,
Eigentlich sollte dies funktionieren.
Laut "mod_functions.php" gibt es folgenden Teil:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
// verify prefix
$prefix = $thread['prefix'];
if ($thread['prefix'] != '') {
// get allowed prefixes in newboard
if ($newboard['prefixuse'] == 1) $ch_prefix = $default_prefix;
if ($newboard['prefixuse'] == 2) $ch_prefix = $default_prefix."\n".$newboard['prefix'];
if ($newboard['prefixuse'] == 3) $ch_prefix = $newboard['prefix'];
else $ch_prefix = "";
$ch_prefix = preg_replace("/\s*\n\s*/", "\n", wbb_trim($ch_prefix));
$ch_prefix = explode("\n", $ch_prefix);
// thread's prefix is not allowed in new board -> delete prefix
if (!in_array($thread['prefix'], $ch_prefix)) {
$prefix='';
}
} |
|
Im dortigen Abschnitt, sollte die "Präfixauswahl" eigentlich korrekt erkannt werden.
Eventuell hast du im neuen "Board" die "Vorgabe-Präfixe" nicht erlaubt?
("ausschließlich Vorgabe-Präfixe benutzen" oder "Vorgabe- mit Foren-Präfixe kombinieren")
C-Board
Ich hatte das gestern mal per print_r($ch_prefix) ausgeben lassen. Und in Zeile 13 wird explizit nach dem Präfix in dem Array gesucht. Wenn das nicht übereinstimmt (bei mir war nur ein Zeichen anders), dann wird die Variable nicht gefüllt.
Gruß Mike
Schrimm
Das sollte aber kein Problem darstellen, da doch die "Vorgabe-Präfixe", also die "Globalen"($default_prefix), miteingelesen werden...
Sonst würde das Einlesen dieser Präfixe sinnfrei sein.
C-Board
Es ist klar, dass das "QuellPrefix" entweder in den globalen Einstellungen ($default_prefix) vorhanden sein muss, oder aber explizit im Zielforum in den Einstellungen.
Dreh- und Angelpunkt ist hier in jedem Falle die Zeile 13. Kommt das Quell-Prefix nicht in dem Array vor, ist $prefix=''.
Und somit wird dann das Prefix nicht mit ins Zielforum verschoben.
Gruß Mike
Schrimm
Zitat: |
Original von Razer
Ok stimmt du hast recht. Wenn man die Präfixe für jedes Forum hinterlegt klappt es.
Ist dann allerdings nicht so gut durchdacht mit den Vorgabepräfixen für alle Foren
Das wäre leichter zu pflegen gewesen. So muss ich in je 4-5 Foren einzeln die Präfixe hinzufügen.
Aber das ist jetzt erstmal egal, hauptsache es funktioniert
Dank dir! |
Was ist dann damit?
C-Board
Das ist doch genau das, was ich sage/Schreibe
Beispiel aus meinem Testforum. In einem Unterforum (nennen wir es "Forum-1") habe ich diverse Präfixe in den Foreneinstellungen, u.A. das Präfix "Wird in v1.7pl3
umgesetzt".
Im Unterforum "Forum-2" habe ich ebenfalls einige Präfixe, allerdings nicht genau das o.g., sondern "Wird in v1.7pl3
korrigiert".
In den globalen Einstellungen (also über die Variable $default_prefix) sind keine eingetragen.
Verschiebe ich nun ein Thema aus dem Forum-1 ins Forum-2, taucht es dort ohne Präfix auf.
Nachdem ich dieses Präfix auch in Forum-2 eingesetzt habe und den Test wiederholt habe, wurde auch das Präfix mit verschoben.
Schrimm, ich hoffe nicht, dass wir beide hier seit einem Tag aneinander vorbeireden oder uns missverstehen
Gruß Mike
Schrimm
Anscheinend reden wir aneinander vorbei.
Der User hat in den globalen Einstellungen($default_prefix) ein Präfix definiert.
Nun hat er in Forum 1 ein Thema, dass das Präfix von den globalen Einstellungen verwendet.
Er verschiebt das Theman von Forum 1 nach Forum 2 und das Präfix wird
nicht mitverschoben.
Erst wenn er das Präfix von den globalen Einstellungen auch als Forumpräfix definiert, wird jenes übernommen.
Da stimmt also etwas nicht.
C-Board
Mensch, bin ich blöd
Wir haben wirklich aneinander vorbei "geredet".
Ich habe mit den Vorgaben nochmal getestet und muss feststellen, dass da ein Fehler im Script ist. Wenn man den Code abändert auf:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
// verify prefix
$prefix = $thread['prefix'];
if ($thread['prefix'] != '') {
// get allowed prefixes in newboard
if ($newboard['prefixuse'] == 1) $ch_prefix = $default_prefix;
else if ($newboard['prefixuse'] == 2) $ch_prefix = $default_prefix."\n".$newboard['prefix'];
else if ($newboard['prefixuse'] == 3) $ch_prefix = $newboard['prefix'];
else $ch_prefix = "";
$ch_prefix = preg_replace("/\s*\n\s*/", "\n", wbb_trim($ch_prefix));
$ch_prefix = explode("\n", $ch_prefix);
// thread's prefix is not allowed in new board -> delete prefix
if (!in_array($thread['prefix'], $ch_prefix)) {
$prefix='';
}
} |
|
klappt das wunderbar (Zeilen 6 und 7 sind verändert worden - aus if wurde else if).
Gruß Mike
Schrimm
Ich sehe momentan nicht, warum dies eine Änderung herbeiführen sollte.
"prefixuse" kann doch eh nicht gleichzeitig mehrere Werte annehmen.
D.h. Es ist entweder 1, 2 oder 3.
Dadurch sollte es auch zu keiner Überschreibung durch die If-Bedingungen kommen, da eh nur eines der drei Möglichkeiten ausgeführt wird.
Seltsam...
C-Board
Naja, wenn wir uns den alten Code vornehmen, dann wird da in Zeile 6 nach $newboard['prefixuse'] == 2 "gefragt". Die Variable $ch_prefix wird richtigerweise übergeben.
Nun kommt aber Zeile 7, wo abgefragt wird, ob $newboard['prefixuse'] == 3 ist. Und die Zeile 8 bezieht sich eben nur auf diese Zeile 7 und somit ist die Variable $ch_prefix leer. Egal, was in Zeile 6 für ein Inhalt übergeben worden ist.
Prickelnder wäre hier auch ein switch gewesen, da mittels break die Abfolge sofort unterbrochen wird.
Gruß Mike
Schrimm
Stimmt...
Hab ich glatt diesen "else"-Teil nicht beachtet.
So wurde nun ein "Bug" im wbb2 behoben.
Zum Glück wurde dies in der "Lite"-Version berücksichtigt.
minette
mögen es sein das es geht mit paar änderungen
aber:
wie sieht es dann aus wenn ne mod auf: Thema bearbeiten click
dann da muss ne fehler meldung kommen
weill de präfix von forum B ist nicht der gleich als der von forum A in B verschoben ist