MyBB.de Forum
Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Archiv (https://www.mybb.de/forum/forum-57.html)
+--- Forum: MyBB 1.4.x (https://www.mybb.de/forum/forum-51.html)
+---- Forum: Allgemeiner Support (https://www.mybb.de/forum/forum-52.html)
+---- Thema: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? (/thread-11570.html)



Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Musika - 16.11.2008

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?


RE: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Murphy - 16.11.2008

Guten Morgen.

Sieh dazu im Admin-CP:

Konfiguration ~> Einstellungen ~> Beitragserstellung ~> Bei Bearbeitungszeit die gewünschte Zeit einstellen


RE: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Musika - 16.11.2008

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?


RE: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Murphy - 16.11.2008

Das dürfte mit einer kleinen If-Abfrage möglichsein. Wenn die eingestellte Editierzeit vorbei ist, wird der Button nicht mehr angezeigt.


RE: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - StefanT - 16.11.2008

Ersetze in der inc/functions_post.php:
PHP-Code:
        if((is_moderator($fid"caneditposts") || ($forumpermissions['caneditposts'] == && $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'] == && $mybb->user['uid'] == $post['uid'] && ($mybb->settings['edittimelimit'] == || $post['dateline'] >= ($time-($mybb->settings['edittimelimit']*60))))) && $mybb->user['uid'] != 0)
        {
            eval(
"\$post['button_edit'] = \"".$templates->get("postbit_edit")."\";");
        } 



RE: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Jockl - 02.04.2010

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. Smile

Ich nutze 1.4.11


RE: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Michael - 02.04.2010

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.


RE: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Jockl - 02.04.2010

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'] != && $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. Smile


RE: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Michael - 03.04.2010

(02.04.2010, 19:09)Jockl schrieb: mit entsprechenden Änderungen in der editpost.php und der xmlhttp.php habe ich es hin bekommen. Smile
Magst du diese noch hier posten? Möglicherweise ist das für den ein oder anderen auch interessant.


RE: Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag? - Jockl - 03.04.2010

(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. Wink


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'] != && $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'] != && $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'] != && $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'] == || $forumpermissions['caneditposts'] == || $mybb->user['uid'] != $post['uid'] || $mybb->user['uid'] == || $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'] != && $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'] == || $forumpermissions['caneditposts'] == || $mybb->user['uid'] != $post['uid'] || $mybb->user['uid'] == || $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'] != && $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'] != && $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