A lot of fix again, for folder view, bookmark editing and removal
authorfabien@tzone.org
Wed, 31 Dec 2008 16:26:22 -0500
changeset 75 4f6b7b48322f
parent 74 6784c4350b41
child 76 147eddb3826c
A lot of fix again, for folder view, bookmark editing and removal and some error handling.
lib/actions/bookmark.py
lib/actions/folder.py
lib/my_db.py
templates/add_bk.tmpl
templates/add_confirm.tmpl
templates/folders.tmpl
templates/inc/bkmarks.tmpl
--- a/lib/actions/bookmark.py	Wed Dec 31 15:41:32 2008 -0500
+++ b/lib/actions/bookmark.py	Wed Dec 31 16:26:22 2008 -0500
@@ -40,17 +40,24 @@
 
 def edit(db, prefs, form, id):
     name = url = ""
-    if form.has_key("ctitle"):
-        name = form["ctitle"].value
-    if form.has_key("curl"):
-        url = form["curl"].value
+    bk = Bookmark()
+    selected_kws = []
+    if (id != -1):
+    	bks = db.get_bookmarks([id])
+	if len(bks) > 0:
+		bk = bks[0]
+		(selected_kws, kwnames) = apply(zip,db.get_keywords([id]))
+    if form.has_key("name"):
+        bk.name = form["name"].value
+    if form.has_key("url"):
+        bk.url = form["url"].value
     kw = db.get_all_keywords()[1:]
     kw.sort(lambda l,r: cmp(l[1],r[1]))
     kw = map(lambda elem: {
          'id' : elem[0],
          'keyword' : elem[1],
-         'checked' : 0 }, kw)
-    print_edit(id, kw, name, url, prefs)
+         'checked' : elem[0] in selected_kws }, kw)
+    print_edit(prefs, bk, kw)
 
 def confirm(step, bk, kw, prefs):
     tmpl = Template("add_confirm.tmpl", prefs)
@@ -68,24 +75,29 @@
     tmpl.set("desc", bk.desc)
     print tmpl.process()
 
-def print_edit(id, keywords, title, url, prefs):
+def print_edit(prefs, bk, keywords):
     tmpl = Template("add_bk.tmpl", prefs)
-    tmpl.set('ctitle', title)
-    tmpl.set('curl', url)
-    tmpl.set('desc', '')
-    tmpl.set('bkid', id)
+    tmpl.set('name', bk.name)
+    tmpl.set('url', bk.url)
+    tmpl.set('desc', bk.desc)
+    tmpl.set('bkid', bk.id)
     tmpl.set('Keywords', keywords)
     print tmpl.process()
 
-def update_bookmark(db, form):
+def execute(db, form):
 	bk = get_bk_from_form(form)
 	id = bk.id
-	if (bk.id == -1):
-		id = db.add_bookmark(bk)
-	else:
-		db.update_bookmark(bk)
-	kw = add_unique_keywords(db, get_unique_keywords(form, db))
-	db.update_keywords(id, kw.values())
+	execution = form['execute'].value
+	if execution == 'delete':
+		if id != -1:
+			db.remove_bookmark(id)
+	elif execution == 'update':
+		if (bk.id == -1):
+			id = db.add_bookmark(bk)
+		else:
+			db.update_bookmark(bk)
+		kw = add_unique_keywords(db, get_unique_keywords(form, db))
+		db.update_keywords(id, kw.values())
 
 def do_it(action, db, prefs, form):
         if form.has_key('id'):
@@ -99,8 +111,8 @@
         if step == 'edit':
                 edit(db, prefs, form, id)
 	elif step == 'confirm':
-		update_bookmark(db, form)
-                load_index(db, prefs, form, "result", "Bookmark update")
+		execute(db, form)
+                load_index(db, prefs, form, "result", "Bookmark " + form['execute'].value)
         elif step == 'cancel' or (action == 'delete' and id == -1):
                 load_index(db, prefs, form, "err", "Operation cancel")
         else:
--- a/lib/actions/folder.py	Wed Dec 31 15:41:32 2008 -0500
+++ b/lib/actions/folder.py	Wed Dec 31 16:26:22 2008 -0500
@@ -4,7 +4,7 @@
 def add_folder(db, form):
 	keyword = int(form['selection'].value)
 	parent = 0
-	if (form.has_key('folder'):
+	if form.has_key('folder'):
 		parent = int(form['folder'].value)
 	db.add_folder(keyword, parent)
 
--- a/lib/my_db.py	Wed Dec 31 15:41:32 2008 -0500
+++ b/lib/my_db.py	Wed Dec 31 16:26:22 2008 -0500
@@ -277,6 +277,8 @@
 		return res
 	def map_keywords(self, kws):
 		"""Return a dictionnary of keywords and their ids."""
+		if len(kws) == 0:
+			return {}
 		qry = """SELECT k.id, k.name
 			FROM keywords k
 			WHERE k.userid = %d """ % self.userid
--- a/templates/add_bk.tmpl	Wed Dec 31 15:41:32 2008 -0500
+++ b/templates/add_bk.tmpl	Wed Dec 31 16:26:22 2008 -0500
@@ -7,9 +7,9 @@
       <fieldset class="bookmark">
         <input type="hidden" name="id" value="<TMPL_VAR bkid>"/>
         <label>Nom: <input type="text" name="name"
-	  value="<TMPL_VAR ctitle>"/></label><br/>
+	  value="<TMPL_VAR name>"/></label><br/>
         <label>URL: <input type="text" name="url"
-	  value="<TMPL_VAR curl>"/></label><br/>
+	  value="<TMPL_VAR url>"/></label><br/>
         <label for="desc">Description: </label><br/>
         <textarea name="desc" rows="5" cols="40"><TMPL_VAR desc></textarea>
       </fieldset>
--- a/templates/add_confirm.tmpl	Wed Dec 31 15:41:32 2008 -0500
+++ b/templates/add_confirm.tmpl	Wed Dec 31 16:26:22 2008 -0500
@@ -7,6 +7,7 @@
       <fieldset>
         <legend>Bookmark</legend>
 	<input type="hidden" name="action" value="bookmark"/>
+	<input type="hidden" name="execute" value="<TMPL_VAR step>"/>
 	<input type="hidden" name="id" value="<TMPL_VAR id>"/>
 	<input type="hidden" name="name" value="<TMPL_VAR name>"/>
 	<input type="hidden" name="url" value="<TMPL_VAR url>"/>
--- a/templates/folders.tmpl	Wed Dec 31 15:41:32 2008 -0500
+++ b/templates/folders.tmpl	Wed Dec 31 16:26:22 2008 -0500
@@ -34,9 +34,9 @@
       <input type="hidden" name="action" value="folder"/>
       <input type="hidden" name="view" value="folder"/>
       <input type="hidden" name="folder" value="<TMPL_VAR folder>"/>
-	<select name="sel" size="1">
+	<select name="selection" size="1">
 	<TMPL_LOOP Keywords>
-	  <option name="selection" value="<TMPL_VAR id>"
+	  <option value="<TMPL_VAR id>"
 	    ><TMPL_VAR keyword> (<TMPL_VAR removed>/<TMPL_VAR count>)</option>
 	</TMPL_LOOP></select>
 	<button name="step" value="add">Add</button>
--- a/templates/inc/bkmarks.tmpl	Wed Dec 31 15:41:32 2008 -0500
+++ b/templates/inc/bkmarks.tmpl	Wed Dec 31 16:26:22 2008 -0500
@@ -2,7 +2,7 @@
   <TMPL_LOOP Bookmarks>
   <dt>
     <a href="<TMPL_VAR url>"><TMPL_VAR name></a>
-    <a href="?action=edit&id=<TMPL_VAR id>">edit</a>
+    <a href="?action=bookmark&step=edit&id=<TMPL_VAR id>">edit</a>
   </dt>
   <dd><p><TMPL_VAR desc></p></dd>
   </TMPL_LOOP>