Ich habe nun schon etwas gesucht aber leider nichts im Admin Bereich und hier gefunden.
Gibt es eine Möglichkeit das Editieren von Beiträgen nur für eine gewisse Zeit nach dem Erstellen eines Beitrages zu ermöglichen?
Oder das immer nur ein Beitrag geändert werden kann, solange es keine Antwort darauf gibt?
Guten Morgen.
Sieh dazu im Admin-CP:
Konfiguration ~> Einstellungen ~> Beitragserstellung ~> Bei Bearbeitungszeit die gewünschte Zeit einstellen
Ahh, vielen Dank. Machmal sieht man den Wald vor Bäumen nicht.
Ist es auch möglich, dass dann bei älteren Einträgen auch der Editierbutton verschwindet?
Das dürfte mit einer kleinen If-Abfrage möglichsein. Wenn die eingestellte Editierzeit vorbei ist, wird der Button nicht mehr angezeigt.
Ersetze in der inc/functions_post.php:
PHP-Code:
if((is_moderator($fid, "caneditposts") || ($forumpermissions['caneditposts'] == 1 && $mybb->user['uid'] == $post['uid'])) && $mybb->user['uid'] != 0)
{
eval("\$post['button_edit'] = \"".$templates->get("postbit_edit")."\";");
}
durch:
PHP-Code:
$time = TIME_NOW;
if((is_moderator($fid, "caneditposts") || ($forumpermissions['caneditposts'] == 1 && $mybb->user['uid'] == $post['uid'] && ($mybb->settings['edittimelimit'] == 0 || $post['dateline'] >= ($time-($mybb->settings['edittimelimit']*60))))) && $mybb->user['uid'] != 0)
{
eval("\$post['button_edit'] = \"".$templates->get("postbit_edit")."\";");
}
Ich krame diesen Thread mal heraus, da ich gerade ausprobieren wollte, neben der allgemeinen Bearbeitungszeit, einer bestimmten Usergruppe eine abweichende Bearbeitungszeit einzuräumen.
Ist es denkbar, einer bestimmten Usergruppe eine abweichende Bearbeitungszeit zuzuordnen? Nur über eine Anpassung des o.a. Codes von Stefan scheint das nicht zu gehen. Über einen Tipp wäre ich sehr dankbar.
Ich nutze 1.4.11
Der Code von Stefan ist nur für die Anzeige/Ausblendung des Buttons verantwortlich und greift nicht in den eigentlichen Mechanismus ein. Wenn du daran etwas ändern willst, ist auch diese zu ändern. Mit einfachen Mitteln geht es leider nicht.
Wäre ich bei folgendem Code in der editpost.php schon mal richtig oder geht es noch mehr in die Tiefe? Vermutlich müsste auch noch die xmlhttp.php geändert werden?
PHP-Code:
if(!is_moderator($fid, "caneditposts"))
{
if($thread['closed'] == 1)
{
error($lang->redirect_threadclosed);
}
if($forumpermissions['caneditposts'] == 0)
{
error_no_permission();
}
if($mybb->user['uid'] != $post['uid'])
{
error_no_permission();
}
// Edit time limit
$time = TIME_NOW;
if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < ($time-($mybb->settings['edittimelimit']*60)))
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);
error($lang->edit_time_limit);
}
}
Evtl. ließe sich dort noch zusätzlich eine Unterscheidung bzgl. Usergruppe einbauen. Bislang waren meine Versuche aber noch nicht erfolgreich.
Nachtrag:
mit entsprechenden Änderungen in der editpost.php und der xmlhttp.php habe ich es hin bekommen.
(02.04.2010, 19:09)Jockl schrieb: [ -> ]mit entsprechenden Änderungen in der editpost.php und der xmlhttp.php habe ich es hin bekommen.
Magst du diese noch hier posten? Möglicherweise ist das für den ein oder anderen auch interessant.
(03.04.2010, 14:42)Michael schrieb: [ -> ]Magst du diese noch hier posten? Möglicherweise ist das für den ein oder anderen auch interessant.
jep, wollte es vorher nur ausführlich Testen.
Hier aber nun die Code-Änderungen:
Ziel der Änderungen ist, einer bestimmten Usergruppe eine von der Standartbearbeitungszeit abweichende Bearbeitungszeit für Beiträge zu erteilen. Der entsprechenden Usergruppe muss im ACP die Erlaubnis erteilt werden, Beiträge bearbeiten zu dürfen.
In den nachfolgenden Zeilen wurde für die Usergruppe 11 eine Bearbeitungszeit von 30 Minuten eingeräumt.
Suche in der editpost.php nach
PHP-Code:
if(!is_moderator($fid, "caneditposts"))
{
if($thread['closed'] == 1)
{
error($lang->redirect_threadclosed);
}
if($forumpermissions['caneditposts'] == 0)
{
error_no_permission();
}
if($mybb->user['uid'] != $post['uid'])
{
error_no_permission();
}
// Edit time limit
$time = TIME_NOW;
if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < ($time-($mybb->settings['edittimelimit']*60)))
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);
error($lang->edit_time_limit);
}
}
und ersetze es durch
PHP-Code:
if(!is_moderator($fid, "caneditposts"))
{
// Zeit in Minuten, in der Beiträge innerhalb der entspr. Usergruppe bearbeitet werden können
$gid_edittime = 30;
// entspr. Usergruppe
$gid_usergroup = 11;
if($thread['closed'] == 1)
{
error($lang->redirect_threadclosed);
}
if($forumpermissions['caneditposts'] == 0)
{
error_no_permission();
}
if($mybb->user['uid'] != $post['uid'])
{
error_no_permission();
}
// Edit time limit
$time = TIME_NOW;
if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < ($time-($mybb->settings['edittimelimit']*60)) && $mybb->user['usergroup'] != $gid_usergroup)
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);
error($lang->edit_time_limit);
}
if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < ($time-($gid_edittime*60)) && $mybb->user['usergroup'] == $gid_usergroup)
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $gid_edittime);
error($lang->edit_time_limit);
}
}
Suche in der xmlhttp.php nach
PHP-Code:
// If this user is not a moderator with "caneditposts" permissions.
if(!is_moderator($forum['fid'], "caneditposts"))
{
// Thread is closed - no editing allowed.
if($thread['closed'] == 1)
{
xmlhttp_error($lang->thread_closed_edit_message);
}
// Forum is not open, user doesn't have permission to edit, or author doesn't match this user - don't allow editing.
else if($forum['open'] == 0 || $forumpermissions['caneditposts'] == 0 || $mybb->user['uid'] != $post['uid'] || $mybb->user['uid'] == 0 || $mybb->user['suspendposting'] == 1)
{
xmlhttp_error($lang->no_permission_edit_post);
}
// If we're past the edit time limit - don't allow editing.
else if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($mybb->settings['edittimelimit']*60)))
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);
xmlhttp_error($lang->edit_time_limit);
}
}
und ersetze es durch
PHP-Code:
// If this user is not a moderator with "caneditposts" permissions.
if(!is_moderator($forum['fid'], "caneditposts"))
{
// Zeit in Minuten, in der Beiträge innerhalb der entspr. Usergruppe bearbeitet werden können
$gid_edittime = 30;
// entspr. Usergruppe
$gid_usergroup = 11;
// Thread is closed - no editing allowed.
if($thread['closed'] == 1)
{
xmlhttp_error($lang->thread_closed_edit_message);
}
// Forum is not open, user doesn't have permission to edit, or author doesn't match this user - don't allow editing.
else if($forum['open'] == 0 || $forumpermissions['caneditposts'] == 0 || $mybb->user['uid'] != $post['uid'] || $mybb->user['uid'] == 0 || $mybb->user['suspendposting'] == 1)
{
xmlhttp_error($lang->no_permission_edit_post);
}
// If we're past the edit time limit - don't allow editing.
else if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($mybb->settings['edittimelimit']*60)) && $mybb->user['usergroup'] != $gid_usergroup)
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $mybb->settings['edittimelimit']);
xmlhttp_error($lang->edit_time_limit);
}
else if($mybb->settings['edittimelimit'] != 0 && $post['dateline'] < (TIME_NOW-($gid_edittime*60)) && $mybb->user['usergroup'] == $gid_usergroup)
{
$lang->edit_time_limit = $lang->sprintf($lang->edit_time_limit, $gid_edittime);
xmlhttp_error($lang->edit_time_limit);
}
}
Achtung: Stefans
Änderungen in der inc/functions_post.php sind in meinem Code
nicht enthalten!
Nachtrag
Sollen meine o.a. Codeänderung für mehrere Usergruppen gelten, wäre folgende Anpassung notwendig:
Ersetze jeweils in der editpost.php und xmlhttp.php
PHP-Code:
// entspr. Usergruppe
$gid_usergroup = 11;
durch
PHP-Code:
// entspr. Usergruppen durch ein Komma trennen
$gid_usergroup = array(11,12);
und
PHP-Code:
$mybb->user['usergroup'] != $gid_usergroup
durch
PHP-Code:
!in_array($mybb->user['usergroup'], $gid_usergroup)
und
PHP-Code:
$mybb->user['usergroup'] == $gid_usergroup
durch
PHP-Code:
in_array($mybb->user['usergroup'], $gid_usergroup)