Gruppenrechte im Backend

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu » Fri Jan 22, 2016 6:08 pm

Sorry, da war auch noch ein kleiner Fehler drin:

Code: Select all

$comments = serendipity_db_query("SELECT c.*, e.title
                                    FROM {$serendipity['dbPrefix']}comments c
                               LEFT JOIN {$serendipity['dbPrefix']}entries e ON (e.id = c.entry_id)
                               LEFT JOIN {$serendipity['dbPrefix']}authors a ON (e.authorid = a.authorid)
                                   WHERE e.authorid = {$serendipity['authorid']}
                                ORDER BY c.id DESC LIMIT 5");
Damit solltes es dann gehen!
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu » Fri Jan 22, 2016 6:21 pm

:) Noch besser:

Code: Select all

$cjoin = ($serendipity['authorid'] > 1) ? "
        LEFT JOIN {$serendipity['dbPrefix']}authors a ON (e.authorid = a.authorid)
            WHERE e.authorid = {$serendipity['authorid']}
        " : '';
$cquery = "SELECT c.*, e.title
             FROM {$serendipity['dbPrefix']}comments c
        LEFT JOIN {$serendipity['dbPrefix']}entries e ON (e.id = c.entry_id)
        " . $cjoin ."
         ORDER BY c.id DESC LIMIT 5";
$comments = serendipity_db_query($cquery);
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian

User avatar
moonchild
Regular
Posts: 187
Joined: Mon Nov 21, 2005 11:23 pm
Location: Esslingen
Contact:

Re: Gruppenrechte im Backend

Post by moonchild » Fri Jan 22, 2016 6:23 pm

Klappt. Jetzt sind nur noch die Beiträge (in Vorbereitung) sichtbar. Siehe Screenshot.
Timbalu wrote:Sorry, da war auch noch ein kleiner Fehler drin:

Code: Select all

$comments = serendipity_db_query("SELECT c.*, e.title
                                    FROM {$serendipity['dbPrefix']}comments c
                               LEFT JOIN {$serendipity['dbPrefix']}entries e ON (e.id = c.entry_id)
                               LEFT JOIN {$serendipity['dbPrefix']}authors a ON (e.authorid = a.authorid)
                                   WHERE e.authorid = {$serendipity['authorid']}
                                ORDER BY c.id DESC LIMIT 5");
Damit solltes es dann gehen!
Attachments
Ashampoo_Snap_2016.01.22_18h22m25s_003_.jpg
Ashampoo_Snap_2016.01.22_18h22m25s_003_.jpg (53.19 KiB) Viewed 2556 times
Bonan tagon,
Thomas Trueten

User avatar
onli
Regular
Posts: 2355
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Gruppenrechte im Backend

Post by onli » Fri Jan 22, 2016 6:52 pm

Du siehst jetzt halt nur noch eigene Kommentare. Warte besser auf einen richtigen Patch, wenn du die Zeit hast das nicht mit der heißen Nadel stricken zu müssen.

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu » Fri Jan 22, 2016 7:37 pm

Ok nochmal den:

Code: Select all

$cjoin  = ($serendipity['authorid'] > 1) ? "
        LEFT JOIN {$serendipity['dbPrefix']}authors a ON (e.authorid = a.authorid)
            WHERE e.authorid = " . (int)$serendipity['authorid']
        : '';
$cquery = "SELECT c.*, e.title
             FROM {$serendipity['dbPrefix']}comments c
        LEFT JOIN {$serendipity['dbPrefix']}entries e ON (e.id = c.entry_id)
        " . $cjoin ."
         ORDER BY c.id DESC LIMIT 5";
$comments = serendipity_db_query($cquery);
und dann etwas weiter unten bei https://github.com/s9y/Serendipity/blob ... nc.php#L77

statt:

Code: Select all

$entries = serendipity_fetchEntries(
                     false,
                     false,
                     5,
                     true,
                     false,
                     'timestamp DESC',
                     'e.timestamp >= ' . serendipity_serverOffsetHour()
                   );

$entriesAmount = count($entries);
if ($entriesAmount < 5) {
    // there is still space for drafts
    $drafts = serendipity_fetchEntries(
                     false,
                     false,
                     5- $entriesAmount,
                     true,
                     false,
                     'timestamp DESC',
                     "isdraft = 'true' AND e.timestamp <= " . serendipity_serverOffsetHour()
                   );
nun

Code: Select all

$efilter = ($serendipity['authorid'] > 1) ? ' AND e.authorid = ' . (int)$serendipity['authorid'] : '';
$entries = serendipity_fetchEntries(
                     false,
                     false,
                     5,
                     true,
                     false,
                     'timestamp DESC',
                     'e.timestamp >= ' . serendipity_serverOffsetHour() . $efilter
                   );

$entriesAmount = count($entries);
if ($entriesAmount < 5) {
    // there is still space for drafts
    $drafts = serendipity_fetchEntries(
                     false,
                     false,
                     5- $entriesAmount,
                     true,
                     false,
                     'timestamp DESC',
                     "isdraft = 'true' AND e.timestamp <= " . serendipity_serverOffsetHour() . $efilter
                   );
Natürlich kann man hier den Einwand machen, dass nun solche Redakteure eben nur noch Sachen zu Gesicht bekommen, die mit ihnen direkt zu tun haben. Aber das war dein Wunsch, oder?
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian

User avatar
onli
Regular
Posts: 2355
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Gruppenrechte im Backend

Post by onli » Fri Jan 22, 2016 7:46 pm

Der Ansatz wird nicht helfen.
Wir müssen die Userrechte beim Erstellen des Dashboards beachten. Das heißt: Keine Buttons anzeigen, die der Nutzer nicht nutzen kann. Wir müssen prüfen, wie das die anderen Seiten machen – aber wenn Drafts für Nutzer nicht verfügbar sind, dann sollten sie auch nicht im Dashboard stehen.

Generell kann man Nutzern mit eingeschränkten Editierrechten auch weniger Einträge und Kommentare anzeigen, aber dafür müssen wir dort wirklich die Rechte abfragen. Der Join macht das nicht.

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu » Fri Jan 22, 2016 8:24 pm

Stimmt. Die Buttons tun nicht als nomaler Redakteur, auch wenn nur Einträge für diesen angezeigt werden. Da werden wir mindestens noch einmal nachbessern müssen.
Insgesamt kann man eigentlich auch auf das Dashboard verzichten, wenn man nicht mindestens mit Gruppenrechten ausgestattet ist.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu » Sat Jan 23, 2016 11:18 am

Das löst zwar noch nicht das Problem mit den editier-Buttons für einfache Redakteure, ist aber noch einmal genauer als das vorige:

Ersetze die zwei neuen Stellen

Code: Select all

($serendipity['authorid'] > 1)
mit

Code: Select all

($serendipity['serendipityUserlevel'] == 0)
Was das volle Dashboard für Chefredakteuere und Admins wieder erlaubt und nur für den einfachen Redakteur einschränkt.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian

User avatar
moonchild
Regular
Posts: 187
Joined: Mon Nov 21, 2005 11:23 pm
Location: Esslingen
Contact:

Re: Gruppenrechte im Backend

Post by moonchild » Sat Jan 23, 2016 4:45 pm

Hallo,
ok ist eingebaut und funktioniert wie gewünscht. Ich poste unten mal den kompletten Code, falls jemand das auch noch braucht.
Timbalu wrote:Das löst zwar noch nicht das Problem mit den editier-Buttons für einfache Redakteure, ist aber noch einmal genauer als das vorige:

Ersetze die zwei neuen Stellen

Code: Select all

($serendipity['authorid'] > 1)
mit

Code: Select all

($serendipity['serendipityUserlevel'] == 0)
Was das volle Dashboard für Chefredakteuere und Admins wieder erlaubt und nur für den einfachen Redakteur einschränkt.
/include/admin/overview.inc.php

Code: Select all

<?php

if (IN_serendipity !== true) {
    die ("Don't hack!");
}

global $serendipity;
$data = array();

switch($serendipity['POST']['adminAction']) {
    case 'publish':
        if (!serendipity_checkFormToken()) {
            break;
        }
        $success = serendipity_updertEntry(array(
            'id' => serendipity_specialchars($serendipity['POST']['id']),
            'timestamp' => time(),
            'isdraft' => 0
        ));
        if (is_numeric($success)) {
            $data['published'] = $success;
        } else {
            $data['error_publish'] = $success;
        }
        break;
    case 'updateCheckDisable':
        if ( !serendipity_checkFormToken() || !serendipity_checkPermission('blogConfiguration') ) {
            break;
        }
        serendipity_set_config_var('updateCheck', false);
        break;
}


$user = serendipity_fetchAuthor($serendipity['authorid']);
// chrome-compatible, from Oliver Gassner, adapted from TextPattern. Hi guys, keep it up. :-)
$bookmarklet = "javascript:var%20d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='" . $serendipity['baseURL'] . "',l=d.location,e=encodeURIComponent,p='serendipity_admin.php?serendipity[adminModule]=entries&serendipity[adminAction]=new&serendipity[title]='+e(d.title)+'&serendipity[body]='+e(s)+'&serendipity[url]='+location.href,u=f+p;a=function(){%20%20if(!w.open(u,'t','toolbar=0,resizable=1,scrollbars=1,status=1,width=800,height=800'))%20%20%20%20l.href=u;};if(/Firefox/.test(navigator.userAgent))%20%20setTimeout(a,0);else%20%20a();void(0)";


$data['bookmarklet'] = $bookmarklet;
$data['username'] = $user[0]['realname'];
$data['js_failure_file'] = serendipity_getTemplateFile('admin/serendipity_editor.js');

$output = array();
serendipity_plugin_api::hook_event('backend_frontpage_display', $output);
$data['backend_frontpage_display'] = $output['more'];

$data['usedVersion']  = $serendipity['version'];
$data['updateCheck']  = $serendipity['updateCheck'];
$data['curVersion']   = serendipity_getCurrentVersion();
$data['update']       = version_compare($data['usedVersion'], $data['curVersion'], '<');
serendipity_plugin_api::hook_event('plugin_dashboard_updater', $output, $data['curVersion']);
$data['updateButton'] = $output;

    $comments = serendipity_db_query("SELECT c.*, e.title
                                        FROM {$serendipity['dbPrefix']}comments c
                                   LEFT JOIN {$serendipity['dbPrefix']}entries e ON (e.id = c.entry_id)
                                   LEFT JOIN {$serendipity['dbPrefix']}authors a ON (e.authorid = a.authorid)
                                       WHERE e.authorid = {$serendipity['authorid']}
                                    ORDER BY c.id DESC LIMIT 5");
	  
if (is_array($comments) && count($comments) > 0) {
    foreach ($comments as &$comment) {
        $comment['entrylink'] = serendipity_archiveURL($comment['entry_id'], 'comments', 'serendipityHTTPPath', true) . '#c' . $comment['id'];

        $comment['fullBody']  = $comment['body'];
        $comment['summary']   = serendipity_mb('substr', $comment['body'], 0, 100);

        if (strlen($comment['fullBody']) > strlen($comment['summary']) ) {
            $comment['excerpt'] = true;

            // When summary is not the full body, strip HTML tags from summary, as it might break and leave unclosed HTML.
            $comment['fullBody'] = nl2br(serendipity_specialchars($comment['fullBody']));
            $comment['summary']  = nl2br(strip_tags($comment['summary']));
        }
    }
}

$data['comments'] = $comments;

    $efilter = ($serendipity['serendipityUserlevel'] == 0) ? ' AND e.authorid = ' . (int)$serendipity['authorid'] : '';
    $entries = serendipity_fetchEntries(
                         false,
                         false,
                         5,
                         true,
                         false,
                         'timestamp DESC',
                         'e.timestamp >= ' . serendipity_serverOffsetHour() . $efilter
                       );

    $entriesAmount = count($entries);
    if ($entriesAmount < 5) {
        // there is still space for drafts
        $drafts = serendipity_fetchEntries(
                         false,
                         false,
                         5- $entriesAmount,
                         true,
                         false,
                         'timestamp DESC',
                         "isdraft = 'true' AND e.timestamp <= " . serendipity_serverOffsetHour() . $efilter
                       );

    if (is_array($entries) && is_array($drafts)) {
        $entries = array_merge($entries, $drafts);
    } else {
        if (is_array($drafts)) {
            // $entries is not an array, thus empty
            $entries = $drafts;
        }
    }
}

$data['entries'] = $entries;

$data['urltoken'] = serendipity_setFormToken('url');
$data['token'] = serendipity_setFormToken();

$data['no_create'] = $serendipity['no_create'];

echo serendipity_smarty_show('admin/overview.inc.tpl', $data);

/* vim: set sts=4 ts=4 expandtab : */
Bonan tagon,
Thomas Trueten

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu » Sat Jan 23, 2016 6:23 pm

Zumindest für die comments Geschichte ist dein full paste aber nicht wirklich aktuell :!:
Es ist dringend zu raten wenigstens den letzten Stand zu nehmen! [Und gilt auch nur für S9y 2.0.x!)
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu » Sat Jan 23, 2016 8:10 pm

Es handelt sich ja hier um den Fall, dass man einen multi-user Blog mit verschiedenen Redakteuren (mit eingeschränkten Rechten) hat. [So ganz nebenbei ist auch noch an anderen Stellen als im Dashboard etwas Bedarf an diesbezüglichem finetuning gegeben.] Ich hätte zwar schon eine Idee wie nun die editier-Buttons für diesen Fall angepasst werden könnten - allerdings hebelt das die generelle Permission Lage aus, wenn auch nur für den Fall der eigenen Einträge, bzw die eigenen Einträge betreffenden Kommentare.

Es wäre also zu klären, ob man in Serendipity eher die jetzige Robustheit der Permission-Privileges (die praktisch nur zwischen ja und nein von Benutzerrechten mittels Gruppenzugehörigkeiten in verschiedenen Tätigkeitsbereichen unterscheidet) beibehalten (will), und dann würde man für einfache Redakteure gar keine EditierButtons erlauben, oder eben jenen auch ein klein wenig an eigener Administration erlauben will.

Bis dahin würde ich empfehlen für Redakteure Comments und Entries im Dashboard ganz zu leeren, damit nicht so viel Verwirrung über nicht funktionierende EditierButtons entsteht, die im übrigen beweisen, dass das Rechtesystem per se in Ordnung ist.

Das könnte als workaround relativ einfach gemacht werden, in dem man ein

Code: Select all

if ($serendipity['serendipityUserlevel'] != 0) {
     $comments = .... Zeilen 55-57
} else $comments = array();
und

Code: Select all

if ($serendipity['serendipityUserlevel'] != 0) {
     $entries =  .... Zeilen 77 - 107
} else $entries = array();
um die vorherigen array "queries" herum zieht. Damit sind comments und entries im Dashboard für den einfachen Redakteur dann einfach leer.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian

User avatar
moonchild
Regular
Posts: 187
Joined: Mon Nov 21, 2005 11:23 pm
Location: Esslingen
Contact:

Re: Gruppenrechte im Backend

Post by moonchild » Sun Jan 24, 2016 1:24 pm

Hallo,
ich hatte eigentlich gedacht, das korrekt eingebaut zu haben 8-)

Irgendwie ist mir das zu heiß, das ist kein experimentelles System, deshalb würde ich lieber warten, bis das Problem stabil und updatesicher gelöst ist, zumal ich jetzt mit den bisherigen Änderungen bei den betreffenden Usern auch noch den Javascript Fehler bekomme, obwohl die Url korrekt eingetragen ist...
Attachments
Ashampoo_Snap_2016.01.24_13h22m59s_002_.jpg
Ashampoo_Snap_2016.01.24_13h22m59s_002_.jpg (70.8 KiB) Viewed 2531 times
Bonan tagon,
Thomas Trueten

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu » Sun Jan 24, 2016 2:42 pm

Was für eine Url?

Du kommst diese schöne rote Mitteilung mit Link, weil das das "gestreamte" serendipity_editor.js file ist. Da irgendetwas im System einen Fehler meldet, oder eine unerwartete Ausgabe macht, schleicht sich das in dieses "js" file, welches im übrigen nichts mit irgendwelchen Editoren zu hat, und dasselbe kann nicht mehr ordentlich arbeiten. Damit das der User überhaupt bemerkt, haben wir diesen "dezenten" Hinweis im Backend Root gegeben, mit der Aufforderung, dort per "Click auf den Link" einmal näher hineinzusehen. Dann kann man diese(n) Fehler oder sonstige Ausgabe (meist am Anfang der Datei) hier zur weiteren Analyse übermitteln.

So heiß gestrickt ist das nicht. Denn wenn du alles wie vorgeschlagen eingetragen hast, kann eigentlich nichts (mehr) passieren.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian

User avatar
moonchild
Regular
Posts: 187
Joined: Mon Nov 21, 2005 11:23 pm
Location: Esslingen
Contact:

Re: Gruppenrechte im Backend

Post by moonchild » Sun Jan 24, 2016 3:10 pm

Timbalu wrote:Was für eine Url?
https://www.trueten.de/index.php?/plugi ... _editor.js

Wie muss ich die Meldung verstehen? :? Tritt aber nur bei Benutzern der besagten Gruppe auf...
Bonan tagon,
Thomas Trueten

User avatar
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu » Sun Jan 24, 2016 3:33 pm

Da ist kein Fehler und keine Ausgabe vor

Code: Select all

/* Dynamically fetched templates/2k11/admin/serendipity_editor.js.tpl on 2016-01-24 15:25, called from: include/plugin_api.inc.php:external_plugin */
Damit sollte eigentlich auch nicht diese rote Hinweis-Meldung erscheinen.

Schau mal in deine Browser Developer Tools, meist unter "F12" erreichbar. Reloade die Seite, die nicht arbeitet, und schau nach, was unter "Konsole" als eventuelle(r) JS Fehler auftritt. Dann hier posten.
moonchild wrote:Tritt aber nur bei Benutzern der besagten Gruppe auf...
Dann kann das bei mir ja auch nicht klappen. :)
Wenn du als Benutzer dieser Gruppe diesen Hinweis bekommst und den Link anklickst, müsstest du also irgendetwas sehen... was du hier mitteilen kannst.
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian

Post Reply