Please or Register to create posts and topics.

Enable "Sticky" for Subscribers

Hallo @asgaros,

Gibt es eine Möglichkeit, der Rolle SUBSCRIBER die Möglichkeit zu geben das dieser einen Post als “Sticky” stellen kann?

Die Rolle Moderator hat zu viele Rechte (Post löschen, schlissen…), ich will dem normalen Benutzer die Möglichkeit geben einen Post als Sticky zu markieren.

Beispiel im Bild.

Danke,

Uploaded files:
  • sticky-2.png

Hallo @neuer-user

Die Sticky-Funktion ist in meinen Augen eigentlich eine Funktion, die Moderatoren vorbehalten sein sollte, um wichtige Themen und Ankündigungen prominent an oberster Stelle hervorzuheben.

Wenn nun jeder Benutzer die Möglichkeit hat zu sagen, dass er sein Thema anpinnen kann, dann wird sich jeder Benutzer denken: “Mein Thema ist aber besonders wichtig, also pinne ich es nun oben an!”. Die Folge wäre, dass normale Themen irgendwann gar nicht mehr sichtbar wären da massig angepinnte Themen existieren. Damit wären Benutzer gezwungen, jede ihrer Themen anzupinnen um die Sichtbarkeit zu gewähren was am Ende dafür führt, dass alles wieder genauso angezeigt werden würde wie zuvor: Sortiert nach letztem Beitrag, nur mit dem Unterschied, dass es alles angepinnte Themen sind.

Von daher würde ich dieses Feature momentan ungern auch für normale Benutzer “öffnen”.

If you want to support the development of Asgaros Forum, you can leave a good review or donate. Thank you very much!

Hallo @asgaros,

ja, du hast vollkommen recht, aber ich würde nicht fragen wenn ich es nicht brauchen würde … in meinem Forum gibt es nur eine begrenzte Anzahl von User, die sich alle untereinander kennen, darum wird der Fall mit “jeder will seinen Post Sticky machen” nicht geben. Ich suche eh schon im Code wie ich das irgendwie selber machen kann.

Es würde mir sehr helfen, wenn man der Rolle Subscriber diesen Sticky geben könnte.

Mfg,

Hallo @neuer-user

Wenn du es manuell anpassen möchtest, müsstest du zwei Stellen in der Datein includes/forum.php ändern. Einmal die change_status Funktion:

function change_status($property) {
    if (AsgarosForumPermissions::isModerator('current')) {
        $new_status = '';

        if ($property == 'sticky') {
            $new_status .= 'sticky_';
            $new_status .= ($this->get_status('closed')) ? 'closed' : 'open';
        } else if ($property == 'normal') {
            $new_status .= 'normal_';
            $new_status .= ($this->get_status('closed')) ? 'closed' : 'open';
        } else if ($property == 'closed') {
            $new_status .= ($this->get_status('sticky')) ? 'sticky_' : 'normal_';
            $new_status .= 'closed';
        } else if ($property == 'open') {
            $new_status .= ($this->get_status('sticky')) ? 'sticky_' : 'normal_';
            $new_status .= 'open';
        }

        $this->db->update($this->tables->topics, array('status' => $new_status), array('id' => $this->current_topic), array('%s'), array('%d'));

        // Update cache
        $this->cache['get_status'][$this->current_topic] = $new_status;
    }
}

In:

function change_status($property) {
        $new_status = '';

        if ($property == 'sticky') {
            $new_status .= 'sticky_';
            $new_status .= ($this->get_status('closed')) ? 'closed' : 'open';
        } else if ($property == 'normal') {
            $new_status .= 'normal_';
            $new_status .= ($this->get_status('closed')) ? 'closed' : 'open';
        } else if ($property == 'closed') {
            $new_status .= ($this->get_status('sticky')) ? 'sticky_' : 'normal_';
            $new_status .= 'closed';
        } else if ($property == 'open') {
            $new_status .= ($this->get_status('sticky')) ? 'sticky_' : 'normal_';
            $new_status .= 'open';
        }

        $this->db->update($this->tables->topics, array('status' => $new_status), array('id' => $this->current_topic), array('%s'), array('%d'));

        // Update cache
        $this->cache['get_status'][$this->current_topic] = $new_status;
}

Und einmal in der showTopicMenu Funktion. Dort ist eine Zeile die so aussieht:

if (AsgarosForumPermissions::isModerator('current') && $showAllButtons) {

Diese Abändern in:

if ($showAllButtons) {

Mit der letzten Änderungen können Benutzer dann allerdings auch Schließen/Verschieben/Löschen. Wenn du das verhindern willst, müsstest du dann dementsprechend nur den Sticky-Part aus der Moderator-Prüfung rausnehmen.

Ich hoffe, das hilft. 🙂

If you want to support the development of Asgaros Forum, you can leave a good review or donate. Thank you very much!

Hallo @asgaros,

wow, das war super schnell.
Vielen vielen Dank, es funktioniert. 🙂

 

Freut mich, dass es klappt. Bitte vergiss nicht, dass du diese Änderungen nach einem Update (im Laufe der Nacht wird eine neue Version erscheinen) wieder manuell durchführen musst.

If you want to support the development of Asgaros Forum, you can leave a good review or donate. Thank you very much!