Gruppenrechte im Backend

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

Re: Gruppenrechte im Backend

Post by Timbalu »

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
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu »

:) 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
moonchild
Regular
Posts: 201
Joined: Mon Nov 21, 2005 11:23 pm
Location: Esslingen
Contact:

Re: Gruppenrechte im Backend

Post by moonchild »

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 4981 times
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Gruppenrechte im Backend

Post by onli »

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.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu »

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
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Gruppenrechte im Backend

Post by onli »

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.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu »

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
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu »

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
moonchild
Regular
Posts: 201
Joined: Mon Nov 21, 2005 11:23 pm
Location: Esslingen
Contact:

Re: Gruppenrechte im Backend

Post by moonchild »

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 : */
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu »

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
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu »

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
moonchild
Regular
Posts: 201
Joined: Mon Nov 21, 2005 11:23 pm
Location: Esslingen
Contact:

Re: Gruppenrechte im Backend

Post by moonchild »

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 4956 times
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu »

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
moonchild
Regular
Posts: 201
Joined: Mon Nov 21, 2005 11:23 pm
Location: Esslingen
Contact:

Re: Gruppenrechte im Backend

Post by moonchild »

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...
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Gruppenrechte im Backend

Post by Timbalu »

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