Pallial

Pallial: Funktionen für HTML

Artikel verfasst von: Author, die letzte Änderung war am 18.11.2009 @ 00:00 .

Hier werden die Funktionen aus der Datei /cone/pallial/jinja2/default.py erklärt. Diese können in den Dateien aufgerufen werden, die von Jinja2 geparst werden, sprich: in erster Linie alle Dateien, die unter /html/ liegen. Wenn weitere Templatepfade, wie z.B. Mobil angelegt wurden klappt es in den Dateien natürlich auch …

Umgebungsvariablen
Datetime ()
Liefert ein Python Dateobjekt zurück.
Bsp:
{%- set dateObj = datetime.fromtimestamp (unixtime) -%}
{%- print dateObj.strftime("%d.%m.%Y").decode('utf-8') -%}

Dtformat ()
Ermöglicht es, ohne den Umweg über Datetime() eine Unix-Time zu formatieren.
Die Angabe eines Formatstrings ist optional. Siehe http://docs.python.org/library/datetime.html#strftime-strptime-behavior für mögliche Parameter.
Bsp:
{{ skel.creationdate|dtformat("%d.%m.%Y") }}

requestParams ()
Liefert ein Dictionary mit allen Parametern, die von Browser als Teil der URL (?name=value) oder im POST-Verfahren übergeben wurden. Diese wurden nicht verändert und können potentiell gefährliche Daten enthalten, und dürfen deshalb nie ungeprüft verwendet werden! Im Fall von Ausgaben, die per execRequest genertiert werden, enthält dieses Dictionary alle Parameter die execRequest übergeben wurden. Die Orginalparameter sind in diesem Fall über den Schüssel "__outer" zu erreichen.
Bsp:
{%- set request = requestParams () -%}
{% if "opengallery" in requestParams() %} onload="displaydialog_gallery('{{requestParams()["opengallery"]|string|truncate(6,True,"")}}'); return false"
{% endif %}

getUserID ()
gibt die id des Benutzers aus.
{%- set loggedUserSkel = False -%}
{%- if getUserID() -%}
{%- set loggedUserSkel = getEntry (modul="user", skel="viewSkel", id=getUserID()) -%}
{%- endif -%}

setSession ()
Einen Wert in das Sessionobjekt schreiben
{%- do setSession("CityID",execRequest ("get_city_id") )  -%}

getSession ()
Das Sessionobjekt bekommen.
{%- set session = getSession() -%}


Daten und Datenstrukturen

getSkel
Liefert ein Objekt zurück, aus dem hervor geht, wie die Datenstrukturen eines Skeletons aussehen. Es werden dabei selbst keine Daten aus der Datenbank abgefragt.
{% set constructionskel = getSkel (modul="user", skel="viewSkel") %}
{%- for bone_name,bone in constructionskel -%}
{% if not bone %}
{% continue %}
{% endif %}
{% if bone.type == "selectone" %}
{% if renderOneselectbone(skel[bone_name],bone.values)!="" %}
{{renderOneselectbone(skel[bone_name],bone.values)}}
{% endif %}
{% endif %}


fetchList
erzeugt ein Array in dem das Ergebnis einer Datenbankabfrage steht.
Jedes Objekt in diesem Array ist ein Skeleton, welcher wiederum aus Bones besteht.
{% set list = fetchList("page",**{"category":"partner","orderby":"name"}) %}
{% for skel in list %}
<a href="/page/view/{{ skel.name }}"><span {% if activemenu==skel.id|string %}style="font-weight: bold;"{% endif %} >{{ skel.name }}</span></a>
{% endfor %}

getEntry
Besorgt einen Eintrag au seiner Datenbanktabelle als Skeleton.
{%- if getUserID() -%}
{%- set loggedUserSkel = getEntry (modul="user", skel="viewSkel", id=getUserID()) -%}
{%- endif -%}
Eingeloggt als: {{loggedUserSkel.firstname}} {{loggedUserSkel.lastname}}


Spezielles

getSecurityKey
Mit diesem Aufruf wird ein neuer Securitygey in der Securitykey Datenbanktabelle erzeugt. Dieser wird später bei einer Aktion überprüft, die diesen Key vorraussetzt. Beispiel das ausloggen:
<a href="/mobile/user/logout?skey={{getSecurityKey()}}">Logout</a>

getPages
vereinfacht das generieren von Seitenzahlen.
Seite: {% for page in getPages(skellist) %} <a href="{{ page }}">{{ loop.index }}</a> {% endfor %}</center>

execRequest
Diese Funktion ist eine der interessantesten in Cone, sie ermöglicht Requests im Template zu starten und das Ergebnis in einer Templatevariablen zu speichern. Es kann aber nicht nur der generierte html-Code als String in der Variablen stehen, sondern es ist auch möglich jegliche Art von Objekten zurückzuliefern. Des Weiteren ist es Möglich mit Hilfe dieser Funktionen Bereiche einer Webseite vorgeneriert im Arbeitsspeicher zu cachen. Dies ist vor allem sinnvoll, wenn man Objekte auf der Webseite platziert, die nicht der Hauptcontent sind und z.B. eine Blättern-Funktion unterstützen sollen. Diese werden nur als Html-Schnipsel im Modul generiert. Über execrequest ruft man dieses Modul auf und baut es damit in die Webseite ein. Soll dann geblättert werden kann das Modul über Ajax angesprochen werden und generiert dann wieder einen Html-Schnipsel der gegen den alten in der Seite ausgetauscht wird, ohne dass das Modul unterscheiden muss, wie es aufgerufen wird.

Beispiel:
{% print execRequest ("user/login",[],{"style":"part"}) %}
Hier wird das Login-Formular ausgegeben. Achtung bei den Formularen darf keine Cachetime angegeben werden, da jedes Formular einen Securitykey enthält. Da der Login nur als Codeschnipsel in der Webseite eingebettet werden soll, übergibt man noch die Variable style=part.

Beispiel:
{% print execRequest ("user/list",[],{"amount":"8","orderby":"random,"avatar$ex":"1","cachetime":600}) %}
Hier sollen in der Webseite zufällige Avatarbilder von Benutzern eingebunden werden. Alle 600 Sekunden wird der Abschnitt neu generiert. Alle Nutzer der Webseite erhalten also alle 600 Sekunden den gleichen neuen Content. Der generierte Codeschnipsel könnte jetzt einen Link enthalten „Weitere anzeigen“ der einen Ajaxrequest startet der erneut die user/list funktion mit den gleichen Parametern ausführt. In diesem Fall wäre die Cachtime umgangen, da der Request nun vom Client-Browser ausgeführt wird. Dem Benutzer würden also neue Avatarbilder geliefert.

Kommentieren

Hinzufügen

Dein Name*
Deine E-Mail*
Text*
Spamschutz*



Alle mit einem (*) gekennzeichneten Felder sind Pflichfelder.


Weitere Artikel der Kategorie: Pallial