| @@ -0,0 +1,3 @@ | |||
| gAN9cQAoWAoAAABzZXNzaW9uX2lkcQFYKAAAADRhN2E2OWYxZDA1MTRhNTE1NjAwOTQwYjc3MDg0 | |||
| MDc4YTc4MjM5ZmRxAlgIAAAAdXNlcm5hbWVxA1gBAAAAYXEEWAIAAABpcHEFWAkAAAAxMjcuMC4w | |||
| LjFxBnUu | |||
| @@ -1,7 +1,8 @@ | |||
| body { | |||
| background-color: lightblue; | |||
| display: flex; /* or inline-flex */ | |||
| flex-direction: column | |||
| flex-direction: column; | |||
| margin: 0; | |||
| } | |||
| h1 { | |||
| @@ -10,4 +11,40 @@ h1 { | |||
| img { | |||
| margin: auto; | |||
| } | |||
| nav { | |||
| margin-bottom: 10px; | |||
| } | |||
| nav li { | |||
| float: left; | |||
| } | |||
| nav li a { | |||
| display: block; | |||
| color: white; | |||
| text-align: center; | |||
| padding: 20px 16px; | |||
| text-decoration: none; | |||
| } | |||
| nav li a:hover { | |||
| background-color: lightskyblue; | |||
| } | |||
| nav ul { | |||
| list-style-type: none; | |||
| margin: 0; | |||
| padding: 0; | |||
| overflow: hidden; | |||
| background-color: gray; | |||
| } | |||
| #title { | |||
| display: block; | |||
| color: white; | |||
| text-align: center; | |||
| padding: 14px 16px; | |||
| text-decoration: none; | |||
| } | |||
| @@ -1,4 +1,4 @@ | |||
| $def with (entries, guestbook_form) | |||
| $def with (nav, entries, guestbook_form) | |||
| <head> | |||
| <title>Friends</title> | |||
| @@ -8,6 +8,9 @@ $def with (entries, guestbook_form) | |||
| </head> | |||
| <body> | |||
| $:nav | |||
| <h1>Guestbook</h1> | |||
| <ul> | |||
| $for entry in entries: | |||
| @@ -23,6 +26,5 @@ $def with (entries, guestbook_form) | |||
| $:guestbook_form.render() | |||
| </form> | |||
| <br> | |||
| <a href="/">Home</a> | |||
| </body> | |||
| </body> | |||
| @@ -1,4 +1,4 @@ | |||
| $def with (nav) | |||
| <head> | |||
| <title>Beelance2</title> | |||
| <meta charset="utf-8"> | |||
| @@ -8,16 +8,10 @@ | |||
| <body> | |||
| <h1>Beelance2</h1> | |||
| <img src="static/honeybee.png" alt="Honeybee"> | |||
| $:nav | |||
| <br> | |||
| <br> | |||
| <a href="register"> - Register!</a> | |||
| <br> | |||
| <a href="guestbook">- Guestbook</a> | |||
| <img src="static/honeybee.png" alt="Honeybee"> | |||
| </body> | |||
| @@ -1,16 +1,28 @@ | |||
| $def with (login_form, friends) | |||
| $def with (nav, login_form, friends) | |||
| <h3>Log In</h3> | |||
| <form method="POST"> | |||
| $:login_form.render() | |||
| </form> | |||
| <head> | |||
| <title>Beelance2</title> | |||
| <meta charset="utf-8"> | |||
| <link rel="stylesheet" type="text/css" href="static/stylesheet.css"> | |||
| $if session.username: | |||
| <h1>Logged in as $session.username</h1> | |||
| <a href="logout">Logout</a> | |||
| </head> | |||
| <h3>Registered friends:</h3> | |||
| <ul> | |||
| $for user in friends: | |||
| <li id="user[0]">$user[1]</li> | |||
| </ul> | |||
| <body> | |||
| $:nav | |||
| <h3>Log In</h3> | |||
| <form method="POST"> | |||
| $:login_form.render() | |||
| </form> | |||
| $if session.username: | |||
| <h1>Logged in as $session.username</h1> | |||
| <h3>Registered friends:</h3> | |||
| <ul> | |||
| $for user in friends: | |||
| <li id="user[0]">$user[1]</li> | |||
| </ul> | |||
| </body> | |||
| @@ -1,4 +1,4 @@ | |||
| $def with (register_form) | |||
| $def with (nav, register_form) | |||
| <head> | |||
| <title>Friends</title> | |||
| @@ -8,6 +8,9 @@ $def with (register_form) | |||
| </head> | |||
| <body> | |||
| $:nav | |||
| <h2>Become a friend!</h2> | |||
| <form method="POST"> | |||
| $:register_form.render() | |||
| @@ -0,0 +1,15 @@ | |||
| def get_nav_bar(session): | |||
| result = '<nav>' | |||
| result += ' <ul>' | |||
| result += ' <li><h1 id="title">Beelance2</h1></li>' | |||
| result += ' <li><a href="/">Home</a></li>' | |||
| if session.username: | |||
| result += ' <li><a href="logout">Logout</a></li>' | |||
| else: | |||
| result += ' <li><a href="register">Register</a></li>' | |||
| result += ' <li><a href="login">Login</a></li>' | |||
| result += ' <li><a href="guestbook">Guestbook</a></li>' | |||
| result += ' </ul>' | |||
| result += '</nav>' | |||
| return result | |||
| @@ -1,6 +1,7 @@ | |||
| import web | |||
| from forms import login_form, register_form, guestbook_form | |||
| import model | |||
| from utils import get_nav_bar | |||
| # Define application routes | |||
| urls = ( | |||
| @@ -27,11 +28,14 @@ else: | |||
| # Add session to global variables | |||
| render._add_global(session, 'session') | |||
| class Index(): | |||
| # Get main page | |||
| def GET(self): | |||
| return render.index() | |||
| nav = get_nav_bar(session) | |||
| return render.index(nav) | |||
| class Login(): | |||
| @@ -41,7 +45,8 @@ class Login(): | |||
| friends = model.get_users() | |||
| else: | |||
| friends = [[],[]] | |||
| return render.login(login_form, friends) | |||
| nav = get_nav_bar(session) | |||
| return render.login(nav, login_form, friends) | |||
| # Log In | |||
| def POST(self): | |||
| @@ -54,19 +59,21 @@ class Login(): | |||
| session.username = data.username | |||
| else: | |||
| friends = [[],[]] | |||
| return render.login(login_form, friends) | |||
| nav = get_nav_bar(session) | |||
| return render.login(nav, login_form, friends) | |||
| class Register: | |||
| # Get the registration form | |||
| def GET(self): | |||
| return render.register(register_form) | |||
| nav = get_nav_bar(session) | |||
| return render.register(nav, register_form) | |||
| # Register new user in database | |||
| def POST(self): | |||
| data = web.input() | |||
| model.set_user(data.username, data.password) | |||
| model.set_user(nav, data.username, data.password) | |||
| raise web.seeother('/') | |||
| @@ -75,7 +82,8 @@ class Guestbook: | |||
| # Get guestbook entries | |||
| def GET(self): | |||
| entries = model.get_guestbook_entries() | |||
| return render.guestbook(entries, guestbook_form) | |||
| nav = get_nav_bar(session) | |||
| return render.guestbook(nav, entries, guestbook_form) | |||
| def POST(self): | |||
| data = web.input() | |||