commit f9b5ab4b1bb344bf261057770f55769b5ae396aa
Author: dsorber <david.sorber@gmail.com>
Date:   Thu Jul 31 17:52:37 2014 -0400

    Continuing to work on the web GUI a little at a time. A made an important modification to the way the controllers work so that you don't have to pass the template name into the controller instantiation in the .wsgi script and instead the template name is a parameter with a default value.

diff --git a/software/bookmark_library/bmklib/web/controllers/bookmark.py b/software/bookmark_library/bmklib/web/controllers/bookmark.py
new file mode 100644
index 0000000..ce2caf7
--- /dev/null
+++ b/software/bookmark_library/bmklib/web/controllers/bookmark.py
@@ -0,0 +1,19 @@
+import sqlite3
+
+from bmklib.lib.bookmark import Bookmark
+from bmklib.web.base_controller import BaseHTMLController, DB_PATH
+
+class BookmarkPageController(BaseHTMLController):
+    
+    def __init__(self, environ, template_name='bookmark.html'):
+        super(BookmarkPageController, self).__init__(environ, template_name)
+    
+    def build_content(self):
+        conn = sqlite3.connect(DB_PATH)
+        
+        db = conn.cursor()
+        db.execute("SELECT id FROM bookmarks WHERE deleted=0")
+        
+        bookmarks = [Bookmark(conn, id=row[0]) for row in db.fetchall()]
+        
+        self.content['bookmarks'] = bookmarks
diff --git a/software/bookmark_library/bmklib/web/htdocs/css/bmk_main.css b/software/bookmark_library/bmklib/web/htdocs/css/bmk_main.css
new file mode 100644
index 0000000..040bf49
--- /dev/null
+++ b/software/bookmark_library/bmklib/web/htdocs/css/bmk_main.css
@@ -0,0 +1,49 @@
+    body {
+        font-family: sans-serif;
+        font-size: 16px
+    }
+
+    h3 {
+        font-size: 24px;
+    }
+
+    table {
+        border: 1px solid #000;
+        border-spacing: 0px;
+        margin-left: auto;
+        margin-right: auto;
+    }
+
+    table a:link {
+        color: #000;
+        text-decoration: none;
+    }
+
+    table a:visited {
+        color: #000;
+        text-decoration: none;
+    }
+
+    table a:hover {
+        color: #000;
+        text-decoration: underline;
+    }
+
+    tr.even {
+        background-color: #FFF;
+    }
+
+    tr.odd {
+        background-color: #FFC;
+    }
+
+    th {
+        border: 1px solid #000;
+        padding: 10px;
+        border-spacing: 2px;
+    }
+
+    td {
+        border-top: 1px solid #000;
+        padding: 2px 5px;
+    }
diff --git a/software/bookmark_library/bmklib/web/templates/bookmark.html b/software/bookmark_library/bmklib/web/templates/bookmark.html
new file mode 100644
index 0000000..6eb8e61
--- /dev/null
+++ b/software/bookmark_library/bmklib/web/templates/bookmark.html
@@ -0,0 +1,21 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:py="http://genshi.edgewall.org/">
+<head>
+<title>Bookmark Library</title>
+<link rel="stylesheet" type="text/css" href="../htdocs/css/bmk_main.css"></link>
+</head>
+
+<body>
+<h1>Bookmarks</h1>
+
+<table>
+    <tr py:for="idx, bookmark in enumerate(bookmarks)" class="${idx % 2 == 1 and 'odd' or 'even'}">
+        <td>${bookmark.id}</td>
+        <td><a href="${bookmark.url}">${bookmark.title and bookmark.title or 'no title'}</a></td>
+        <td><py:for each="tag in bookmark.category_tags"><div class="tag">${tag.value}</div></py:for></td>
+        <td><py:for each="tag in bookmark.description_tags"><div class="tag">${tag.value}</div></py:for></td>
+    </tr>
+</table>
+
+</body>
+</html>
