Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
#1 03. Dezember 2012 13:29
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Massenbearbeitung von "weitere Bearbeiter"
Ich habe eine komplexe CMSms Installation die für zwei Domains ausgelegt ist. Es handelt sich um zwei Hotels die aus einem CMSms bedient werden.
Dabei sieht der Seitenbaum in etwa so aus:
HotelA
- Seite 1
- Seite 2
HotelB
- Seite 1
- Seite 2
Nur viiiel umfangreicher. Nun habe ich zwei Nutzergruppen angelegt: HotelA und HotelB. Ich möchte dass die Nutzer der Gruppe "HotelA" nur die Seiten unter HotelA bearbeiten dürfen. Dazu muss ich aktuell in jede einzelne Seite klicken und unter Optionen->weitere Bearbeiter die Gruppe auswählen. Ist natürlich extrem lästig und aufwändig da es sehr viele Seiten gibt. Leider gibt es für diese Aktion keine Stapelverarbeitung. Hat jemand ne Idee wie man das noch machen könnte? Gerne auch mit ner SQL-Anweisung…
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#2 03. Dezember 2012 13:41
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Zweite Problematik:
Wenn die Seiten entsprechend zugeordnet wurden, klappt das ja soweit wunderbar. Jeder sieht das was er darf.
Sobald aber Nutzer von HotelB eine neue Seite anlegt (die auch unter HotelB einsortiert wurde), kann der Nutzer von HotelA die Seite dann aber auch sehen. Ist auch logisch da ja standardmäßig kein Wert unter "weitere Bearbeiter" gesetzt wurde. Wenn es hierzu auch ne Lösung gibt, würde die mich sehr interessieren
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#3 03. Dezember 2012 15:02
- faglork
- arbeitet mit CMS/ms
- Ort: Fränkische Schweiz
- Registriert: 15. Dezember 2010
- Beiträge: 1.152
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Leider gibt es für diese Aktion keine Stapelverarbeitung.
Doch, in der Seitenübersicht: Seiten markieren, dann --> "Ausgewählte Einträge" im Dropdown "Eigentümer ändern" auswählen.
hth,
Alex
Offline
#4 03. Dezember 2012 15:04
- faglork
- arbeitet mit CMS/ms
- Ort: Fränkische Schweiz
- Registriert: 15. Dezember 2010
- Beiträge: 1.152
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Zweite Problematik:
Wenn die Seiten entsprechend zugeordnet wurden, klappt das ja soweit wunderbar. Jeder sieht das was er darf.
Sobald aber Nutzer von HotelB eine neue Seite anlegt (die auch unter HotelB einsortiert wurde), kann der Nutzer von HotelA die Seite dann aber auch sehen. Ist auch logisch da ja standardmäßig kein Wert unter "weitere Bearbeiter" gesetzt wurde. Wenn es hierzu auch ne Lösung gibt, würde die mich sehr interessieren
"Manage all Content" rausnehmen?
Servus,
Alex
Beitrag geändert von faglork (03. Dezember 2012 15:04)
Offline
#5 03. Dezember 2012 16:53
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
1. Eigentümer ändern hat ja damit nichts zu tun. Es geht um die Option "weitere Bearbeiter"
2. was bringt es wenn "Manage all Content" deaktiviert ist? Der Wert fehlt ja dann trotzdem
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#6 03. Dezember 2012 16:56
- faglork
- arbeitet mit CMS/ms
- Ort: Fränkische Schweiz
- Registriert: 15. Dezember 2010
- Beiträge: 1.152
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
1. Eigentümer ändern hat ja damit nichts zu tun. Es geht um die Option "weitere Bearbeiter"
2. was bringt es wenn "Manage all Content" deaktiviert ist? Der Wert fehlt ja dann trotzdem
Wenn du als Eigentümer eine Gruppe benennst, sollte das doch funktionieren?
EDITH: Aaaah, Mist, sehe grad dass das nicht geht ... :-(
Servus,
Alex
Beitrag geändert von faglork (03. Dezember 2012 16:58)
Offline
#7 03. Dezember 2012 16:57
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
bei "Eigentümer" kann man nur einen einzelnen User auswählen aber keine Gruppen
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#8 03. Dezember 2012 20:14
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
In der Ereignisverwaltung für den EditContentPost Event einen UDT schreiben, der die die Berechtigungen automatisch setzt.
// root Alias ermitteln
$contentops = cmsms()->GetContentOperations();
$pageId = $params['content']->Id();
$rootAlias = '';
while( $pageId > 0 ) {
$content = $contentops->LoadContentFromId($pageId);
if( !is_object( $content ) ) {
$rootAlias = '';
break;
}
$rootAlias = $content->Alias();
$pageId = $content->ParentId();
}
$defaultEditors = array();
if ($rootAlias == "hotela") {
$defaultEditors[] = "gruppenname";
$defaultEditors[] = "gruppenname2";
}
else if ($rootAlias == "hotelb") {
$defaultEditors[] = "gruppenname3";
$defaultEditors[] = "gruppenname4";
}
// Editors löschen
$query = "DELETE FROM ".cms_db_prefix()."additional_users WHERE content_id = ?";
$db->Execute($query, array($id));
foreach ($defaultEditors as $oneeditor)
{
$new_addt_id = $db->GenID(cms_db_prefix()."additional_users_seq");
$query = "INSERT INTO ".cms_db_prefix()."additional_users (additional_users_id, user_id, content_id) VALUES (?,?,?)";
$db->Execute($query, array($new_addt_id, $oneeditor, $id));
}
--> das ganze ist kurz zusammenkopiert aus einem UDT den ich in ähnlicher Form nutze. Kann sein, dass nicht alles 100% auf Anhieb funktioniert. Soll auch nur als Denkanstoss dienen.
Beitrag geändert von nockenfell (04. Dezember 2012 06:15)
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#9 03. Dezember 2012 22:58
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
ah, funktionsweise hab ich verstanden. besten dank.
muss wohl noch angepasst werden in zeile zwei:
$contentops = $cmsms()->GetContentOperations();
aber bekomme noch nen fehler: "Fatal error: Function name must be a string in /home/www/lib/classes/class.usertagoperations.inc.php(243) : eval()'d code on line 2" was ist damit gemeint?
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#10 04. Dezember 2012 06:16
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Da fehlte was. $gCms war nicht definiert. Ich habe es oben abgeändert. Korrekt wäre:
$contentops = cmsms()->GetContentOperations();
--> $cmsms() durch cmsms() ersetzen
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#11 04. Dezember 2012 08:49
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
ah stimmt. war schon zu spät… aber der fehler kommt immernoch?
übrigens ist die "echte" seitenstruktur so:
- de
-- Hotel A
--- Seite 1
--- Seite 2
-- Hotel B
--- Seite 1
--- Seite 2
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#12 04. Dezember 2012 09:05
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Hm. Das sollte eigentlich genau so stimmen.
Dein Problem könnte mit der ToolBox gelöst werden:
UDT:
$tbtools = new tbTools();
$parent = $tbtools->getLevelAlias(1,$params['content']->Alias());
if ($parent == "Hotel_A")
.....
Übrigens fehlt im Script vor den DB-Operationen noch ein $db = cmsms()->GetDb();
Hilfe dazu:
getLevelAlias($level,[$alias],[$assign])
Gibt den Alias der übergeordneten Seite einer bestimmten Ebene (Level) zurück. Falls die angegebene Ebene höher ist als die der aktuellen Seite, wird ein leerer String zurück gegeben.
Argumente:
$level - Nummer der Ebene von welcher der Alias zurückgegeben werden soll (1 = 1. Ebene, 2 = 2. Ebene, etc.)
[$alias] - (optional) der Seiten-Alias oder die ID der Seite, deren übergeordnete Seite der definierten Ebene gefunden werden soll. Wenn kein Wert festgelegt wurde, wird die aktuelle Seite verwendet.
[$assign] - (optional) der Name der Variable, der das Ergebnis zugewiesen werden soll.Beispiel:
Der Seiten-Alias der übergeordneten der Seite auf der Ebene 1 ist {$tbtools->getLevelAlias(1)}
Beitrag geändert von nockenfell (04. Dezember 2012 09:07)
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#13 04. Dezember 2012 12:45
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
ja. bin nicht so mysql bewandert. auf jeden fall kommt jetzt kein fehler mehr. habe lediglich
$db = cmsms()->GetDb();
ergänzt.
allerdings wurde auch keine gruppe der seite als "weitere bearbeiter" zugewiesen. also merke keinen unterschied.
habe als admin eine neue seite unter "de -> Hotel A" angelegt. da müssts dann eigentlich gruppeA zugewiesen sein. klappt auch nicht wenn ich im UDT "de" als rootalias angebe
Beitrag geändert von nicmare (04. Dezember 2012 12:47)
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#14 04. Dezember 2012 12:48
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Prüfe mal ob die von mir angegebene Ebene 1 korrekt ist oder ob es
$parent = $tbtools->getLevelAlias(2,$params['content']->Alias());
heissen müsste
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#15 04. Dezember 2012 12:52
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
wollt grad tbtools installieren. kommt die meldung
Konnte das Verzeichnis nicht erstellen ''
welches verzeichnis will er denn??
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#16 04. Dezember 2012 13:10
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Aktuell braucht ToolBox auf folgenden Verzeichnissen Schreibrechte:
modules/ToolBox/templates
modules/ToolBox/templates/css
modules/ToolBox/templates/js
modules/ToolBox/log
uploads/ToolBox
uploads/ToolBox/AutoLightBox
uploads/ToolBox/CSV
uploads/AutoLightBox
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#17 04. Dezember 2012 13:12
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Wann hast du die Fehlermeldung genau bekommen? Könnte auch vom Template-Import sein. Hier muss das Verzeichnis modules/ToolBox/templates beschreibbar sein.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#18 04. Dezember 2012 13:14
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
hab alle schreibrechte jetzt gesetzt. meldung kommt immernoch. habe das modul via ftp rübergezogen und auf installieren geklickt. dann kommt die meldung. habe in /uploads/ nachgeschaut. wurden alle ordner angelegt. auch modules/ToolBox/templates und dessen unterordner sind beschreibbar.
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#19 04. Dezember 2012 13:19
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
habs mit tb 1.30 @ cmsms 1.10.3 probiert. geht einfach nicht. nun mit 1.24 gings!
edit: hab $tbtools nun im UDT verwendet.
sowohl $tbtools->getLevelAlias(2,$params['content']->Alias()); als auch $tbtools->getLevelAlias(1,$params['content']->Alias());
hat sich nichts geändert
Beitrag geändert von nicmare (04. Dezember 2012 13:22)
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#20 04. Dezember 2012 13:35
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Ok. Muss ich mal suchen was an der ToolBox hängt.
Teste mal den UDT direkt. Schreibe folgenden UDT:
$parent = $tbtools->getLevelAlias(2,"ALIAS_EINER_UNTERSEITE");
echo $parent;
und führe nun den UDT direkt aus (eines der Icons bei der UDT Auflistung). Was kommt als Resultat?
Allgemeine Frage? Hast du Benutzergruppen oder nur einzelne Nutzer gemacht? Der Code von mir brauche ich um weitere Gruppen einzutragen (z.B. wenn ich als Admin eine Seite erstelle, dass der User die Seite auch bearbeiten kann). Mit einzelnen Usern kann das auch gehen, kann aber sein, dass es hier anders heissen muss.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#21 04. Dezember 2012 14:37
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
da kam der richtige wert raus. demzufolge sieht das UDT jetzt so aus:
// root Alias ermitteln
$contentops = cmsms()->GetContentOperations();
$pageId = $params['content']->Id();
$rootAlias = '';
while( $pageId > 0 ) {
$content = $contentops->LoadContentFromId($pageId);
if( !is_object( $content ) ) {
$rootAlias = '';
break;
}
$rootAlias = $content->Alias();
$pageId = $content->ParentId();
}
$tbtools = new tbTools();
$parent = $tbtools->getLevelAlias(2,$params['content']->Alias());
$defaultEditors = array();
if ($parent == "motel-stralsund") {
$defaultEditors[] = "motelstralsund";
}
else if ($parent == "hotel-tannenhof") {
$defaultEditors[] = "hoteltannenhof";
}
// Editors löschen
$db = cmsms()->GetDb();
$query = "DELETE FROM ".cms_db_prefix()."additional_users WHERE content_id = ?";
$db->Execute($query, array($id));
foreach ($defaultEditors as $oneeditor)
{
$new_addt_id = $db->GenID(cms_db_prefix()."additional_users_seq");
$query = "INSERT INTO ".cms_db_prefix()."additional_users (additional_users_id, user_id, content_id) VALUES (?,?,?)";
$db->Execute($query, array($new_addt_id, $oneeditor, $id));
}
und es handelt sich hierbei um zwei gruppen. aber in dem array ist ja nur ein wert. kann es sein dass von dem array am ende erwartet wird dass es mind. 2 werte enthält??
edit: habs mal ohne array probiert. löst das problem auch nicht. grrr
Beitrag geändert von nicmare (04. Dezember 2012 14:41)
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#22 04. Dezember 2012 14:41
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Muss es mal heute abend testen falls ich dazu komme. Bin bis Ende Jahr mit einem Projekt komplett absorbiert.
Den Teil vor $tbtools kannst du löschen.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#23 04. Dezember 2012 14:45
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
ja. das wäre nett. mittlerweile siehts nur noch so aus:
$tbtools = new tbTools();
$parent = $tbtools->getLevelAlias(2,$params['content']->Alias());
$id = $params['content']->Id();
$defaultEditors = '';
if ($parent == "motel-stralsund") {
$defaultEditors = "motelstralsund";
}
else if ($parent == "hotel-tannenhof") {
$defaultEditors = "hoteltannenhof";
}
// Editors löschen
$db = cmsms()->GetDb();
$query = "DELETE FROM ".cms_db_prefix()."additional_users WHERE content_id = ?";
$db->Execute($query, array($id));
$new_addt_id = $db->GenID(cms_db_prefix()."additional_users_seq");
$query = "INSERT INTO ".cms_db_prefix()."additional_users (additional_users_id, user_id, content_id) VALUES (?,?,?)";
$db->Execute($query, array($new_addt_id, $defaultEditors, $id));
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
#24 04. Dezember 2012 22:35
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
Hier nun der funktionsfählige Code:
$tbtools = new tbTools();
$parent = $tbtools->getLevelAlias(2,$params['content']->Alias());
$id = $params['content']->Id();
$defaultEditors = array();
if ($parent == "templates-and-stylesheets") {
$defaultEditors[] = -4;
}
else if ($parent == "hotel-tannenhof") {
$defaultEditors = "hoteltannenhof";
}
// Editors löschen
$db = cmsms()->GetDb();
$query = "DELETE FROM ".cms_db_prefix()."additional_users WHERE content_id = ?";
$db->Execute($query, array($id));
foreach ($defaultEditors as $oneeditor)
{
$new_addt_id = $db->GenID(cms_db_prefix()."additional_users_seq");
$query = "INSERT INTO ".cms_db_prefix()."additional_users (additional_users_id, user_id, content_id) VALUES (?,?,?)";
$db->Execute($query, array($new_addt_id, $oneeditor, $id));
}
Beachte folgendes: Als Editor muss die ID des Users als Minuswert also z.B. '-4' angegeben werden. Die findest du am einfachsten heraus, wenn beim Seiten Bearbeiten den Quelltext anschaust:
<div class="pageoverflow">
<div class="pagetext">Weitere Bearbeiter</div>
<div class="pageinput">
<input name="additional_editors" type="hidden" value=""/><select name="additional_editors[]" multiple="multiple" size="5"><option value="-2" selected="selected">Gruppe: Editor</option><option value="-3" selected="selected">Gruppe: Designer</option><option value="-4" selected="selected">Gruppe: Testing</option></select></div>
</div>
--> jeweils den Wert bei value="" nehmen.
Übrigens: UDT lassen sich am einfachsten Debuggen wenn in der config.php $config['debug] = true ist. Dann kannst du einfache echo oder print_r im UDT einfügen und die Ausgabe anschauen. Damit findest du auch schneller heraus wo es allenfalls hakt.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#25 05. Dezember 2012 09:23
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Massenbearbeitung von "weitere Bearbeiter"
danke dass du noch zeit gefunden hast! es klappt. allerding nur beim bearbeiten von bestehenden seiten. nicht wenn ich eine neue seite anlege. welches ereignis ist dafür verantwortlich?
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline