Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Beiträge editieren nur für bestimmte Zeit bzw. nur letzten Eintrag?
#1
Question 
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?
#2
Guten Morgen.

Sieh dazu im Admin-CP:

Konfiguration ~> Einstellungen ~> Beitragserstellung ~> Bei Bearbeitungszeit die gewünschte Zeit einstellen
Bitte die Suche u. die Doku nutzen.
______________________________

mfg Murphy
#3
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?
#4
Das dürfte mit einer kleinen If-Abfrage möglichsein. Wenn die eingestellte Editierzeit vorbei ist, wird der Button nicht mehr angezeigt.
Bitte die Suche u. die Doku nutzen.
______________________________

mfg Murphy
#5
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")."\";");
        } 
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
#6
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
viele Grüße
Jockl
übersetzte und eigene Plugins
#7
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.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#8
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
viele Grüße
Jockl
übersetzte und eigene Plugins
#9
(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.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#10
(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
viele Grüße
Jockl
übersetzte und eigene Plugins


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Heutige Beiträge für bestimmte Foren anzeigen Axxis 5 2.513 02.05.2010, 19:12
Letzter Beitrag: Axxis
  HTML in Signaturen nur für bestimmte Gruppen TO1 2 1.647 02.04.2010, 20:52
Letzter Beitrag: Michael Malin
  Beiträge nicht mehr bearbeiten nach gewisse Zeit RII 1 1.460 17.01.2010, 14:40
Letzter Beitrag: Jockl
  Profilfeld links neben dem Eintrag? Miniko 8 3.415 29.08.2009, 08:18
Letzter Beitrag: ows
Game Neue Beiträge seit dem letzten Besuch! sMoKiE 7 3.836 17.08.2009, 14:25
Letzter Beitrag: sMoKiE