def __init__( self ):
        print HTML_head
        try:
            self.db = SQL.db()
        except:
            print "check config in 'config.py' first!"
            sys.exit()


        self.CGIdata = sessiondata.CGIdata( {"page_msg":""} )

        #~ print "<p>CGI-data debug: '%s'</p>" % self.CGIdata

        self.actions = [
                (self.install_PyLucid,  "install",              "Install PyLucid from scratch"),
                (self.add_admin,        "add_admin",            "add a admin user"),
                (self.default_internals,"default_internals",    "set all internal pages to default"),
                (self.convert_db,       "convert_db",           "convert DB data from PHP-LucidCMS to PyLucid Format"),
                #~ (self.sql_dump,         "sql_dump",             "SQL dump (experimental)"),
                #~ (self.convert_locals,   "locals",               "convert locals (ony preview!)"),
            ]

        for action in self.actions:
            if self.CGIdata.has_key( action[1] ):
                # Ruft die Methode auf, die in self.actions definiert wurde
                action[0]()
                sys.exit()

        self.print_actionmenu()
        self.check_system()

        self.db.close()
    def __init__( self ):
        # Alle Objekte/Klassen, die für Module/Plugins nötig sein könnten, werden
        # in dem Dict PyLucid_objects abgelegt. Dieses erlaubt ein vereinheitliche
        # Instanzierung von Modulen
        self.PyLucid = {}

        # PyLucid's Konfiguration
        self.config         = config
        self.PyLucid["config"] = self.config

        if self.config.system.poormans_modrewrite == True:
            # Frühzeite überprüfung der URL
            self.check_request()

        # Speichert Nachrichten die in der Seite angezeigt werden sollen
        self.page_msg       = sessiondata.page_msg()
        self.PyLucid["page_msg"] = self.page_msg

        # CGI Post/Get Daten
        self.CGIdata        = sessiondata.CGIdata( self.PyLucid )
        #~ self.CGIdata.debug()
        self.PyLucid["CGIdata"] = self.CGIdata

        # Anbindung an die SQL-Datenbank, mit speziellen PyLucid Methoden
        self.db             = SQL.db()
        self.PyLucid["db"] = self.db

        # Verwaltung für Einstellungen aus der Datenbank
        self.preferences    = preferences.preferences( self.PyLucid )
        self.PyLucid["preferences"] = self.preferences

        tools.PyLucid = self.PyLucid
        self.PyLucid["tools"] = tools

        # Log-Ausgaben in SQL-DB
        self.log            = SQL_logging.log( self.PyLucid )
        self.PyLucid["log"] = self.log

        # Allgemeiner CGI Sessionhandler auf mySQL-Basis
        self.session        = sessionhandling.sessionhandler(
            self.db.cursor,
            "%ssession_data" % self.config.dbconf["dbTablePrefix"],
            self.log,
            CookieName="PyLucid_id",
            #~ verbose_log = True
        )
        self.session.page_msg = self.page_msg
        #~ self.session.debug()
        self.PyLucid["session"] = self.session

        # Für die Log-Einträge Informationen festhalten
        self.log.client_sID         = self.session.ID
        if self.session.has_key("user"):
            self.log.client_user_name   = self.session["user"]

        # Aktuelle Seite ermitteln und festlegen
        self.detect_page()
        # Überprüfe Rechte der Seite
        self.verify_page()

        # Verwaltung von erweiterungs Modulen/Plugins
        self.module_manager = module_manager.module_manager( self.PyLucid )
        # Alle Module, die für den Modul-Manager vorbereitet wurden einlesen
        self.module_manager.read_module_info( "PyLucid_modules" )
        #~ self.module_manager.debug()
        self.PyLucid["module_manager"] = self.module_manager

        # Zum Zusammenbau der HTML-Seiten
        self.pagerender     = pagerender.pagerender( self.PyLucid )
# Allgemeine Funktion, um die Aktion zu starten

def PyLucid_action( PyLucid_objects ):
    # Aktion starten
    return sub_menu( PyLucid_objects ).generate()



if __name__ == "__main__":
    # Aufruf per <lucidFunction:IncludeRemote> vom lucidCMS (also die PHP-Version)
    sys.path.insert( 0, "../" )
    from PyLucid_system import SQL, sessiondata
    import config
    config.system.poormans_url ="X"
    print "Content-type: text/html\n"
    db_handler = SQL.db()
    config.readpreferences( db_handler )
    CGIdata = sessiondata.CGIdata( db_handler )
    MyMG = menugenerator( db_handler, CGIdata, config )
    print MyMG.generate()
    db_handler.close()










#_______________________________________________________________________
# Allgemeine Funktion, um die Aktion zu starten

def PyLucid_action( PyLucid_objects ):
    # Aktion starten
    return ListOfNewSides( PyLucid_objects ).make()


if __name__ == "__main__":
    # Lokaler Test
    from PyLucid_system import SQL, sessiondata
    import config

    db = SQL.db()
    config.readpreferences( db )

    PyLucid = {
        "CGIdata"   : sessiondata.CGIdata( db, config ),
        "db"        : db,
        "config"    : config,
    }
    print ListOfNewSides( PyLucid ).make()
    db.close()