• Willkommen, Gast!
  • Freitag, 22. November 2019, 22:40:47
Position: Home » Boardsolution » Boardsolution v1.4x » Fragen zu Änderungen » Zeitbegrenzung beim Beitrageditieren?
Antworten
Thema: Zeitbegrenzung beim Beitrageditieren? [Seite 1 ]

Kein neuer Beitrag schoeppsche , 15.02.2012, 09:14
Beitrag #1   

IP: n/a
Rang: * * * * * * *
Registrierung: 29.07.2007, 00:00
 

Forum-Gott mit 207 Punkte, 123 Beiträge
Hallo,

Ist es möglich, ohne allzu großen Aufwand, die Editierung von Beiträgen mit einer zeitlichen
Begrenzung auszustatten?

Gruss
schoeppsche

 
Kein neuer Beitrag Nils , 15.02.2012, 17:34
Beitrag #2   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo,

du meinst ob man das Editieren nach X sekunden/minuten/... nach dem Posten des Beitrags verbieten
kann?

Wenn ja, das ginge folgendermaßen:
Änder Zeile 541 der front/src/post/data.php:
PHP:
1
($cache['is_admin'] || $cache['topic']['thread_closed'] == 0)))

in:
PHP:
1
2
($cache['is_admin'] || $cache['topic']['thread_closed'] == 0) &&
          $this->_data['post_time'] >= time() - 30))

Dann in bau unter Zeile 129 der front/module/edit_post/module.php folgendes ein:
PHP:
1
2
3
4
5
    if($data['post_time'] < time() - 30)
    {
      $this->report_error();
      return;
    }

Und noch in der front/module/edit_post/action_default.php unter Zeile 68:
PHP:
1
2
    if($post_data['post_time'] < time() - 30)
      return 'Time for editing is over';

Die 30 sind jeweils die Anzahl der Sekunden, die Editieren erlaubt ist. Das müsstest du also für
dich anpassen.

mfg Nils

 
Kein neuer Beitrag schoeppsche , 16.02.2012, 09:20
Beitrag #3   

IP: n/a
Rang: * * * * * * *
Registrierung: 29.07.2007, 00:00
 

Forum-Gott mit 207 Punkte, 123 Beiträge
Danke, das werde ich mal ausprobieren.

Gruss
schoeppsche

 
Kein neuer Beitrag schoeppsche , 20.02.2012, 13:14
Beitrag #4   

IP: n/a
Rang: * * * * * * *
Registrierung: 29.07.2007, 00:00
 

Forum-Gott mit 207 Punkte, 123 Beiträge
scheint zu funktionieren.....
Allerdings kann dann auch ein Admin oder ein Moderator nichts mehr editieren. Diese Möglichkeit
sollte aber noch vorhanden bleiben.
Zudem wäre es auch noch schön wenn dann bei der "Fehlermeldung" eine Info wie "Die Editzeit ist
abgelaufen" ausgegeben wird.

Gruss
schoeppsche
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 20.02.2012, 13:19 von schoeppsche.

 
Kein neuer Beitrag schoeppsche , 09.05.2012, 09:57
Beitrag #5   

IP: n/a
Rang: * * * * * * *
Registrierung: 29.07.2007, 00:00
 

Forum-Gott mit 207 Punkte, 123 Beiträge
wollte mal nachfrage ob man das irgendwie realisieren kann.

Gruss
schoeppsche

 
Kein neuer Beitrag Nils , 10.05.2012, 08:06
Beitrag #6   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo,

ja, klar. Sorry, ich muss das Thema irgendwie vergessen haben :/

Dann müssten die drei genannten Änderungen oben folgendermaßen aussehen:
PHP:
1
2
($cache['is_admin'] || $cache['topic']['thread_closed'] == 0) &&
      ($cache['is_admin'] || $auth->is_moderator_in_current_forum() || $this->_data['post_time'] >= time() - 30)))

PHP:
1
2
3
4
5
    if(!$user->is_admin() && !$auth->is_moderator_in_current_forum() && $data['post_time'] < time() - 30)
    {
      $this->report_error(FWS_Document_Messages::ERROR,'Time for editing is over');
      return;
    }

PHP:
1
2
    if(!$user->is_admin() && !$auth->is_moderator_in_current_forum() && $post_data['post_time'] < time() - 30)
      return 'Time for editing is over';


Wobei du den Text 'Time for editing is over' natürlich auch sprachabhängig machen könntest via
PHP:
1
$locale->lang('edit_time_over')
o.ä..

mfg Nils
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 10.05.2012, 08:07 von Nils.

 
Kein neuer Beitrag Dieter , 07.08.2016, 18:55
Beitrag #7   

IP: n/a
Rang: * * * * * * *
Registrierung: 15.03.2006, 11:22
 

Forum-Gott mit 147 Punkte, 107 Beiträge
Hallo Nils,

ich finde das super und habe es auch eingebaut. Leider funktioniert es bei meiner Version 1.45
irgendwie nicht. Was habe ich falsch gemacht. Es ist kein Unterschied zu vorher zu erkennen. Ich
kann zeitlich unbegrenzt als normaler User Beiträge editieren. Die Zeit hatte ich auf 60 Sekunden
abgeändert.

Hier meine Code´s:

Data.php

PHP:
1
2
3
4
5
6
7
    ($cache['is_admin'] || $cache['topic']['thread_closed'] == 0) &&
      ($cache['is_admin'] || $auth->is_moderator_in_current_forum() || $this->_data['post_time'] >= time() - 60)))
        {
          $murl = $cache['delete_post_url'];
          $murl->set(BS_URL_ID,$this->_data['bid']);
          $btns .= '<a title="'.$locale->lang('deletepost').'" class="bs_button" href="';
          $btns .= $murl->to_url().'">'.$locale->lang('delete').'</a>';


Module.php

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
// no access because a user with higher status locked the post?
    if(BS_TopicUtils::is_locked($data['locked'],BS_LOCK_TOPIC_POSTS,$data['edit_lock']))
    {
      $this->report_error(
          if(!$user->is_admin() && !$auth->is_moderator_in_current_forum() && $data['post_time'] < time() - 60)
    {
      $this->report_error(FWS_Document_Messages::ERROR,'Time for editing is over');
      return;
    }
        FWS_Document_Messages::ERROR,$locale->lang('no_permission_to_edit_post')
      );
      return;
    }



action_default.php

PHP:
1
2
3
4
5
// is the user allowed to edit this post?
    if(!$auth->has_current_forum_perm(BS_MODE_EDIT_POST,$post_data['post_user']))
    if(!$user->is_admin() && !$auth->is_moderator_in_current_forum() && $post_data['post_time'] < time() - 60)
      return 'Time for editing is over';
      //return 'No permission to edit this post';


Schon einmal danke für die Hilfe.


Viele Grüße

Dieter

 
Kein neuer Beitrag Nils , 12.08.2016, 11:59
Beitrag #8   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo,

du hast die Änderungen an den falschen Stellen eingebaut. Die Zeilennummern haben sich auch leicht
geändert. Ich wunder mich außerdem, dass das überhaupt noch funktioniert, weil deine Änderungen
teilweise syntaktisch falsch sind :)

Das müsste wie folgt aussehen:

In der front/src/post/data.php bei Zeile 550:
PHP:
1
2
3
4
5
6
7
8
9
10
11
      // edit post
      if($cfg['display_denied_options'] ||
         ($auth->has_current_forum_perm(BS_MODE_EDIT_POST,$this->_data['post_user']) &&
          $this->_data['post_time'] >= time() - 60 &&
          ($cache['is_admin'] || $cache['topic']['thread_closed'] == 0)))
      {
        $murl = $cache['edit_post_url'];
        $murl->set(BS_URL_ID,$this->_data['bid']);
        $btns .= '<a class="bs_button" title="'.$locale->lang('editpost');
        $btns .= '" href="'.$murl->to_url().'">'.$locale->lang('edit').'</a>';
      }


In der front/module/edit_post/module.php bei Zeile 120:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
    // is the topic closed?
    if($data['thread_closed'] == 1 && !$user->is_admin())
    {
      $this->report_error(FWS_Document_Messages::ERROR,$locale->lang('topic_is_closed'));
      return;
    }

    if($data['post_time'] < time() - 60)
    {
      $this->report_error();
      return;
    }


Und in der front/module/edit_post/action_default.php bei Zeile 70:
PHP:
1
2
3
4
5
6
    // topic closed?
    if($post_data['thread_closed'] == 1 && !$user->is_admin())
      return 'You are no admin and the topic is closed';

    if($post_data['post_time'] < time() - 60)
      return 'Time for editing is over';


mfg Nils

 
Kein neuer Beitrag Dieter , 13.08.2016, 15:53
Beitrag #9   

IP: n/a
Rang: * * * * * * *
Registrierung: 15.03.2006, 11:22
 

Forum-Gott mit 147 Punkte, 107 Beiträge
Hallo Nils,

ich habe es eingebaut. Ich kann als normaler User jetzt meinen Beitrag 60s lang editieren, danach
geht es nicht mehr. Ich kommt dann eine Fehlermeldung ungültige Seite.

Wie bekomme ich es hin dass da steht: "Zeit zum editieren ist verstrichen.

Soweit so gut.

Jetzt logge ich mich als Admin ein und will den Beitrag editieren. Auch hier bekomme ich die
Fehlermeldung "ungültige Seite".

Hier stand doch irgendwo, dass man es als Admin trotzdem alles editieren kann.


Viele Grüße

Dieter

 
Kein neuer Beitrag Nils , 14.08.2016, 07:54
Beitrag #10   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo Dieter,

oh, richtig. Ich hätte das doch mal testen sollen :)

Hier nochmal die Abschnitte. Damit können Admins und Mods immer editieren, aber User nur 60 Sekunden:

In der front/src/post/data.php bei Zeile 550:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
      // edit post
      if($cfg['display_denied_options'] ||
         ($auth->has_current_forum_perm(BS_MODE_EDIT_POST,$this->_data['post_user']) &&
            ($cache['is_admin'] || $auth->is_moderator_in_current_forum() ||
            $this->_data['post_time'] >= time() - 60) &&
          ($cache['is_admin'] || $cache['topic']['thread_closed'] == 0)))
      {
        $murl = $cache['edit_post_url'];
        $murl->set(BS_URL_ID,$this->_data['bid']);
        $btns .= '<a class="bs_button" title="'.$locale->lang('editpost');
        $btns .= '" href="'.$murl->to_url().'">'.$locale->lang('edit').'</a>';
      }


In der front/module/edit_post/module.php bei Zeile 120:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
    // is the topic closed?
    if($data['thread_closed'] == 1 && !$user->is_admin())
    {
      $this->report_error(FWS_Document_Messages::ERROR,$locale->lang('topic_is_closed'));
      return;
    }

    if(!$user->is_admin() && !$auth->is_moderator_in_current_forum() &&
      $data['post_time'] < time() - 60)
    {
      $this->report_error(FWS_Document_Messages::ERROR,'Zeit zum Editieren ist verstrichen');
      return;
    }


Und in der front/module/edit_post/action_default.php bei Zeile 70:
PHP:
1
2
3
4
5
6
7
    // topic closed?
    if($post_data['thread_closed'] == 1 && !$user->is_admin())
      return 'You are no admin and the topic is closed';

    if(!$user->is_admin() && !$auth->is_moderator_in_current_forum() &&
    $post_data['post_time'] < time() - 60)
      return 'Time for editing is over';


mfg Nils

 
Kein neuer Beitrag Dieter , 14.08.2016, 19:56
Beitrag #11   

IP: n/a
Rang: * * * * * * *
Registrierung: 15.03.2006, 11:22
 

Forum-Gott mit 147 Punkte, 107 Beiträge
Hallo Nils,

danke Dir. Werde es morgen abändern.

Mal eine Frage wegen einer anderen Variante des Themas editieren, die noch mehr dem entspricht was
ich mir vorstellen könnte.

Es gibt immer wieder User die editieren etwas nach lägerer Zeit und keiner weiß dann was sie
geändert haben. Natürlich gibt es dann auch schon weitere Antworten, die sich vielleicht auf etwas
beziehen, was der Nutzer abgeändert hat.

Ich kenne ein Forum, da ist es nur möglich seine Beiträge zu editieren solange niemand danach etwas
geantwortet hat. Ist das auch möglich?


Viele Grüße

Dieter

 
Kein neuer Beitrag Nils , 15.08.2016, 07:27
Beitrag #12   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo Dieter,

ja, das ginge auch. Dann müsste das so aussehen:

In der front/src/post/data.php bei Zeile 550:
PHP:
1
2
3
4
5
6
7
8
9
10
11
      // edit post
      if($cfg['display_denied_options'] ||
         ($auth->has_current_forum_perm(BS_MODE_EDIT_POST,$this->_data['post_user']) &&
          ($cache['is_admin'] || $auth->is_moderator_in_current_forum() || $this->is_last_post()) &&
          ($cache['is_admin'] || $cache['topic']['thread_closed'] == 0)))
      {
        $murl = $cache['edit_post_url'];
        $murl->set(BS_URL_ID,$this->_data['bid']);
        $btns .= '<a class="bs_button" title="'.$locale->lang('editpost');
        $btns .= '" href="'.$murl->to_url().'">'.$locale->lang('edit').'</a>';
      }


In der front/module/edit_post/module.php bei Zeile 140:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        // topic-data available?
    $topic_data = BS_Front_TopicFactory::get_current_topic();
    if($topic_data === null)
    {
      $this->report_error();
      return;
    }

    if(!$user->is_admin() && !$auth->is_moderator_in_current_forum() &&
      $topic_data['lastpost_id'] != $data['id'])
    {
      $this->report_error(FWS_Document_Messages::ERROR,'Nur der letzte Beitrag kann editiert werden');
      return;
    }


Und in der front/module/edit_post/action_default.php bei Zeile 70:
PHP:
1
2
3
4
5
6
7
    // topic closed?
    if($post_data['thread_closed'] == 1 && !$user->is_admin())
      return 'You are no admin and the topic is closed';

    $tdata = BS_DAO::get_topics()->get_by_id($tid);
    if(!$user->is_admin() && !$auth->is_moderator_in_current_forum() && $tdata['lastpost_id'] != $id)
      return 'You can only edit the last post';


mfg Nils

Abonnieren Druckansicht
Antworten

n/a n/a 1     (Anzeige: 1 – 12; insgesamt: 12) n/a n/a
User in diesem Thema: 0 Registrierte, 0 Versteckte, 1 Gast, 0 Bots
Keine
Legende: Administratoren, User, Moderatoren
Themenaktionen:
Beiträge verschieben

Toggle Ähnliche Themen zu „Zeitbegrenzung beim Beitrageditieren?“
  Antworten Aufrufe Themeneröffnung Letzter Beitrag
Es wurden keine Themen gefunden.
  • 0.125134 Sek., 10 DB-Zugriffe, 1.704 MiB
  • Powered by Boardsolution v1.46