grundlegender Ablauf ist fertig

Code muss noch gefuellt werden
Interface-Gestaltung fehlt
This commit is contained in:
lars 2008-06-09 02:29:18 +00:00
parent 4cc6b56519
commit 50111cf9d1
10 changed files with 239 additions and 42 deletions

View file

@ -4,10 +4,67 @@ from turbogears import controllers, expose, flash
# import logging # import logging
# log = logging.getLogger("fotokiste.controllers") # log = logging.getLogger("fotokiste.controllers")
class DummyPicture(object):
title = "leer"
url = "nichts"
import os
IMAGE_STORE = os.tempnam()
class Root(controllers.RootController): class Root(controllers.RootController):
@expose(template="fotokiste.templates.welcome")
def index(self): @expose(template="fotokiste.templates.start")
import time def index(self, **kargs):
# log.debug("Happy TurboGears Controller Responding For Duty")
flash("Your application is now running") # Bilder zufaellig aus der Datenbank auswaehlen
return dict(now=time.ctime()) # eine andere Funktion muss die Bilder ausliefern
gallery = []
for i in range(22):
obj = DummyPicture()
obj.title = "test%d" % i
obj.url = "URL: %d" % i
gallery.append(obj)
# alte Bild-Datei loeschen
if os.path.isfile(IMAGE_STORE):
os.unlink(IMAGE_STORE)
return { "gallery": gallery }
@expose(template="fotokiste.templates.ausloeser")
def ausloeser(self, **kargs):
flash("Das Bild wird in 5 Sekunden aufgenommen!")
return {}
@expose(template="fotokiste.templates.mailtext")
def mailtext(self, mailtext=None, already_stored="no", **kargs):
# mailtext filtern
# "already_stored" filtern
if already_stored != "no":
already_stored = "yes"
return {
"mailtext": mailtext,
"already_stored": already_stored,
}
@expose(template="fotokiste.templates.senden")
def senden(self, mailaddress=None, mailtext=None, already_stored=False, **kargs):
# Bild speichern, falls "already_stored" falsch ist
# Mail versenden
# mailaddress filtern
# mailtext filtern
# das Bild wurde gerade gespeichert
already_stored = "yes"
return {
"mailaddress": mailaddress,
"mailtext": mailtext,
"already_stored": already_stored,
}

View file

@ -11,10 +11,11 @@ from sqlobject import StringCol, UnicodeCol, IntCol, DateTimeCol
__connection__ = hub = PackageHub('fotokiste') __connection__ = hub = PackageHub('fotokiste')
# your data model
class Picture(SQLObject):
adresse = UnicodeCol()
# class YourDataClass(SQLObject): text = UnicodeCol()
# pass date = DateTimeCol()
picture = BLOBCol()

View file

@ -16,9 +16,9 @@ tr.odd td {background-color:#edf3fe;}
tr.even td {background-color:#fff;} tr.even td {background-color:#fff;}
#header { #header {
height: 80px; height: 100px;
width: 777px; width: 770px;
background: blue URL('../images/header_inner.png') no-repeat; background: blue URL('../images/header_glasmensch.gif') no-repeat;
border-left: 1px solid #aaa; border-left: 1px solid #aaa;
border-right: 1px solid #aaa; border-right: 1px solid #aaa;
margin: 0 auto 0 auto; margin: 0 auto 0 auto;
@ -59,7 +59,7 @@ a.link, a, a.active {
padding-left: 0; padding-left: 0;
} }
h1,h2,h3,h4,h5,h6,#getting_started_steps { h1,h2,h3,h4,h5,h6 {
font-family: "Century Schoolbook L", Georgia, serif; font-family: "Century Schoolbook L", Georgia, serif;
font-weight: bold; font-weight: bold;
} }
@ -68,28 +68,8 @@ h2 {
font-size: 150%; font-size: 150%;
} }
#getting_started_steps a {
text-decoration: none;
}
#getting_started_steps a:hover {
text-decoration: underline;
}
#getting_started_steps li {
font-size: 80%;
margin-bottom: 0.5em;
}
#getting_started_steps h2 {
font-size: 120%;
}
#getting_started_steps p {
font: 100% "Lucida Grande", "Lucida Sans Unicode", geneva, verdana, sans-serif;
}
#footer { #footer {
clear: both;
border: 1px solid #aaa; border: 1px solid #aaa;
border-top: 0px none; border-top: 0px none;
color: #999; color: #999;
@ -131,4 +111,29 @@ span.code {
.fielderror { .fielderror {
color: red; color: red;
font-weight: bold; font-weight: bold;
} }
#gallery {
clear: both;
margin: 20px;
}
#live_pic {
float: left;
margin: 20px;
}
#shoot_pic {
text-align: center;
}
#mail_pic {
float: left;
margin: 10px;
}
#mail_info {
float: left;
margin: 20px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View file

@ -0,0 +1,19 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
py:extends="'master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<meta http-equiv="refresh" content="5;URL=${tg.url('/mailtext')}" />
<title>K&auml;&auml;&auml;&auml;&auml;&auml;&auml;sekuchen!</title>
</head>
<body>
<div id="shoot_pic">
<p><img width="300" height="384"
src="${tg.url('/static/images/platzhalter.jpg')}"
alt="shoot_pic" /></p>
</div>
</body>
</html>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
py:extends="'master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>Bild versenden</title>
</head>
<body>
<div id="mail_pic">
<p><img width="200px" height="256px"
src="${tg.url('/static/images/platzhalter.jpg')}"
alt="Versende-Bild" /></p>
</div>
<div id="mail_info">
<form action="${tg.url('/senden')}">
<label for="mailaddress">An:</label>
<input type="textfield" id="mailaddress"
name="mailaddress" size="30" />
<br/>
<label for="mailtext">Text:</label>
<textarea name="mailtext" id="mailtext"
rows="10" cols="40" wrap="physical">${mailtext}</textarea>
<br/>
<input type="submit" name="senden" value="senden" />
</form>
</div>
</body>
</html>

View file

@ -39,11 +39,15 @@
</div> </div>
<div id="footer"> <div id="footer">
<img src="${tg.url('/static/images/under_the_hood_blue.png')}" <!-- TODO: logo <img src="${tg.url('/static/images/logo.png')}"
alt="TurboGears under the hood" /> alt="sense.lab e.V." /> -->
<p>TurboGears is a open source front-to-back web development framework <p>Die Fotokiste ist ein Projekt von <a href="http://senselab.org"
written in Python</p> alt="sense.lab-Webseite">sense.lab e.V.</a>.</p>
<p>Copyright &#169; 2007 Kevin Dangoor</p> <p>Diese Webseiten k&ouml;nnen unter den Bedingungen der<br/>
<a href="http://creativecommons.org/licenses/by-sa/2.5/"
alt="Creative-Commans-Lizenz by-sa v2.5">Creative-Commons-Lizenz:
Namensnennung-Weitergabe unter gleichen Bedingungen</a>
wiederverwendet werden.</p>
</div> </div>
</body> </body>

View file

@ -0,0 +1,29 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
py:extends="'master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>K&auml;&auml;&auml;&auml;&auml;&auml;&auml;sekuchen!</title>
</head>
<body>
<div id="mail_pic">
<p><img width="300" height="384"
src="${tg.url('/static/images/platzhalter.jpg')}"
alt="versendetes Bild" /></p>
</div>
<div id="mail_info">
<form action="${tg.url('/mailtext')}">
<input type="hidden" name="mailtext" value="${mailtext}" />
<input type="hidden" name="already_stored" value="${already_stored}" />
<input type="submit" name="send" value="Erneut versenden" />
</form>
<form action="${tg.url('/')}">
<input type="submit" name="send" value="Fertig" />
</form>
</div>
</body>
</html>

View file

@ -0,0 +1,50 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
py:extends="'master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>Willkommen in der Fotokiste!</title>
</head>
<body>
<table>
<tr>
<td>
<div id="live_pic">
<p><img width="200" height="256"
src="${tg.url('/static/images/platzhalter.jpg')}"
alt="beispiel" /></p>
</div>
</td>
<td valign="center">
<!-- TODO: einfach nur ein weiterfuehrendes Icon - kein Formular -->
<form action="${tg.url('/ausloeser')}">
<input type="submit" value="Bild senden" />
</form>
</td>
</tr>
</table>
<div id="gallery">
<!-- see http://www.kid-templating.org/trac/wiki/GenerateTableFromListRecipe -->
<?python i= iter(gallery); rows= map(None, i, i, i, i, i, i, i, i, i, i, i) ?>
<table>
<tr py:for="row in rows">
<td py:for="picture in row">
<img py:if="picture" py:strip="False"
title="${picture.title}" width="50" height="64"
src="${tg.url('/static/images/platzhalter.jpg')}"
TODO="${picture.url}" />
</td>
</tr>
</table>
</div>
<div>
<div class="notice">Falls du Fragen zur FotoKiste hast, dann schau mal auf die
<a href="http://glasmensch.org/fotokiste">Webseite</a> oder schreib eine Mail
an <a href="mailto:fotokiste@glasmensch.org">fotokiste@glasmensch.org</a>.
</div>
</div>
</body>
</html>