Hallo Community,
ich frage mich ob es in 4.4.5 möglich ist, Redakteure zu erstellen, die
- nur auf bestimmte Kategorien Zugriff haben (!ist möglich)
- und in diesen Kategorien nur die Artikel, die von Ihnen selbst
erstellt wurden zu editieren.
Bisher habe ich es nur so hinbekommen, dass der Benutzer entweder
alle Artikel in der Kategorie bearbeiten darf oder gar keine.
Was aber beides in meinem Fall ungünstig ist.
Gibt es so eine Einstellmöglichkeit oder hatte dieses Problem noch
niemand? Oder sollte ich die Tomaten von den Augen nehmen?
Rechte: Nur erstellte Artikel bearbeiten
anschauen:
-> http://www.contenido.org/forum/viewtopic.php?t=7747
getestet hab ich es nicht, könnte aber genau das sein was du suchst...
-> http://www.contenido.org/forum/viewtopic.php?t=7747
getestet hab ich es nicht, könnte aber genau das sein was du suchst...
*** make your own tools (wishlist :: thx)
Vielen Dank emergence, das war es aber nicht.
Die Änderung blendet für alle User alle Artikel aus, die er nicht
selber erstellt hat, was imo selten sinnvoll ist. Zumal es an der
Rechtestruktur nichts ändert und alles über die URL manipulierbar
bleibt... Kontrolle ist einfach besser.
Ich habe die Änderungen nun selbst gemacht, falls das jemand benötigt!
Wirkung:
Mit dieser Änderung können Benutzer ALLE Ihre eigenen Artikel editieren,
auch wenn sie sonst keine Editierrechte haben.
Somit ist es möglich externe Redakteure einzusetzen und ihnen keinen
Zugriff auf eigene Daten zu geben.
Artikel Online setzen, Startartikel Option, Löschen etc. bleiben hiervon
unberührt und werden weiterhin über die Rechteverwaltung gesteuert.
Änderung
Jeweils das, was hier mit BEGIN DELETE und END DELETE einkommentiert
ist suchen und durch das Gesamte ersetzen, falls nicht anders angegeben.
Schritte:
contenido/includes/functions.general.php
Diesen Block irgendwo in die Datei setzen (wenn es
geht nicht innerhalb einer anderen Funktion
)
contenido/includes/include.con_art_overview.php
contenido/includes/include.con_edit_form.php
contenido/classes/class.backend.php
FRONT_CONTENT.PHP der betroffenen Projekte:
Anmerkung: Bei Contenido 4.4.5 funktioniert das, in anderen Versionen ist
es nicht getestet.
Viel Spaß.
Die Änderung blendet für alle User alle Artikel aus, die er nicht
selber erstellt hat, was imo selten sinnvoll ist. Zumal es an der
Rechtestruktur nichts ändert und alles über die URL manipulierbar
bleibt... Kontrolle ist einfach besser.
Ich habe die Änderungen nun selbst gemacht, falls das jemand benötigt!
Wirkung:
Mit dieser Änderung können Benutzer ALLE Ihre eigenen Artikel editieren,
auch wenn sie sonst keine Editierrechte haben.
Somit ist es möglich externe Redakteure einzusetzen und ihnen keinen
Zugriff auf eigene Daten zu geben.
Artikel Online setzen, Startartikel Option, Löschen etc. bleiben hiervon
unberührt und werden weiterhin über die Rechteverwaltung gesteuert.
Änderung
Jeweils das, was hier mit BEGIN DELETE und END DELETE einkommentiert
ist suchen und durch das Gesamte ersetzen, falls nicht anders angegeben.
Schritte:
contenido/includes/functions.general.php
Diesen Block irgendwo in die Datei setzen (wenn es
geht nicht innerhalb einer anderen Funktion

Code: Alles auswählen
/** CR016 * BEGIN INSERT:
* Prüft ob aktueller User dem Artikel Author entspricht.
* @param md5-Hash User-ID
* @param int Artikel-ID
* @return true | false
*/
function UserIsAuthor($idUser, $idArt)
{
global $cfg;
$db = new DB_Contenido;
$qry = "SELECT u.user_id
FROM ".$cfg['tab']['phplib_auth_user_md5']." AS u,
".$cfg['tab']['art_lang']." AS a
WHERE a.author = u.username
AND a.idart = '".$idArt."'";
$db->query($qry);
$db->next_record();
if ($db->num_rows() == 1 and $db->f("user_id") == $idUser):
return true; // User is author!
endif;
return false;
}
/** CR016 * END INSERT; */
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($perm->have_perm_area_action( "con_editcontent", "con_editart" ) ||
$perm->have_perm_area_action_item( "con_editcontent", "con_editart" ,$idcat)) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
if ($perm->have_perm_area_action( "con_editcontent", "con_editart" ) or
$perm->have_perm_area_action_item( "con_editcontent", "con_editart" ,$idcat) or
UserIsAuthor($auth->auth["uid"], $idart)) {
/** CR016 * END INSERT; */
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($perm->have_perm_area_action("con_editart","con_edit") ||
$perm->have_perm_area_action_item("con_editart","con_edit",$lidcat)) {
** CR016 * END DELTE; */
/** CR016 * BEGIN INSERT: */
if ($perm->have_perm_area_action("con_editart","con_edit") or
$perm->have_perm_area_action_item("con_editart","con_edit",$lidcat) or
UserIsAuthor($auth->auth["uid"], $idart)) {
/** CR016 * END INSERT; */
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($perm->have_perm_area_action($area, "con_edit") ||
$perm->have_perm_area_action_item($area,"con_edit", $idcat)) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
if ($perm->have_perm_area_action($area, "con_edit") or
$perm->have_perm_area_action_item($area,"con_edit", $idcat) or
UserIsAuthor($auth->auth["uid"], $idart)) {
/** CR016 * END INSERT; */
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($perm->have_perm_area_action_item($area, $db->f("name"), $itemid) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
$pAccess = false; //flag
if ($area == 'con_editart' or $area == 'con_editcontent'):
global $idart, $auth;
if (UserIsAuthor($auth->auth["uid"], $idart)) $pAccess = true;
endif;
if ($perm->have_perm_area_action_item($area, $db->f("name"), $itemid) or $pAccess) {
/** CR016 * END INSERT; */
Code: Alles auswählen
/** CR016 * BEGIN BELETE: *
if ($perm->have_perm_area_action_item("con_editcontent","con_editart", $idcat) && $inUse == false) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
if (($perm->have_perm_area_action_item("con_editcontent","con_editart", $idcat)
or UserIsAuthor($auth->auth["uid"], $idart)) and $inUse == false) {
/** CR016 * END INSERT; */
Code: Alles auswählen
/** CR016 * BEGIN DELETE: *
if ($inUse == false && $view == "edit" && ($perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat)) {
** CR016 * END DELETE; */
/** CR016 * BEGIN INSERT: */
if ($inUse == false and
$view == "edit" and
($perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat)
or UserIsAuthor($auth->auth["uid"], $idart))
) {
/** CR016 * END INSERT; */
Anmerkung: Bei Contenido 4.4.5 funktioniert das, in anderen Versionen ist
es nicht getestet.
Viel Spaß.
Wer aufhört sich zu verbessern, hat aufgehört gut zu sein.