getrennter zugriff auf strukturbäume
getrennter zugriff auf strukturbäume
hier die fortsetzung von dem alten thread unter http://p10089516.pureserver.de/phorum-3 ... 004&t=1004
> verschiedene redakteure sollen die möglichkeit haben nur ihren strukturbaum zu bearbeiten (und sehen nur ihren eigenen upload-bereich).
@Detlev: du hast ja schon begonnen daran zu arbeiten.
1) con_clients: um spalte "redakeur" erweitert
2) redakteur aus anmeldeformular holen, in session-Variable speichern
3) ausgabeabfrage für die select-Felder umgewandelt:
if($redakteur=="admin") $redakteur ="%";
$sql = "select * from $cfgTab_clients where redakteur like '$redakteur'";
So sieht der admin alle clients, die Redakteure nur ihre clients.
klappt das so? wenn ja, ist es möglich, einpaar kommentare zu diesen punkten hinzuzufügen (benutzte files angeben).
bei punkt 2) weiß ich zb gar nicht wie ich das umsetze.
damit auch nicht-contenido-experten nicht ganz im dunkeln stehen
thanx!
> verschiedene redakteure sollen die möglichkeit haben nur ihren strukturbaum zu bearbeiten (und sehen nur ihren eigenen upload-bereich).
@Detlev: du hast ja schon begonnen daran zu arbeiten.
1) con_clients: um spalte "redakeur" erweitert
2) redakteur aus anmeldeformular holen, in session-Variable speichern
3) ausgabeabfrage für die select-Felder umgewandelt:
if($redakteur=="admin") $redakteur ="%";
$sql = "select * from $cfgTab_clients where redakteur like '$redakteur'";
So sieht der admin alle clients, die Redakteure nur ihre clients.
klappt das so? wenn ja, ist es möglich, einpaar kommentare zu diesen punkten hinzuzufügen (benutzte files angeben).
bei punkt 2) weiß ich zb gar nicht wie ich das umsetze.
damit auch nicht-contenido-experten nicht ganz im dunkeln stehen
thanx!
Mein HowTo
Ummit mehreren Redakteuren zu arbeiten,
die nur ihre eigenen Clients sehen,
habe ich an die Tabelle con_clients
eine Spalte mit den 'redakteur' angebängt.
Beim einloggen in Contenido wird jetzt der Username als
Variable redakteur als Session-Variable gespeichert und
die SQL Abfrage der Clients nun auf die Einträge der
jeweiligen Redakteure reduziert, so dass jeder Redakteur
(ausser natürlich der user: 'admin')
nur noch seine eigenen Seiten sieht.
1. Schritt
Anhängen der Spalte redakteur an die DB-Tabelle conclients
2. Schritt
Ändern der Datei contenido/index.php wie folgt / direkt nach dem <? Tag:
//begin mychanges
session_start();
//end mychanges
3. Schritt
Ändern der Datei contenido/main.php wie folgt / direkt nach dem <? Tag:
//begin mychanges
session_start();
//end mychanges
4. Schritt
Ändern der Datei contenido/index.php wie folgt
// begin mychanges
//old:
//$sql = "SELECT * FROM $cfgTab_clients";
//new:
session_register("redakteur");
$redakteur=$auth->auth["uname"];
if($auth->auth["uname"]=="admin")
$redakteur="%";
$sql = "SELECT * FROM $cfgTab_clients where redakteur like '%$redakteur%'";
echo "<option></option>";
// end mychanges
5. Schritt
Ändern der Datei contenido/header_for_frame.php
// begin mychanges
//old:
//$sql = "SELECT * FROM $cfgTab_clients";
//new:
$sql = "SELECT * FROM $cfgTab_clients where redakteur like '%$redakteur%'";
//end mychanges
6. Schritt:
Ändern der Datei contenido/tpl/form_client.php
// begin mychanges
//old:
//$sql = "SELECT * FROM $cfgTab_clients";
//new:
$sql = "SELECT * FROM $cfgTab_clients where redakteur like '%$redakteur%'";
//end mychanges
die nur ihre eigenen Clients sehen,
habe ich an die Tabelle con_clients
eine Spalte mit den 'redakteur' angebängt.
Beim einloggen in Contenido wird jetzt der Username als
Variable redakteur als Session-Variable gespeichert und
die SQL Abfrage der Clients nun auf die Einträge der
jeweiligen Redakteure reduziert, so dass jeder Redakteur
(ausser natürlich der user: 'admin')
nur noch seine eigenen Seiten sieht.
1. Schritt
Anhängen der Spalte redakteur an die DB-Tabelle conclients
2. Schritt
Ändern der Datei contenido/index.php wie folgt / direkt nach dem <? Tag:
//begin mychanges
session_start();
//end mychanges
3. Schritt
Ändern der Datei contenido/main.php wie folgt / direkt nach dem <? Tag:
//begin mychanges
session_start();
//end mychanges
4. Schritt
Ändern der Datei contenido/index.php wie folgt
// begin mychanges
//old:
//$sql = "SELECT * FROM $cfgTab_clients";
//new:
session_register("redakteur");
$redakteur=$auth->auth["uname"];
if($auth->auth["uname"]=="admin")
$redakteur="%";
$sql = "SELECT * FROM $cfgTab_clients where redakteur like '%$redakteur%'";
echo "<option></option>";
// end mychanges
5. Schritt
Ändern der Datei contenido/header_for_frame.php
// begin mychanges
//old:
//$sql = "SELECT * FROM $cfgTab_clients";
//new:
$sql = "SELECT * FROM $cfgTab_clients where redakteur like '%$redakteur%'";
//end mychanges
6. Schritt:
Ändern der Datei contenido/tpl/form_client.php
// begin mychanges
//old:
//$sql = "SELECT * FROM $cfgTab_clients";
//new:
$sql = "SELECT * FROM $cfgTab_clients where redakteur like '%$redakteur%'";
//end mychanges
hey, danke für die anleitung!! habs gleich ausprobiert.
hat bis jetzt nicht ganz geklappt.
werd später weitermachen.
übrigens: die auswahl - front_single/frame - erscheint jetzt beim einloggen nur noch beim admin. dementsprechend passt bei den anderen die struktur und die seiten überhaupt nicht....
greetz, vanessa
hat bis jetzt nicht ganz geklappt.
werd später weitermachen.
übrigens: die auswahl - front_single/frame - erscheint jetzt beim einloggen nur noch beim admin. dementsprechend passt bei den anderen die struktur und die seiten überhaupt nicht....
greetz, vanessa
Dumme Rückfrage:
Hast Du denn die Spalte redakteur in der Datenbank auch gefüllt?
Beispielsweise redakteur "mustermann" trägst du ein für den Client front_single.
Dann siehst du in den select Feldern hinterher beim admin beide clients, beim user mustermann, wenn er sich einloggt nur den Client front_single etc für jedem neuen Client.
Hast Du denn die Spalte redakteur in der Datenbank auch gefüllt?
Beispielsweise redakteur "mustermann" trägst du ein für den Client front_single.
Dann siehst du in den select Feldern hinterher beim admin beide clients, beim user mustermann, wenn er sich einloggt nur den Client front_single etc für jedem neuen Client.
dumme fragen gibts nicht... sonst würd ich mich nicht mehr trauen hier zu posten
habe die spalte redakteur in con_clients gefüllt. da stehen dann untereinander redakteur1, redakteur2,... unter name steht immer front_single.
beim einloggen gibts den gewünschten effekt: man kann nur noch front_single wählen.
da ist aber noch irgendwo ein problem, weil:
redakteur1 kann alle artikel bearbeiten, struktur verändern.
redakteur2 sieht gar nichts und kann auch nichts erstellen. rechte sind jedoch alle vorhanden.
habe die spalte redakteur in con_clients gefüllt. da stehen dann untereinander redakteur1, redakteur2,... unter name steht immer front_single.
beim einloggen gibts den gewünschten effekt: man kann nur noch front_single wählen.
da ist aber noch irgendwo ein problem, weil:
redakteur1 kann alle artikel bearbeiten, struktur verändern.
redakteur2 sieht gar nichts und kann auch nichts erstellen. rechte sind jedoch alle vorhanden.
So siehts bei mir aus:
#
# Daten für Tabelle `con_clients`
#
INSERT INTO con_clients VALUES (1, 'testclient', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 'wagner');
INSERT INTO con_clients VALUES (2, 'front_single', 0, '', '2002-07-08 17:16:48', '2002-07-08 17:16:48', 'admin');
INSERT INTO con_clients VALUES (3, 'pflegedienst', 0, '', '2002-09-19 19:31:56', '2002-09-19 19:31:56', 'pflege');
INSERT INTO con_clients VALUES (4, 'verwaltung', 0, '', '2002-09-19 19:32:58', '2002-09-19 19:32:58', 'verwalt');
INSERT INTO con_clients VALUES (5, 'entsorgung', 0, '', '2002-09-19 19:33:25', '2002-09-19 19:33:25', 'entsorger');
INSERT INTO con_clients VALUES (6, 'meddienst', 0, '', '2002-09-19 19:33:52', '2002-09-19 19:33:52', 'arzt');
Der Redakteur arzt darf nur den client meddienst, der Redakteur pflege nur den pflegedienst, der admin darf alle Clients (s.o.)
Des weiteren habe ich wie schon gepostet, die Layouts, Templates und Module allen Clients zur Verfügung gestellt, indem ich nicht die spezifische Client_id abfrage.
Ich hoffe damit geholfen zu haben.
Gruß aus Bochum
Detlev
# Daten für Tabelle `con_clients`
#
INSERT INTO con_clients VALUES (1, 'testclient', 0, '', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 'wagner');
INSERT INTO con_clients VALUES (2, 'front_single', 0, '', '2002-07-08 17:16:48', '2002-07-08 17:16:48', 'admin');
INSERT INTO con_clients VALUES (3, 'pflegedienst', 0, '', '2002-09-19 19:31:56', '2002-09-19 19:31:56', 'pflege');
INSERT INTO con_clients VALUES (4, 'verwaltung', 0, '', '2002-09-19 19:32:58', '2002-09-19 19:32:58', 'verwalt');
INSERT INTO con_clients VALUES (5, 'entsorgung', 0, '', '2002-09-19 19:33:25', '2002-09-19 19:33:25', 'entsorger');
INSERT INTO con_clients VALUES (6, 'meddienst', 0, '', '2002-09-19 19:33:52', '2002-09-19 19:33:52', 'arzt');
Der Redakteur arzt darf nur den client meddienst, der Redakteur pflege nur den pflegedienst, der admin darf alle Clients (s.o.)
Des weiteren habe ich wie schon gepostet, die Layouts, Templates und Module allen Clients zur Verfügung gestellt, indem ich nicht die spezifische Client_id abfrage.
Ich hoffe damit geholfen zu haben.
Gruß aus Bochum
Detlev
hi, danke für die hilfe!
das mit den layouts für alle clients funktioniert und die clients an sich werden auch richtig angezeigt.
problem ist aber immer noch, daß nur der admin die struktur und die seiten sehen kann.
die anderen clients sehen unter seiten und struktur nichts und haben auch keine möglichkeit etwas zu erstellen.
in der db tabelle con_side steht unter idclient immer 1 bzw. 2., kann das ein grund sein, weshalb die anderen clients außer dem admin die seiten nicht sehen können? in der tabelle con_cat das gleiche: unter idclient immer 1 bzw. 2.
nach manueller änderung auf einen anderen client tut sich nichts...
wo liegt denn da der fehler?
das mit den layouts für alle clients funktioniert und die clients an sich werden auch richtig angezeigt.
problem ist aber immer noch, daß nur der admin die struktur und die seiten sehen kann.
die anderen clients sehen unter seiten und struktur nichts und haben auch keine möglichkeit etwas zu erstellen.
in der db tabelle con_side steht unter idclient immer 1 bzw. 2., kann das ein grund sein, weshalb die anderen clients außer dem admin die seiten nicht sehen können? in der tabelle con_cat das gleiche: unter idclient immer 1 bzw. 2.
nach manueller änderung auf einen anderen client tut sich nichts...
wo liegt denn da der fehler?
Du bist dabei mich zu überholen...
Du bist mir wohl sehr dicht auf den Fersen.
Bis jetzt habe ich all das gepostet, was ich gemacht habe.
Der Aufbau meines Intranet-Projektes ist noch nicht so weit gediehen und ich habe mich erst mal mit den strukturellen Problemen beschäftigt.
Die Mängel, die Du bescdhreibst, habe ich noch gar nicht bemerkt, weil ich noch keine einzige Seite gefüllt habe.
Am Wochenende darf ich segeln in Holland, so dass von mir wohl erst wieder etwas ab Dienstag zu erwarten ist.
Vielleicht findet ja jemand bis dahin schon eine Fortsetzung dieser Baustelle.
Gruß aus Bochum
Detlev
Bis jetzt habe ich all das gepostet, was ich gemacht habe.
Der Aufbau meines Intranet-Projektes ist noch nicht so weit gediehen und ich habe mich erst mal mit den strukturellen Problemen beschäftigt.
Die Mängel, die Du bescdhreibst, habe ich noch gar nicht bemerkt, weil ich noch keine einzige Seite gefüllt habe.
Am Wochenende darf ich segeln in Holland, so dass von mir wohl erst wieder etwas ab Dienstag zu erwarten ist.
Vielleicht findet ja jemand bis dahin schon eine Fortsetzung dieser Baustelle.
Gruß aus Bochum
Detlev
möglicher fehler
Nach Windstärke 7 auf dem Isselmeer leicht teumelig zurück..
@vanessa
Ich baue mein System nur framelos auf. Deswegen habe ich den Inhalt des Ordners front_frame gelöscht, und den Inhalt von front_single darein kopiert (Nach meinen Änderungen werden die Pfade und Variablen aus diesem Verzeichnis nämlich mit abgefragt).
Du hast ja in der Tabelle con_clients die Einträge für die neuen Clients gemacht und dort auch die ID-Nummern vergeben.
Auf jeden Fall musst Du innerhalb sämtlicher Client-Ordner die Datei config.php bearbeiten und die Variable $client gleich der client-ID aus der Tabelle setzen.
Wenn Du dann neue Strukturbäume oder Seiten für die Clients erstellst, sollte es funktionieren.
Zumindest bin ich im Augenblick soweit, dass es meiner Meinung nach funktioniert.
Gruß aus Bochum
Detlev
@vanessa
Ich baue mein System nur framelos auf. Deswegen habe ich den Inhalt des Ordners front_frame gelöscht, und den Inhalt von front_single darein kopiert (Nach meinen Änderungen werden die Pfade und Variablen aus diesem Verzeichnis nämlich mit abgefragt).
Du hast ja in der Tabelle con_clients die Einträge für die neuen Clients gemacht und dort auch die ID-Nummern vergeben.
Auf jeden Fall musst Du innerhalb sämtlicher Client-Ordner die Datei config.php bearbeiten und die Variable $client gleich der client-ID aus der Tabelle setzen.
Wenn Du dann neue Strukturbäume oder Seiten für die Clients erstellst, sollte es funktionieren.
Zumindest bin ich im Augenblick soweit, dass es meiner Meinung nach funktioniert.
Gruß aus Bochum
Detlev
habe in config.php die clients bearbeitet. für jeden client die selbe liste mit entsprechender id. es klappt immer noch nicht. werde weiterprobieren.
eines wundert mich aber immer noch: in der database steht unter idclient immer 1 oder 2 - nachdem es ja anfangs nur 2 gab.
hast du da irgendetwas verändert?
eines wundert mich aber immer noch: in der database steht unter idclient immer 1 oder 2 - nachdem es ja anfangs nur 2 gab.
hast du da irgendetwas verändert?
1. in der contenido/inc/conifig.inc z.B. den Client 3 anlegen:
$cfgClient[3]["path"]["frontend"] = "/home/www-server/intranet/htdocs/pages/pflegedienst/"; // for Contenido PHP
$cfgClient[3]["path"]["htmlpath"] = "pages/pflegedienst/"; // for Contenido-HTML
$cfgClient[3]["htmlpath"]["frontend"] = "../".$cfgClient[1]["path"]["htmlpath"];// for linking to files in frontend from contenido (main -> dis_editcontent)
//**** just comment out one of those blocks to not display this folder for upload ************
$cfgClient[3]["path"]["img"] = $cfgClient[1]["path"]["frontend"]."img/";
$cfgClient[3]["htmlpath"]["img"] = $cfgClient[1]["htmlpath"]["frontend"]."img/";
$cfgClient[3]["frontendpath"]["img"] = "img/";
$cfgClient[3]["actionname"]["img"] = "Bilder";
$cfgClient[3]["text"]["img"] = "Laden Sie ein Bild auf den Webserver";
$cfgClient[3]["filetype"]["img"] = "img";
$cfgClient[3]["path"]["pdf"] = $cfgClient[3]["path"]["frontend"]."pdf/";
$cfgClient[3]["htmlpath"]["pdf" ] = $cfgClient[3]["htmlpath"]["frontend"]."pdf/";
$cfgClient[3]["frontendpath"]["pdf"] = "pdf/";
$cfgClient[3]["actionname"]["pdf"] = "PDF";
$cfgClient[3]["text"]["pdf"] = "Laden Sie ein PDF-Dokument auf den Webserver";
$cfgClient[3]["filetype"]["pdf"] = "pdf";
2. in dem Verzeichnis des Client 3 bei mir /pages/pflegedienst/ in der Datei config.php auch den Client einstellen:
<?
$ContenidoPath = "../../contenido/";
$errorfont = "font3";
$language = "de";
$client = "3";
?>
Wenn Du nicht weiterkommst, kann ich dir
a) einen mysql-dump der DB
b) das gezippte contenido-Verzeichnis
c) meine HowTos für die Umstellungen, die ich hier je nach Fortschritt verraten habe,
mailen
Mail-Adresse: wagner@bergmannsheil.de
Ansonsten viel Erfolg
Detlev
$cfgClient[3]["path"]["frontend"] = "/home/www-server/intranet/htdocs/pages/pflegedienst/"; // for Contenido PHP
$cfgClient[3]["path"]["htmlpath"] = "pages/pflegedienst/"; // for Contenido-HTML
$cfgClient[3]["htmlpath"]["frontend"] = "../".$cfgClient[1]["path"]["htmlpath"];// for linking to files in frontend from contenido (main -> dis_editcontent)
//**** just comment out one of those blocks to not display this folder for upload ************
$cfgClient[3]["path"]["img"] = $cfgClient[1]["path"]["frontend"]."img/";
$cfgClient[3]["htmlpath"]["img"] = $cfgClient[1]["htmlpath"]["frontend"]."img/";
$cfgClient[3]["frontendpath"]["img"] = "img/";
$cfgClient[3]["actionname"]["img"] = "Bilder";
$cfgClient[3]["text"]["img"] = "Laden Sie ein Bild auf den Webserver";
$cfgClient[3]["filetype"]["img"] = "img";
$cfgClient[3]["path"]["pdf"] = $cfgClient[3]["path"]["frontend"]."pdf/";
$cfgClient[3]["htmlpath"]["pdf" ] = $cfgClient[3]["htmlpath"]["frontend"]."pdf/";
$cfgClient[3]["frontendpath"]["pdf"] = "pdf/";
$cfgClient[3]["actionname"]["pdf"] = "PDF";
$cfgClient[3]["text"]["pdf"] = "Laden Sie ein PDF-Dokument auf den Webserver";
$cfgClient[3]["filetype"]["pdf"] = "pdf";
2. in dem Verzeichnis des Client 3 bei mir /pages/pflegedienst/ in der Datei config.php auch den Client einstellen:
<?
$ContenidoPath = "../../contenido/";
$errorfont = "font3";
$language = "de";
$client = "3";
?>
Wenn Du nicht weiterkommst, kann ich dir
a) einen mysql-dump der DB
b) das gezippte contenido-Verzeichnis
c) meine HowTos für die Umstellungen, die ich hier je nach Fortschritt verraten habe,
mailen
Mail-Adresse: wagner@bergmannsheil.de
Ansonsten viel Erfolg
Detlev
bin grad so einbisschen am rätseln, ob wir da tatsächlich aneinander vorbei-gedacht haben...
dank deiner hilfe können die clients nun ihre eigenen strukturbäume bearbeiten. aber das sind tatsächlich "ihre eigenen". dh sie haben praktisch ihr eigenes frontend - wie front_single eben.
es ist nicht so, daß sie nur einen teil der struktur die der admin sehen kann, bearbeiten.
admin kann alle strukturpunkte bearbeiten.
home
Menu1 > kann nur von redakteur1 bearbeitet werden
Menu1 > kann nur von redakteur2 bearbeitet werden
dafür muß es einfach eine lösung geben und solange ich die nicht habe... tja, dann muß ich wohl die nächsten paar tage php/mysql bücher studieren...
schließlich soll man nicht fordern ohne zu leisten...
trotzdem vielen dank - das bringt mich auf jeden fall weiter!
dank deiner hilfe können die clients nun ihre eigenen strukturbäume bearbeiten. aber das sind tatsächlich "ihre eigenen". dh sie haben praktisch ihr eigenes frontend - wie front_single eben.
es ist nicht so, daß sie nur einen teil der struktur die der admin sehen kann, bearbeiten.
admin kann alle strukturpunkte bearbeiten.
home
Menu1 > kann nur von redakteur1 bearbeitet werden
Menu1 > kann nur von redakteur2 bearbeitet werden
dafür muß es einfach eine lösung geben und solange ich die nicht habe... tja, dann muß ich wohl die nächsten paar tage php/mysql bücher studieren...
schließlich soll man nicht fordern ohne zu leisten...
trotzdem vielen dank - das bringt mich auf jeden fall weiter!
Wir wollen eigentlich das Gleiche.
Mir ist aber nur diese Lösung eingefallen, die ich beschrieben habe.
Zumal mir nichts besseres eingefallen ist, wie ich die Uploadbereiche für die Bilder trennen kann.
Den gesamten Baum will ich als nächstes zusammenstricken und dort die einzelnen Clients zusammenlinken, bei mir sind die Clients so selbständig, dass sie eine eigene senkrechte Navigation erhalten sollen, während die waagerechte Navigation bleibt und auf die Clients linkt.
Nach wie vor kann der Admin in sämtliche sämtliche Clients reinschauen.
Wenn Du mit deinem Ansatz aber weiterkommst, wäre ich Dir für Infos sehr dankbar.
Mir ist aber nur diese Lösung eingefallen, die ich beschrieben habe.
Zumal mir nichts besseres eingefallen ist, wie ich die Uploadbereiche für die Bilder trennen kann.
Den gesamten Baum will ich als nächstes zusammenstricken und dort die einzelnen Clients zusammenlinken, bei mir sind die Clients so selbständig, dass sie eine eigene senkrechte Navigation erhalten sollen, während die waagerechte Navigation bleibt und auf die Clients linkt.
Nach wie vor kann der Admin in sämtliche sämtliche Clients reinschauen.
Wenn Du mit deinem Ansatz aber weiterkommst, wäre ich Dir für Infos sehr dankbar.