Limited Post Edit Time und Ajax

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Angi0570
Beiträge: 34
Registriert: Di 04.Jul, 2006 11:20

Limited Post Edit Time und Ajax

Beitrag von Angi0570 »

Ich weiss, das Thema war bei cback schon des öfteren da, aber es lässt mir trotzdem keine Ruhe *lach*
Ausgangspunkt ist, dass auch bei eingeschalteter Editiersperre (nach voreingestellter Minutenzeit) zwar der Ändern-Button prima greift, aber im Orion mit den eingebauten AJAX-Features der Link zum schnellen Bearbeiten nach wie vor ohne Probleme funktioniert.

Nun habe ich mir mal die zwei relevanten Stellen angeschaut - für die "normale" Änderung ist die Abfrage, die laut Anleitung eingebaut werden muss, folgende (in der posting.php):

Code: Alles auswählen

   // 
   // BEGIN - Limited post edit time MOD 
   // 
   if ( $mode == 'editpost' && !$is_auth['auth_mod'] && $board_config['edit_time'] != '0' && !$submit) 
   { 
      $current_time = time(); 
      $difference_sec = $current_time - $post_info['post_time'] ; 
      $difference_min = ($current_time - $post_info['post_time']) / 60; 
      if ($difference_min > $board_config['edit_time'] ) 
      { 
         $message = sprintf($lang['edit_time_past'], $board_config['edit_time']) . '<br /><br />' . sprintf($lang['Click_view_message'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" . $post_id) . '#' . $post_id . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id") . '">', '</a>'); 
         message_die(GENERAL_MESSAGE, $message); 
      } 
   } 

   // 
   // END - Limited post edit time MOD 
   //
Bei der Ajax-Geschichte steckt das ganze an dieser Stelle der viewtopic:

Code: Alles auswählen

if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] && ($forum_topic_data['topic_status'] != TOPIC_LOCKED)) || $is_auth['auth_mod'] )
	{
		$edit_url = append_sid("posting.$phpEx?mode=editpost&" . POST_POST_URL . "=" . $postrow[$i]['post_id']);
		$edit_img = '<a href="'. $edit_url .'"><img src="' . $images['icon_edit'] . '" alt="' . $lang['Edit_delete_post'] . '" title="' . $lang['Edit_delete_post'] . '" border="0" /></a>';
		$edit =  '<a id="editlink_'. $postrow[$i]['post_id'] .'" onclick="return AJAXPostEdit('. $postrow[$i]['post_id'] .');" href="' . $edit_url . '" style="text-decoration: none;">[ ' . $lang['Edit_quick_post'] . ' ]</a>';
	}
	else
	{
		$edit_img = '';
		$edit_direct = '';
		$edit = '';
		$edit_url = '';
	}

Hast du vielleicht ne Idee, wie man diese erste if-Abfrage (die ja die Änderungsgeschichte ermöglicht, und für alle drei Varianten gleichermassen gilt, um die Sache mit der Zeit erweitern könnte?
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ich kenne den MOD selber nicht, kann hier also weniger helfen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Angi0570
Beiträge: 34
Registriert: Di 04.Jul, 2006 11:20

Beitrag von Angi0570 »

;) - welchen MOD?
femu
Beiträge: 176
Registriert: Mo 22.Mai, 2006 10:36
Wohnort: Pfaffenhofen
Kontaktdaten:

Beitrag von femu »

Ich würde jetzt spontan (ohne Gewähr) mal eine Kombi der Stellen vorschlagen:

Code: Alles auswählen

if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] && ($forum_topic_data['topic_status'] != TOPIC_LOCKED)) || $is_auth['auth_mod'] )
	{
		$current_time = time();
		$difference_sec = $current_time - $post_info['post_time'] ;
		$difference_min = ($current_time - $post_info['post_time']) / 60;
		if ($difference_min > $board_config['edit_time'] )
		{
			$edit_url = append_sid("posting.$phpEx?mode=editpost&" . POST_POST_URL . "=" . $postrow[$i]['post_id']);
			$edit_img = '<a href="'. $edit_url .'"><img src="' . $images['icon_edit'] . '" alt="' . $lang['Edit_delete_post'] . '" title="' . $lang['Edit_delete_post'] . '" border="0" /></a>';
			$edit =  '<a id="editlink_'. $postrow[$i]['post_id'] .'" onclick="return AJAXPostEdit('. $postrow[$i]['post_id'] .');" href="' . $edit_url . '" style="text-decoration: none;">[ ' . $lang['Edit_quick_post'] . ' ]</a>';
		}
		else
		{
			$edit_img = '';
			$edit_direct = '';
			$edit = '';
			$edit_url = '';
		}
	}
Wie gesagt ... nur eine spontane Idee ...
Angi0570
Beiträge: 34
Registriert: Di 04.Jul, 2006 11:20

Beitrag von Angi0570 »

Habs eben mal getestet - Fehlermeldungen kommen schon mal keine. Aber beachtet wird die Zeit, die zum Editieren zur Verfügung steht, bisher nicht.
Die Änderungs-Links (Button oben bzw. Ajax-Link unter dem Text) sind danach wieder da - und zwar überall.

Normal würde ich das ja so verstehen, dass nach Ablauf der Zeit für normale Benutzer die Links entschwinden. Hm. Aber vielleicht hat Karsten ja noch ne Idee. Ich kann auch gern nochmal die komplette Anleitung für den Limited Post Edit Time anhängen, der ist eigentlich ziemlich simpel.

Aktuell behelfe ich mir ja mit dem kompletten Ausblenden des Ajax-Links, was ich ja auch noch mit nem Switch, der zwischen Mods/Admins und normalen Usern unterscheidet, erweitern könnte. Aber es läßt mir halt andererseits auch keine Ruhe *lach* - ich mag die Editierfunktion vom Ajax sehr gern, ich mag aber auch die begrenzte Zeit zum Editieren (speziell, weil ich grad in einem befreundeten Forum genau den Fall hatte, dass ein User aus Rache alle Beiträge editiert hat, und ganze Diskussionen nun völlig aus dem Zusammenhang gerissen sind)
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

[quote="Angi0570";p="84811"];) - welchen MOD?[/quote]
Nach den Limited Edit Time MOD ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
JaneDoe
Beiträge: 230
Registriert: Sa 16.Jul, 2005 12:18

Beitrag von JaneDoe »

Hatte oxpus hier nicht mal so ein Schnipsel hier gepostet?


ajax.php

suche

Code: Alles auswählen

$sql = 'SELECT p.poster_id, p.forum_id,
ändere in

Code: Alles auswählen

$sql = 'SELECT p.poster_id, p.post_time, p.forum_id,
suche

Code: Alles auswählen

// Prepare message for posting and edit post text
füge davor ein

Code: Alles auswählen

else if ( $row['post_time']+604800 <= time() && !$is_auth['auth_mod'] )
		{
       		$result_ar = array(
			'result' => AJAX_ERROR,
			'postid' => $post_id,
			'error_msg' => 'Beitr&auml;ge k&ouml;nnen nur 7 Tage lang editiert werden.'
		);
		AJAX_message_die($result_ar);
		}
Dieser Satz kein Verb.
Angi0570
Beiträge: 34
Registriert: Di 04.Jul, 2006 11:20

Beitrag von Angi0570 »

Sähr schön - das hilt mir zumindest schon mal insofern weiter, dass die Änderungen nicht mehr greifen - aber ohne Fehlermeldung *hm*

Zwar finde ich grundsätzlich die Lösung, dass nach Ablauf der Zeit die Links/Buttons zum ändern generell verschwinden, eleganter - mal gucken, ob ich dazu noch was finde.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ich kann mich daran nicht wirklich erinnern...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
JaneDoe
Beiträge: 230
Registriert: Sa 16.Jul, 2005 12:18

Beitrag von JaneDoe »

aus meiner viewtopic.php

Code: Alles auswählen

	if ( ( $userdata['user_id'] == $poster_id && $is_auth['auth_edit'] && $postrow[$i]['post_time'] + 604800 > time() && ($forum_topic_data['topic_status'] != TOPIC_LOCKED)) || $is_auth['auth_mod'] )
	
	{
		$edit_url = append_sid("...;
		$edit_img = '<a href=".....;
		$edit = '<a id="editlink_'....;	}
	else
	{
		$edit_img = '';
		$edit = '';
		$edit_url = '';
	}
edit links und quick edit links sind ausgeblendet.

@oxpus. Ich dachte das könnte ich nur hier her haben. ;)
Dieser Satz kein Verb.
Angi0570
Beiträge: 34
Registriert: Di 04.Jul, 2006 11:20

Beitrag von Angi0570 »

Ja, das funktioniert perfekt. Muss ich nur im Kopf behalten, dass ich die Zeit dort manuell eintragen muss (ich hab den Wert 600 genommen, da nur 10 Minuten lang editieren werden darf)

Funktioniert bei mir auch ohne die ajax-Änderung. Genauso hab ich mir das vorgestellt - fein.
Antworten