Sechster Schritt - Installation des Moduls

Um das neue Modul ins Backend einzubinden sind einige weitere Schritte nötig. Zunächst Rechte, das Menu und die Datenbankinitialisierung.

Berechtigungen

Die Rechte auf die Actions des Moduls werden ebenso in Form einer XML Datei gepflegt. Aufgrund dessen, dass RedSpark Rechte auf ACL basieren, werden Rechte (z.B. faq_admin) angelegt und Rollen (z.B. admin mit id=0) zugeordnet. Die Actions werden dann für eines oder mehrere Rechte frei geschaltet:

<MyApp>/RsModule/Faq/Config/FaqRights.xml


<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE rights SYSTEM "http://www.redsparkframework.com/dtd/rights.dtd">



<rights>

    <!-- Admin Actions -->

    <!-- Diese Actions werden automatisch im Backend-Design angezeigt -->

    <!-- Das Recht Kann direkt mit getRight geprueft werden (Wie Virtual) -->

    <right name="faq_admin">

        <!-- Actions werden auf das Recht "action_<name>" gemappt. -->

        

        <!-- CRUD(L) Actions -->

        <!-- klonbar auf andere Models per clone_crud.sh -->

        <action name="Create"/>

        <action name="Read"/>

        <action name="Update"/>

        <action name="Delete"/>

        <action name="List"/>

        

        <action name="menu_faq"/>

        <action name="howto_faq"/>



        <!-- Weitere Alias Namen fuer das Recht (ohne "action_") -->

        <virtual name="faq_redakteur"/>

        

        <!-- Rollen, von denen eine erfuellt sein muss, damit Recht auf Action da ist -->

        <role name="admin" id="0"/>

        <role name="admin" id="1"/>

        <role name="admin" id="2"/>

        <role name="admin" id="3"/>

        <role name="admin" id="4"/>

    </right>



    <!-- Hauptadmin Actions -->

    <right name="faq_hauptadmin">

        <action name="config_faq"/>

        

        <role name="admin" id="0"/>

    </right>

    

    

    <right name="faq_guest">

        <!-- CRUD(L) Actions -->

        <!--  

        <action name="faq_public_list"/>

        -->


        

        <!-- List als guest definieren, damit im Admin im gleichen layout angezeigt wird -->

        <!-- Guest sind nur ausgeloggte nutzer -->

        <role name="guest"/>

    </right>

    

    

    

    <!-- World Actions -->

    <!-- Diese Actions werden automatisch im Frontend-Design angezeigt -->

    <right name="faq_world">

        <!-- ... -->

        <!-- World ist jeder, auch Admin und Member -->

        <role name="world"/>

    </right>

    

</rights>


Eintragung ins Backendmenu

Jedes Modul kann im RedSpark System unterschiedliche Funktionen implementieren. Das Backendmenu ist eine dieser Funktionen. Zur Implementierung muss der Controller des Moduls das entsprechende Interface implementieren und die entsprechende Methode anbieten, um die Menü-Informationen zurück zu liefern.

<MyApp>/RsModule/Faq/Controller/Controller.php


<?php
class

    RedSparkKickstart_RsModule_Faq_Controller_Controller

extends

    Redspark_RsModule_Abstract_Controller

implements

    RedSparkCore_RsModule_Abstract_Controller_Interface_ModuleOverview

{

    /**

     * Hier werden die Menus für die Hauptübersicht im Backend und die Modul.Funktionsübersicht gesetzt

     *

     * @return Array

     */

    function getModuleOverview ()    {

        $userType = (isset($_SESSION["session_UserType"])) ? $userType $_SESSION["session_UserType"] : "";

        switch ($userType) {

            case ("admin"):

                $array = array(

                             // Modulname

                             "headline_title" => M_FAQ_MODULNAME,

                             // Action auf dem obersten Link in der Modul.Funktionsübersicht

                             "headline_link" => 'faq_list',

                             // Optinal: Name der obersten Verlinkung. 

                             // Default: "<modulname>Übersicht einsehen", <none> -> Link ausgeblendet!

                             "listing_link_title" => M_FAQ_SHOW_LIST,              

                             
// Optinal: Name der automatischen Verlinkung der Konfiguration.

                             // Default: "Konfigurieren Sie Ihr <modulname> Plugin", <none> -> Link ausgeblendet!

                             "config_link_title" => M_FAQ_SHOW_CONFIG,

                             // Optinal: Name der automatischen Verlinkung der Hilfe.

                             // Default: "Zeigt die Hilfe zu diesem Modul an", <none> -> Link ausgeblendet!

                             "help_link_title" => M_FAQ_SHOW_HELP,

                             // Klassenname -> wird für automatische Linknamen genutzt

                             "class_name" => get_class($this),

                             

                             
# Ab hier alle weiteren Links auf die Modulfunktionen

                             "submenu_array" => array(

                                 array (

                                    // Ordnung der Menupositionen

                                    'submenu_pos' => 1,

                                    // Kurzname für den Link auf der Startseite

                                    'submenu_title' => M_FAQ_MENU_NEW,

                                    // Action

                                    'submenu_link' => "faq_create",

                                   

                                    
'displaybit' => MODULE_OVERVIEW_DISPLAY_BOTH,     

                                    
// displaybit regelt die Anzeigestellen:

                                    //  MODULE_OVERVIEW_DISPLAY_BOTH 

                                    //      -> Auf Startseite und in der Modul.Funktionsübersicht

                                    //  MODULE_OVERVIEW_DISPLAY_NONE 

                                    //      -> Keine Anzeige

                                    //  MODULE_OVERVIEW_DISPLAY_ONLY_MODULEMENU 

                                    //      ->  Nur in der Modul.Funktionsübersicht

                                ),

                                # ... weitere menupunkte ... #

                              )   

                            
);

                    break;

            case ("member"):

            default:

                // Menueinträge für Menus z.B. im Mitgliederbereich oder auf der öffentlichen Seite

                // Die Menus müssen individuell implementiert werden

                $array = array();

                break;

        }

        return $array;   

    
}

}
?>


Um die Änderungen im Menu wirksam werden zu lassen, muss im Backend entweder die PurgeAll Funktion im Debug-Modul im Bereich Cache genutzt oder die Paremeter &purgeCache=all&cache=0 angehängt werden.


Modulkonfiguration

Einstellungen und Defines werden über eine modulspezifische INI Datei vorgenommen.

<MyApp>/RsModule/Faq/Config/config.ini


Hier können Parameter gesetzt werden, die z.B. als Voreinstellung genutzt und später überschrieben werden.

Datenbankinitialisierung

Wählen Sie im Backend den Menueintrag [System] -> [Wartung] ->[Update database structure], um die Datenbank automatisch durch die Module aktualisieren zu lassen. Es werden dabei die Felder aus der Model-XML abgefragt und die entsprechenden Tabellen angelegt. Es gibt weitere Möglichkeiten, alte Daten zu migrieren bzw. Tabellenstrukturen anzupassen, dazu später mehr. Zunächst reicht der Aufruf, um die Tabellenstruktur aus der XML Datei im Model zu erzeugen.

Kuborgh GmbH

Hamburg 040 819 773 770 Köln 0221 276 66 96 info@kuborgh.de www.kuborgh.de

RedSpark Community

RedSpark Community

Community Website
RedSpark Apps

RedSpark Apps

Zur Übersicht
RedSpark Download

RedSpark Basispaket

Zum Download
Key facts