Seite 1 von 1
Beitrag löschen/Weiterleitung
Verfasst: 19.02.2004 08:35
von musashi
Guten morgen.
Wenn man einen Beitrag aus einem längeren thread löscht, wird man danach ja grundsätzlich auf Seite 1 weitergeleitet.
Was müsste ich tun, wenn ich will, dass man aber nach dem löschen auf die Seite geleitet wird, aus der man den Beitrag gelöscht hat (weil alles andere ja eigentlich schwachsinn ist)
Gruss und danke schonmal!
Verfasst: 20.02.2004 09:47
von musashi
Hat denn keiner ne Idee - oder besser gesagt bin ich der einzige Mensch den das stört?

Verfasst: 21.02.2004 22:16
von Acid
$meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $topic_id) . '">';
$message = (($mode == 'poll_delete') ? $lang['Poll_delete'] : $lang['Deleted']) . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>');
Diese Zeilen in der functions_post.php sind für die Weiterleitung verantwortlich. Das Problem dabei ist, das beim Löschen die Variabel zur Seitenzahl nicht mit übergeben wird und man sie daher auch nicht an die Weiterleitung weitergeben kann (wenn ich jetzt nicht was übersehe).
Verfasst: 23.02.2004 11:57
von musashi
Hmm, mal nachdenken, es gibt doch auch nen mod, der einen zum leztzten POsting eines jeweiligen Threads bringt, oder? (Standardmässig geht man auch bei einem Thread auf Seite 1, wenn man auf die Headline klickt.)
Verfasst: 24.02.2004 10:47
von Acid
Das ist ja eigentlich kein MOD, sondern Standard beim phpBB.
Dort wird halt die aktuelle ID ausgelesen, mit
post_id#post_id übergeben, wodurch man dann zum letzten Beitrag gelangt.
Nur kann man das auch nicht anwenden, da a) diese post_id nicht mehr gültig wäre, da dies ja der Beitrag ist, der gelöscht wurde und b) man ja nicht unbedingt immer zum letzten Beitrag will, wenn man z.B. auf Seite 4 von 23 einen Beitrag gelöscht hat.
Mir fällt momentan keine Möglichkeit ein, das zu ermitteln.

Verfasst: 24.02.2004 13:16
von Matlock
Acid hat geschrieben:Mir fällt momentan keine Möglichkeit ein, das zu ermitteln.

Ja nun, der Link unter dem Kreuz-Symbol zum löschen eines einzelnen Beitrags in der Themenansicht sieht ja so aus:
Code: Alles auswählen
http://www.DOMAIN.de/phpBB2/posting.php?mode=delete&p=12345
12345 steht für das zu löschende Posting. Man müßte die viewtopic.php ändern, so daß sie auch das Posting davor ermittelt und dieses als Variable mitübergeben, so daß der Link unter dem Löschsymbol dann so aussehen müßte:
Code: Alles auswählen
http://www.DOMAIN.de/phpBB2/posting.php?mode=delete&p=12345&prepost=nummer-des-vorhergehenden-postings-im-thread
Die Variable prepost (die es hoffentlich mit diesem Namen noch nicht gibt), wird dann für den metatag refresh ausgewertet, der metatag muß dann auf die post_id (prepost) statt auf die topic_id verweisen und man landet beim letzten Posting vor dem gerade gelöschten.
Oder?
Verfasst: 24.02.2004 13:30
von Elo
Ermitteln der wievielte Beitrag der zu löschende in dem Thema ist, diese Zahl minus eins, geteilt durch die Variable $board_config['posts_per_page'] und das Ergebnis herunter gerundet sollte die Seite nach dem Löschvorgang ergeben.
Elo
Verfasst: 24.02.2004 14:54
von Matlock
Mit der nachfolgend ersichtlichen Änderung in der functions_post.php komm ich jetzt nach dem löschen automatisch zum letzten verbleibenden Beitrag des Threads:
Code: Alles auswählen
if ($mode == 'delete' && $post_data['first_post'] && $post_data['last_post'])
{
$meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $forum_id) . '">';
$message = $lang['Deleted'];
}
else
{
// $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $topic_id) . '">';
// neu statt der zeile obendran
$metasql = "SELECT post_id, topic_id FROM phpbb_posts WHERE topic_id = " . $topic_id . " AND post_id != " . $post_id . " ORDER BY post_id DESC LIMIT 1";
$metaresult = mysql_query($metasql);
while ($metaline = mysql_fetch_array($metaresult)) {
$prepost = $metaline[post_id];
}
mysql_free_result($metaresult);
$meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $prepost) . '#' . $prepost . '">';
// neu ende
$message = (($mode == 'poll_delete') ? $lang['Poll_delete'] : $lang['Deleted']) . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>');
}
Wenn man
post_id != " . $post_id
ersetzt durch
post_id < " . $post_id
müßte man beim Löschen eines mitten im Threads (z. B. auf Seite 5 von 8 Seiten) befindlichen Postings nachher zu dem Posting kommen, das direkt vor dem gelöschten steht. Habs aber nicht ausprobiert.
Verfasst: 24.02.2004 15:29
von Elo
@Matlock
Deine Lösung trifft zwar nicht 100%ig deine Ausgansfrage nach der Weiterleitung, aber wenn es denn funktioniert ist es auch ok.
Elo