Zope (ppt >4MB) - Nano-World

Werbung
Nano-World
The interdisciplinary Virtual
Laboratory on Nanoscience
Ein Projekt des Virtuellen Campus
T. Gyalog, M. Guggisberg, R. Schneider,
Ch. Freiburghaus, P. Fornaro, B. Willi
H. Burkhart, H.-J. Güntherodt
Universität Basel
Fachhochschule beider Basel
Scuola universitaria della svizzera italiana
Centre Suisse de Micro-technique et
d‘Electronique
Universität Bern
Universität Fribourg
Aufgaben des Portals
 Informations + Wissensverwaltung
 Aufgabenteilung
 Schnittstelle für neue Dienste
 Mehrsprachigkeit
 Hierarchie und verschiedener Berechtigungen
 Wartbarkeit (Backup, XML, usw.)
 Sicherheit
Server Software: Zope
http://www.zope.org
Installation
 Auf NT trivial
 Starten mit:start.bat
 Auschalten via Netz
Python
www.python.org
Zope
Module
Squis.dot
Funktions-Schema
JDK 1.2
Client
Web
Server
Servlet
Container
Database
Zope
Database
Objektstruktur von Zope
 Vererbung
 Dynamische HTML-
Generierung
 Globale
Layoutdefinition
www.nanoworld.unibas.ch
site_header
leftbox
body_de_html
rightbox
Layout & Mehrsprachigkeit
Eingabe Interface
Zentrale Änderung
Wartung
Inhalt eines Ordners
anzeigen
 <dtml-in expr="objectValues('Folder')">
 <li> <a href="&dtml-absolute_url;"><dtml-var title></a><br> </li>
 </dtml-in>
Erweiterung
 <dtml-if directory_items>


<dtml-in directory_items>
<li>

<A href="<dtml-var site_url ><dtml-var urlname>"><dtml-var
name></A></li>

</dtml-in>
<dtml-else>
<dtml-in expr="objectValues('Folder')">
<li>
<a href="&dtml-absolute_url;"><dtml-var title></a><br></li>
</dtml-in>
</dtml-if>






XML
Product XML Document
 Einfügen: Ein neues XML Dokument erstellen.
Das XML Dokument
ist somit in die Zope
Datenbank integriert
und kann mit eigenen
Funktionen
manipuliert werden
XML
Ausgabe
 Zope dtml-method
<dtml-var standard_html_header>
<h2>Q</h2>
<p><dtml-var "text_content('question')"></p>
<h2>A</h2>
<p><dtml-var "text_content('answer')"></p>
<dtml-var standard_html_footer>
XML
XML
Bsp. 2
 Alle Fragen anzeigen:
<dtml-var standard_html_header>
<h2><dtml-var "getAttribute('title')"></h2>
<dtml-in "getElementsByTagName('entry')">
<p><a href="<dtml-var absolute_url>/viewEntry">
<dtml-var "text_content('question')"></a></p>
</dtml-in>
<dtml-var standard_html_footer>
XML
Kommunikation
Mail, Fax, SMS
Kommunikation
Mail, Fax, SMS
Kommunikation
Mail, Fax, SMS
Kalender
dtml-calendar



















<dtml-calendar>
<dtml-call "setCalendar('valign','top')">
<dtml-let d="date.Date()"
hasdate="hasProperty(d)"
dprop="getProperty(d)">
<dtml-if "AUTHENTICATED_USER.getUserName()=='guggi'">
<a href="index_html/editCalPropForm?prop=<dtml-var d>&propval=<dtml-var dprop url_quote>">
<dtml-var "date.dd()">
</a>
<dtml-else>
<dtml-var "date.dd()">
</dtml-if>
<br>
<dtml-if "hasdate==1">
<dtml-var dprop>
</dtml-if>
</dtml-let>
</dtml-calendar>
Externe Methode
 Perl oder Python muss im Ordner Extension stehen
 Bsp: editCalendarProperty.py
 def editCalendarProperty(self,REQUEST,RESPONSE):





if ( self.hasProperty(REQUEST['prop']) ):
self.manage_changeProperties({ REQUEST['prop'] :
REQUEST['propval'] })
else:
self.manage_addProperty(REQUEST['prop'], REQUEST['propval'],
'string')
return REQUEST.RESPONSE.redirect(REQUEST['BASE2'])
Futur
 Authentication via SQL Databank
 User tracking
 RPC-XML
 Parsed XML
– Webtest (Semesterarbeit)
 Testen neuer Module
– Bsp. Meerkat news service
– Bsp. Portal Toolkit
REQUEST
<dtml-var "REQUEST">
Nur PC‘s
 <dtml-if "_.string.find(HTTP_USER_AGENT,'Win') == -1">
 <dtml-else>
Integration von
Flashobjekten
Flash
Formular zum Cookie setzen
 <FORM NAME="formular" METHOD="POST"




ACTION="report"><P>
Name: <INPUT TYPE="TEXT" NAME="qkey" SIZE=30
MAXLENGTH=30><BR>
Value: <INPUT TYPE="TEXT" NAME="qvalue" SIZE=30
MAXLENGTH=30><BR>
<INPUT TYPE="submit" VALUE="Submit">
</Form>
Formular auswerten
Cookie setzen
 <p>
 Das Cokie ist plaziert !!!
 <dtml-call "RESPONSE.setCookie(_['qkey'],_['qvalue'],
expires='Wed, 19 Feb 2020 14:26:00 GMT')">
 </p>
Cookie lesen
 <p>
 das Cokie heisst:<BR>
 <dtml-in expr="REQUEST.cookies.keys()">
 <dtml-var sequence-item> --> <dtml-var
expr="REQUEST.cookies.get(_['sequence-item'])"><br>
 </dtml-in>
 </p>
Variablen setzen
 <dtml-call "REQUEST.set('geprueft','')">
<dtml-in z-sqlmeth size=1>
<dtml-call "REQUEST.set('geprueft','ok')">
…..
 </dtml-in>
<dtml-if "geprueft!='ok'">
Externe Methoden
 save in Extension Folder of Zope
 def helloWorld(self):


""" hier kommt nur eine Ausgabe """
return 'Nano-World'
aus addlist
external method
 <dtml-var sayhello>
Python
 ganze, komplexe, Gleitkomma Zahlen
 Listen, Dictionaries (assoziative Felder)
 objektorientiert Klassen wie c++
 Exceptions
Class
 class Stadt(Gemeinde):
def __init__(self,name,seit):
Gemeinde.__init__(self,name)
self.stadtrecht=seit
def zieht_um(self, von, leute):
for mensch in leute:
von.zieht_aus(mensch)
self.zieht_ein(mensch)







 Berlin=Stadt(´Berlin´,1234);
Polimorph
 class Stadtstaat(Stadt, Land):


def __init__(self,name,seit, parlamentsgr):
Stadt.__init__(self,name,seit)
Land.__init__(self,parlamentsgr)
Herunterladen