Einzelne Module komplett in Template-Koniguration ausblenden

Gesperrt
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Einzelne Module komplett in Template-Koniguration ausblenden

Beitrag von derSteffen »

Manchmal möchte man als Sysadmin ja nicht das der Redakteur an bestimmten Modulen in der Temlatekonfiguration was vornimmt oder für manche Redakteure möchte man alles so einfach wie möglich halten.

Um individuelle Module komplett auszublenden (mit Überschrift und Modul in Container) kann man sich CSS und display:none; zur Hilfe nehmen.

Als erstes: Öffnen der der Datei include.tplcfg_edit_form.php unter contenido/includes

Such nach

Code: Alles auswählen

$tpl->set('d', 'MODULECAPTION', $modulecaption);
$tpl->set('d', 'MODULENAME',    $modulename);
und füge darunter diese Zeile ein:

Code: Alles auswählen

$tpl->set('d', 'MODULEID',    $cCurrentModule);
Speichern!

Öffne die Datei: template.tplcfg_edit_form.html unter contenido/templates:

Suche

Code: Alles auswählen

<!-- BEGIN:BLOCK -->
    <tr><td colspan="2"><img src="images/spacer.gif" width="1" height="10"></td></tr>
    <tr>
        <td class="text_medium" style="background-color:#E2E2E2;padding-left:5px;border: 1px;border-color: #B3B3B3; border-style: solid;border-right:0px;"></td>
        <td class="text_medium" style="background-color:#F1F1F1; padding-left:5px; border: 1px; border-left:0px;border-color: #B3B3B3; border-style: solid">{MODULENAME}</td>
    </tr>

    <tr>
        <td class="text_medium" colspan="2" style="border: 1px; border-top:0px; border-color: #B3B3B3; border-style: solid; background-color: #FFFFFF">
        {MODULECODE}
        </td>
    </tr>
    <!-- END:BLOCK -->
und ersetze es durch:

Code: Alles auswählen

<!-- BEGIN:BLOCK -->
    <tr class="modid{MODULEID}"><td colspan="2"><img src="images/spacer.gif" width="1" height="10"></td></tr>
    <tr class="modid{MODULEID}">
        <td class="text_medium" style="background-color:#E2E2E2;padding-left:5px;border: 1px;border-color: #B3B3B3; border-style: solid;border-right:0px;"><span class="nonemodid">{MODULEID} | </span>{MODULECAPTION}</td>
        <td class="text_medium" style="background-color:#F1F1F1; padding-left:5px; border: 1px; border-left:0px;border-color: #B3B3B3; border-style: solid">{MODULENAME}</td>
    </tr>

    <tr class="modid{MODULEID}">
        <td class="text_medium" colspan="2" style="border: 1px; border-top:0px; border-color: #B3B3B3; border-style: solid; background-color: #FFFFFF">
        {MODULECODE}
        </td>
    </tr>
    <!-- END:BLOCK -->
Mit dieser eben gemachten Änderung erhalten wir in der Templatekonfiguration die ID zu jedem Modul.

Zuletzt öffnen wir die contenido.css unter contenido/styles und sagen hier mit Hilfe der Modul-ID (CSS-Klasse) welche Module versteckt werden sollen. Z.B.

Code: Alles auswählen

.modid22, .modid36, .modid55 {display:none !important} 
Wer jetzt noch die Modul-Id in der Templatekonfiguration nicht anzeigen möchte kann in der CSS folgendes ergänzen:

Code: Alles auswählen

.nonemodid {display:none !important}  
MfG Steffen
McHubi
Beiträge: 1223
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Einzelne Module komplett in Template-Koniguration ausble

Beitrag von McHubi »

Hallo Steffen,

Vorschlag/ Alternative: Im Code der Moduleingabe per $uid=$auth->auth["uid"]; die user_id abfragen. Mit einer query über die Spalte perms in der Tabelle con_phplib_auth_user_md5 könntest Du dann herausfinden welche Rechte der aktuelle BE-User hat. Ist er kein (System)administrator bekommt er den den Inhalt der Moduleingabe per if-else nicht angezeigt.

Vorteil Deiner Methode ist natürlich, dass Du ruckzuck ein Dutzend Moduleingaben ausblenden kannst indem Du einfach die CSS-Datei erweiterst. Der Weg über die user_id ist länger, da hier alle Moduleingaben erweitert werden müssten. Vorteil ist allerdings, dass Du hierüber schnell eine simple "Rechteverwaltung" aufbauen kannst. Was ist, wenn einer von fünf Redakteuren dann doch mal Zugriff auf die Konfiguration eines Moduls bekommen soll? Da wird die css-Methode vermutlich nicht mehr klappen. Mit der user_id kannst Du aber auf den Usernamen kommen und die if-else Abfrage in der Moduleingabe entsprechend erweitern.

:D
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Einzelne Module komplett in Template-Koniguration ausble

Beitrag von derSteffen »

Ah, da hast du natürlich Recht! Daran hatte ich noch nicht gedacht!

Aber ich bin kein SQL oer PHP-Experte, deswegen müßte ich mir dafür viel Zeit nehmen um das zu "testen" :-)

Aber diese auth["uid"]-Abfrage ist wirklich ein guter Ansatz, ich habe nämlich das Problem, bzw. den Wunsch mal, dass der Sysadmin einen Artikel "sperren" kann, aber nicht komplett sondern z.B. nich offline stellen, nicht löschen, nicht Template wechseln (Text-Bearbeiten soll gehen), davon sollen die andere Artikel in der Kategorei aber nicht betroffen sein.

MfG Steffen
Gesperrt