Jedes Modul kann zusätzliche Funktionen aufweisen, die eforia direkt aufrufen kann. Der Sinn ist z.B. einen Linkchecker im Modul unterzubringen, der direkt vom eforia®-System aufgerufen werden kann. Das ist dann notwendig, wenn das Modul selbst Links in einer Datenbank speichert, von der das Gesamtsystem nichts weiss. Diese Prozeduren müssen sich in jedem Modul befinden:

cmsHasFunction
procedure cmsHasFunction(cFunction:STRING):BYTE

Beschreibung:

Welche Funktionen ein Modul besitzt, kann über cmsHasFunction abgefragt werden.

Parameter:
cFunction : STRING : Welche Funktion soll abgefragt werden

Rückgabe:
BYTE : 0 = False, wenn die Funktion nicht vorhanden ist
             1 = True, wenn die Funktion vorhanden ist

Beispiel:
procedure cmsHasFunction(cFunction:STRING):BYTE
  var nRet : BYTE := 0
  if cFunction="Linkcheck_Extern"
    nRet:=1
  end
  Return nRet
endproc

Hinweis:

Die Prozedur muss in jedem Modul vorhanden sein.
In der Unit cms_sub ist die Funktion bereits vorbereitet.


cmsListFunctions
procedure cmsListFunctions(cRamtext:STRING)

Beschreibung:

Liefert eine Liste aller Funktionen.

Parameter:
cRamtext : STRING : In diesem ramtext wird das Ergebnis zurückgeliefert

Rückgabe:
ramtext : im Übergebenen ramtext wird eine Liste der Funktionen zurückgeliefert. Diese hat pro Zeile eine Funktion.
Der Aufbau: Funktionsname,Show,Interface,weitere_Infos
Show gibt dabei wie bei cmsShowModule an, wo die Funktion angezeigt wird. Bisher ist nur Leerstring oder tool sinnvoll. Interface gibt das Interface wie bei cmsFunctionInterface an.

Beispiel:
procedure cmsListFunctions(cRamtext:STRING)
  var fh : INTEGER
  fh:=ReWrite(cRamtext)
  if fh>0
    WriteLn(fh,'Linkcheck_Extern,tool,simple_show_output, Version 1.1 vom 23.8.01 / Horst Klier')
    Close(fh)
  end
endproc

Hinweis:

Die Prozedur muss in jedem Modul vorhanden sein.
In der Unit cms_sub ist die Funktion bereits vorbereitet.


cmsFunctionInterface
procedure cmsFunctionInterface(cFunction:STRING):STRING

Beschreibung:

Liefert einen String. Dieser String gibt an, wie die Funktion aufgerufen wird.

Parameter:
cFunction : STRING : Welche Funktion soll abgefragt werden

Rückgabe:
    (Leerstring) - Funktion nicht vorhanden
no_interface - Die Funktion wird per Execmacro ohne Parameter aufgerufen und liefert nichts zurück.
simple_show_output - Die Funktion wird per Execmacro mit cRamtext als Parameter aufgerufen. In diesem Ramtext liefert sie eine Ausgabe (HTML-Text), die das System anzeigen soll.
own_window - Das System öffnet ein neues Fenster und startet dort das Programm mit der Funktion als Parameter in der URL.
Beispiel: ../custprg/test.prg?function=test4newwindow
Das Modul muss entsprechend eine Main-Prozedur enthalten, die den Parameter auswertet. Das ist in der Unit cms_sub breits vorbereitet.
return_ramtext - Die Funktion wird per Execmacro mit cRamtext als Parameter aufgerufen. In diesem Ramtext liefert sie eine Ausgabe, die das System auswertet. Wie diese Auswertung auszusehen hat, hängt von der Funktion ab. Es werden später spezielle Funktionen definiert, die das benutzen.

Hinweis:
Die Prozedur muss in jedem Modul vorhanden sein.
In der Unit cms_sub ist die Funktion bereits vorbereitet.


cmsShowFunction

procedure cmsShowFunction(cFunction:STRING):STRING

Beschreibung:

Liefert einen String, der angibt wo die Funktion angezeigt werden soll.

Parameter:
cFunction : STRING : Welche Funktion soll abgefragt werden

Rückgabe:
    (Leerstring) - Funktion nicht anzeigen
tool - Funktion auf der Toolseite anbieten

Hinweis:
Die Prozedur muss in jedem Modul vorhanden sein.
In der Unit cms_sub ist die Funktion bereits vorbereitet.  


Funktionen im Modul

Wenn ein Modul eine Funktion bereitstellen will, sind 2 Bedingungen zu erfüllen:
1. Die Funktion ist in der Liste, die cmsListFunctions liefert und wird bei cmsHasFunction als True (1) zurück geliefert.
2. Die Funktion ist auch wirklich im Modul vorhanden.

no_interface

Hat ein Modul z.B. die Funktion Linkcheck_Intern definiert, und diese soll über no_interface aufgerufen werden, muss eine Prozedur cmsLinkcheck_Intern vorhanden sein.
Diese ist so zu definieren:
procedure cmsLinkcheck_Intern

Das System ruft diese per Execmacro auf.
Parameterübergabe/Rückmeldung findet nicht statt.

own_window

Hat ein Modul z.B. die Funktion Linkcheck_Intern definiert, und diese soll über own_window aufgerufen werden, muss eine Prozedur Main vorhanden sein, die auf den Query-String function=Linkcheck_Intern reagiert.
Das System startet das Modul in einem neuen Bowserfenster und gibt die Session mit.
Beispiel:
Das Modul ist test.prg; die Session abc;
Es wird ein neues Browserfenster geöffnet mit der URL:
../custprg.prg?ses=abc&function=Linkcheck_Intern
Hinweis: Das Modul muss anhand der Session feststellen, ob der User berechtigt ist, es auszuführen. Dabei hilft die Routine cms_CheckRecht in der Unit cms_sub.

simple_show_output

Hat ein Modul z.B. die Funktion Linkcheck_Intern definiert, und diese soll über simple_show_output aufgerufen werden, muss eine Prozedur cmsLinkcheck_Intern vorhanden sein.
Diese ist so zu definieren:
procedure cmsLinkcheck_Intern(cRamtext:STRING)
Das System ruft diese per Execmacro auf. Über den übergebenen cRamtext findet die Rückmeldung statt. Die Ausgabe der Funktion wird in dem Ramtext abgestellt.
In unserem Beispiel würde also der Linkchecker seine Ausgabe in den Ramtext, der in cRamtext übergeben wird, machen.
Das System zeigt diese Ausgabe am Bildschirm an.

return_ramtext

Hat ein Modul die Funktion Linkcheck_Intern definiert, und diese soll über return_ramtext aufgerufen werden, muss eine Prozedur cmsLinkcheck_Intern vorhanden sein.
Diese ist so zu definieren:
procedure cmsLinkcheck_Intern(cRamtext:STRING)
Das System ruft diese per Execmacro auf. Über den übergebenen cRamtext findet die Rückmeldung statt. Die Ausgabe der Funktion wird in dem Ramtext abgestellt. In unserem Beispiel würde also der Linkchecker seine Ausgabe in den Ramtext, der in cRamtext übergeben wird, machen.
Das System kann mit dieser Ausgabe direkt etwas anfangen und wertet sie intern aus. Das ist bei bestimmten, vordefinierten Funktionen möglich.
eforia® web manager Dokumentation
Stand V 3.01 / 20.12.2010
© Horst Klier
http://www.klier.net
Impressum