Nano-World The interdisciplinary Virtual Laboratory on Nanoscience Ein Projekt des Virtuellen Campus...

Preview:

Citation preview

Nano-WorldThe 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 BaselFachhochschule beider BaselScuola universitaria della svizzera italiana

Centre Suisse de Micro-technique et d‘ElectroniqueUniversität BernUniversitä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: Zopehttp://www.zope.org

Installation

Auf NT trivial Starten mit:start.bat Auschalten via NetzPythonwww.python.org Zope

ModuleSquis.dot

Funktions-Schema

Database

Database

Zope

Client Web

Server

Servlet

Container

JDK 1.2

Objektstruktur von Zope

Vererbung Dynamische HTML-

Generierung Globale

Layoutdefinition

www.nanoworld.unibas.ch

site_header

body_de_htmlrightbox

leftbox

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>

XMLProduct 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

XMLAusgabe

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

XMLBsp. 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 addlistexternal 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)

Recommended