Cleanup of old code, fixes some errors with folders view and make it a
standard action.
--- a/.cvsignore Wed Dec 31 01:53:22 2008 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-*.pyc
-*.tmplc
-.htpasswd
--- a/TODO Wed Dec 31 01:53:22 2008 -0500
+++ b/TODO Wed Dec 31 15:41:32 2008 -0500
@@ -1,11 +1,10 @@
-* Add test unit.
+* Add more unit testing.
* Add licences notes to src files.
* Add synonymous support.
* Add "new keyword" enlighting, maybe with link to keyword editing.
* Add similar keywords suggestions. Otherly said: "Bookmarks which have
- X keywords also have this keywords. May be some frequency filter will
+ X keywords also have this keywords." May be some frequency filter will
be needed.
-* Selection based bookmarks editions.
* Used SQL sequence instead of the db_sequence table.
* Add CSS.
* Add Search capabilities.
@@ -19,3 +18,6 @@
* More user preferences.
* Clean up of all the code. This is a real mess currently!
* Optimization of some code part.
+* Add AJAX support.
+* Add cloud-like selection.
+* Add public/private field.
\ No newline at end of file
--- a/lib/.cvsignore Wed Dec 31 01:53:22 2008 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-*.pyc
-*.tmplc
--- a/lib/actions.py Wed Dec 31 01:53:22 2008 -0500
+++ b/lib/actions.py Wed Dec 31 15:41:32 2008 -0500
@@ -24,11 +24,11 @@
actions = ActionsLoader()
-actions['default'] = ('index', 'do_it')
actions['index'] = ('index', 'do_it')
-actions['edit'] = ('edit', 'do_it')
actions['import'] = ('imp_xbel', 'do_it')
-actions['add'] = ('add', 'do_it')
-actions['bookmark'] = ('add', 'do_it')
+actions['bookmark'] = ('bookmark', 'do_it')
actions['keywords'] = ('editkw', 'do_it')
actions['prefs'] = ('edit_prefs', 'do_it')
+actions['folder'] = ('folder', 'do_it')
+
+actions['default'] = actions['index']
--- a/lib/actions/add.py Wed Dec 31 01:53:22 2008 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-from templates import Template
-from bkmark import Bookmark
-from webutils import load_index
-from templates import Template
-from keywords import add_unique_keywords
-import os
-
-def get_bk_from_form(form):
- bk = Bookmark()
- bk.id = int(form['id'].value)
- bk.url = form['url'].value
- if form.has_key('name'):
- bk.name = form['name'].value
- if form.has_key('desc'):
- bk.desc = form['desc'].value
- return bk
-
-def get_kw_from_form(form):
- kw = form.getvalue("kw")
- if not isinstance(kw, type([])):
- if kw:
- kw = [kw]
- else:
- kw = []
- kw = map(int, kw)
- return kw
-
-def get_new_kw_from_form(form, sep =','):
- if form.has_key('newkw'):
- kw= map(lambda e: e.strip(),
- form['newkw'].value.split(','))
- return filter(lambda x: x != '', kw)
- else:
- return []
-
-def get_unique_keywords(form, db):
- kw = get_kw_from_form(form)
- kw = set(map(db.get_keyword, kw))
- return list(kw.union(get_new_kw_from_form(form)))
-
-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
- 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)
-
-def confirm(step, bk, kw, prefs):
- tmpl = Template("add_confirm.tmpl", prefs)
- confirmation = "Unknown!"
- if (step == 'delete'):
- confirmation = "Delete"
- elif (step == 'update'):
- confirmation = "Update"
- tmpl.set("confirmation", confirmation)
- tmpl.set("step", step)
- tmpl.set("id", bk.id)
- tmpl.set("name", bk.name)
- tmpl.set("url", bk.url)
- tmpl.set("Keywords", map(lambda x: {'keyword': x }, kw))
- tmpl.set("desc", bk.desc)
- print tmpl.process()
-
-def print_edit(id, keywords, title, url, prefs):
- tmpl = Template("add_bk.tmpl", prefs)
- tmpl.set('ctitle', title)
- tmpl.set('curl', url)
- tmpl.set('desc', '')
- tmpl.set('bkid', id)
- tmpl.set('Keywords', keywords)
- print tmpl.process()
-
-def update_bookmark(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())
-
-def do_it(action, db, prefs, form):
- if form.has_key('id'):
- id = int(form['id'].value)
- else:
- id = -1;
- if form.has_key('step'):
- step = form['step'].value
- else:
- step = 'edit'
- if step == 'edit':
- edit(db, prefs, form, id)
- elif step == 'confirm':
- update_bookmark(db, form)
- load_index(db, prefs, form, "result", "Bookmark update")
- elif step == 'cancel' or (action == 'delete' and id == -1):
- load_index(db, prefs, form, "err", "Operation cancel")
- else:
- if step == 'update':
- bk = get_bk_from_form(form)
- kw = get_unique_keywords(form, db)
- else:
- bk = db.get_bookmarks([id])[0]
- (ids, kw) = apply(zip,db.get_keywords([id]))
- kw = kw[1:]
- confirm(step, bk, kw, prefs)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/actions/bookmark.py Wed Dec 31 15:41:32 2008 -0500
@@ -0,0 +1,114 @@
+from templates import Template
+from bkmark import Bookmark
+from webutils import load_index
+from templates import Template
+from keywords import add_unique_keywords
+import os
+
+def get_bk_from_form(form):
+ bk = Bookmark()
+ bk.id = int(form['id'].value)
+ bk.url = form['url'].value
+ if form.has_key('name'):
+ bk.name = form['name'].value
+ if form.has_key('desc'):
+ bk.desc = form['desc'].value
+ return bk
+
+def get_kw_from_form(form):
+ kw = form.getvalue("kw")
+ if not isinstance(kw, type([])):
+ if kw:
+ kw = [kw]
+ else:
+ kw = []
+ kw = map(int, kw)
+ return kw
+
+def get_new_kw_from_form(form, sep =','):
+ if form.has_key('newkw'):
+ kw= map(lambda e: e.strip(),
+ form['newkw'].value.split(','))
+ return filter(lambda x: x != '', kw)
+ else:
+ return []
+
+def get_unique_keywords(form, db):
+ kw = get_kw_from_form(form)
+ kw = set(map(db.get_keyword, kw))
+ return list(kw.union(get_new_kw_from_form(form)))
+
+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
+ 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)
+
+def confirm(step, bk, kw, prefs):
+ tmpl = Template("add_confirm.tmpl", prefs)
+ confirmation = "Unknown!"
+ if (step == 'delete'):
+ confirmation = "Delete"
+ elif (step == 'update'):
+ confirmation = "Update"
+ tmpl.set("confirmation", confirmation)
+ tmpl.set("step", step)
+ tmpl.set("id", bk.id)
+ tmpl.set("name", bk.name)
+ tmpl.set("url", bk.url)
+ tmpl.set("Keywords", map(lambda x: {'keyword': x }, kw))
+ tmpl.set("desc", bk.desc)
+ print tmpl.process()
+
+def print_edit(id, keywords, title, url, prefs):
+ tmpl = Template("add_bk.tmpl", prefs)
+ tmpl.set('ctitle', title)
+ tmpl.set('curl', url)
+ tmpl.set('desc', '')
+ tmpl.set('bkid', id)
+ tmpl.set('Keywords', keywords)
+ print tmpl.process()
+
+def update_bookmark(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())
+
+def do_it(action, db, prefs, form):
+ if form.has_key('id'):
+ id = int(form['id'].value)
+ else:
+ id = -1;
+ if form.has_key('step'):
+ step = form['step'].value
+ else:
+ step = 'edit'
+ if step == 'edit':
+ edit(db, prefs, form, id)
+ elif step == 'confirm':
+ update_bookmark(db, form)
+ load_index(db, prefs, form, "result", "Bookmark update")
+ elif step == 'cancel' or (action == 'delete' and id == -1):
+ load_index(db, prefs, form, "err", "Operation cancel")
+ else:
+ if step == 'update':
+ bk = get_bk_from_form(form)
+ kw = get_unique_keywords(form, db)
+ else:
+ bk = db.get_bookmarks([id])[0]
+ (ids, kw) = apply(zip,db.get_keywords([id]))
+ kw = kw[1:]
+ confirm(step, bk, kw, prefs)
--- a/lib/actions/edit.py Wed Dec 31 01:53:22 2008 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#!/usr/bin/python
-
-from templates import Template
-
-def main(keywords, bk, prefs):
- tmpl = Template("add_bk.tmpl", prefs)
- tmpl.set('ctitle', bk.name)
- tmpl.set('curl', bk.url)
- tmpl.set('desc', bk.desc)
- tmpl.set('bkid', bk.id)
- tmpl.set('Keywords', keywords)
- print tmpl.process()
-
-def do_it(action, db, prefs, form):
- id = int(form["id"].value)
- bk = db.get_bookmarks([id])[0]
- kw = db.get_all_keywords()[1:]
- kw.sort(lambda l,r: cmp(l[1],r[1]))
- (ids, kws) = apply(zip,db.get_keywords([id]))
- kw = map(lambda elem: {
- 'id' : elem[0],
- 'keyword' : elem[1],
- 'selected' : elem[0] in ids }, kw)
- main(kw, bk, prefs)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/actions/folder.py Wed Dec 31 15:41:32 2008 -0500
@@ -0,0 +1,26 @@
+from templates import Template
+from folders import do_folders
+
+def add_folder(db, form):
+ keyword = int(form['selection'].value)
+ parent = 0
+ if (form.has_key('folder'):
+ parent = int(form['folder'].value)
+ db.add_folder(keyword, parent)
+
+def remove_folder(db, form):
+ keyword = int(form['selection'].value)
+ db.remove_folders(keyword)
+
+def do_it(action, db, prefs, form):
+ status = 'result'
+ status_msg = 'Unknown action'
+ if form.has_key('step'):
+ step = form['step'].value
+ if (step == 'add'):
+ add_folder(db, form)
+ status_msg = "Folder successfully added."
+ elif (step == 'delete'):
+ remove_folder(db, form)
+ status_msg = "Folder successfully removed."
+ do_folders(db, prefs, form, status, status_msg)
--- a/lib/create_db.sql Wed Dec 31 01:53:22 2008 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
---
-
-CREATE TABLE users (
- id int NOT NULL,
- name varchar(255) DEFAULT '' NOT NULL,
- full_name varchar(255) DEFAULT '',
- PRIMARY KEY (id)
-);
-
-CREATE INDEX index_users_name ON users(name);
-
-CREATE TABLE preferences (
- userid int NOT NULL,
- keywords_box int DEFAULT 5 not NULL,
- keywords_sort varchar(31) DEFAULT 'keyword' NOT NULL,
- keywords_reverse boolean DEFAULT FALSE NOT NULL,
- default_view int DEFAULT 0 not NULL,
- PRIMARY KEY (userid)
-);
-
---
--- Table structure for table 'bookmark'
---
-CREATE TABLE bookmarks (
- id int NOT NULL,
- userid int NOT NULL,
- url varchar(1023) DEFAULT '' NOT NULL,
- name varchar(1023) DEFAULT '' NOT NULL,
- ldesc varchar(1023) DEFAULT '' NOT NULL,
- added date DEFAULT '1998-01-01' NOT NULL,
- PRIMARY KEY (id, userid)
-);
-
-CREATE INDEX index_bookmarks_userid ON bookmarks(userid);
-
---
--- Table structure for table 'keywords'
---
-CREATE TABLE keywords (
- id int DEFAULT '0' NOT NULL,
- userid int DEFAULT '0' NOT NULL,
- name varchar(255) DEFAULT '' NOT NULL,
- PRIMARY KEY (id, userid)
-);
-
-CREATE INDEX index_keywords_name ON keywords(userid, name);
-
---
--- Cross reference table for linking keywords and bookmarks
---
-
-CREATE TABLE bookmarks_keywords (
- bookmark int NOT NULL,
- keyword int DEFAULT '0' NOT NULL,
- userid int DEFAULT '0' NOT NULL,
- PRIMARY KEY (bookmark, keyword, userid)
-);
-
-CREATE INDEX index_bkkw_kwuser ON bookmarks_keywords (keyword, userid);
-CREATE INDEX index_bkkw_user ON bookmarks_keywords (userid);
-CREATE INDEX index_bkkw_bkuser ON bookmarks_keywords (bookmark, userid);
-
---
--- Folders structure
---
-
-CREATE TABLE folders (
- id int DEFAULT '0' NOT NULL,
- userid int DEFAULT '0' NOT NULL,
- keyword int DEFAULT '0' NOT NULL,
- parent int DEFAULT '0' NOT NULL,
- PRIMARY KEY (id, userid)
-);
-
-CREATE INDEX index_folders_parent ON folders (userid, parent);
-
---
--- Table structure for table 'db_sequence'
---
-CREATE TABLE db_sequence (
- seq_name varchar(30) DEFAULT '' NOT NULL,
- userid int DEFAULT '0' NOT NULL,
- nextid int DEFAULT '0' NOT NULL,
- PRIMARY KEY (seq_name, userid)
-);
-
-INSERT INTO db_sequence (seq_name, userid, nextid) VALUES ('users' , -1, 0);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/db/create_db.sql Wed Dec 31 15:41:32 2008 -0500
@@ -0,0 +1,87 @@
+--
+
+CREATE TABLE users (
+ id int NOT NULL,
+ name varchar(255) DEFAULT '' NOT NULL,
+ full_name varchar(255) DEFAULT '',
+ PRIMARY KEY (id)
+);
+
+CREATE INDEX index_users_name ON users(name);
+
+CREATE TABLE preferences (
+ userid int NOT NULL,
+ keywords_box int DEFAULT 5 not NULL,
+ keywords_sort varchar(31) DEFAULT 'keyword' NOT NULL,
+ keywords_reverse boolean DEFAULT FALSE NOT NULL,
+ default_view int DEFAULT 0 not NULL,
+ PRIMARY KEY (userid)
+);
+
+--
+-- Table structure for table 'bookmark'
+--
+CREATE TABLE bookmarks (
+ id int NOT NULL,
+ userid int NOT NULL,
+ url varchar(1023) DEFAULT '' NOT NULL,
+ name varchar(1023) DEFAULT '' NOT NULL,
+ ldesc varchar(1023) DEFAULT '' NOT NULL,
+ added date DEFAULT '1998-01-01' NOT NULL,
+ PRIMARY KEY (id, userid)
+);
+
+CREATE INDEX index_bookmarks_userid ON bookmarks(userid);
+
+--
+-- Table structure for table 'keywords'
+--
+CREATE TABLE keywords (
+ id int DEFAULT '0' NOT NULL,
+ userid int DEFAULT '0' NOT NULL,
+ name varchar(255) DEFAULT '' NOT NULL,
+ PRIMARY KEY (id, userid)
+);
+
+CREATE INDEX index_keywords_name ON keywords(userid, name);
+
+--
+-- Cross reference table for linking keywords and bookmarks
+--
+
+CREATE TABLE bookmarks_keywords (
+ bookmark int NOT NULL,
+ keyword int DEFAULT '0' NOT NULL,
+ userid int DEFAULT '0' NOT NULL,
+ PRIMARY KEY (bookmark, keyword, userid)
+);
+
+CREATE INDEX index_bkkw_kwuser ON bookmarks_keywords (keyword, userid);
+CREATE INDEX index_bkkw_user ON bookmarks_keywords (userid);
+CREATE INDEX index_bkkw_bkuser ON bookmarks_keywords (bookmark, userid);
+
+--
+-- Folders structure
+--
+
+CREATE TABLE folders (
+ id int DEFAULT '0' NOT NULL,
+ userid int DEFAULT '0' NOT NULL,
+ keyword int DEFAULT '0' NOT NULL,
+ parent int DEFAULT '0' NOT NULL,
+ PRIMARY KEY (id, userid)
+);
+
+CREATE INDEX index_folders_parent ON folders (userid, parent);
+
+--
+-- Table structure for table 'db_sequence'
+--
+CREATE TABLE db_sequence (
+ seq_name varchar(30) DEFAULT '' NOT NULL,
+ userid int DEFAULT '0' NOT NULL,
+ nextid int DEFAULT '0' NOT NULL,
+ PRIMARY KEY (seq_name, userid)
+);
+
+INSERT INTO db_sequence (seq_name, userid, nextid) VALUES ('users' , -1, 0);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/db/db.schema Wed Dec 31 15:41:32 2008 -0500
@@ -0,0 +1,38 @@
+users
+ * id : int
+ + name : string
+ + full_name : string
+
+preferences
+ * userid : int
+ + keywords_box : int
+ + keywords_sort : string
+
+bookmarks
+ * id : int
+ * userid : int
+ + url : string
+ + name : string
+ + ldesc : string
+ + added : date
+
+keywords
+ * id: int
+ * userid : int
+ + name : string
+
+bookmarks_keywords
+ * bookmark : int
+ * keyword : int
+ * userid : int
+
+folders:
+ * id : int
+ * userid : int
+ + keyword : int
+ + parent : int
+
+db_sequence:
+ * seq_name : string
+ * userid : int
+ + nextid : int
\ No newline at end of file
--- a/lib/folders.py Wed Dec 31 01:53:22 2008 -0500
+++ b/lib/folders.py Wed Dec 31 15:41:32 2008 -0500
@@ -1,21 +1,5 @@
from templates import Template
from keywords import set_selection, sort_keywords
-from __future__ import nested_scopes
-
-def do_folder_action(db, form, folder):
- if form['action'].value == 'add':
- if form.has_key('sel'):
- keyword = int(form['sel'].value)
- db.add_folder(keyword, folder)
- print "<em>Folder successfully add.</em>"
- return keyword
- elif form['action'].value == 'delete':
- if form.has_key('delete'):
- keyword = int(form['delete'].value)
- db.remove_folders(keyword)
- print "<em>Folder successfully remove.</em>"
- return keyword
- return -1
def sort_kw_with_removed(l, r):
result = l['removed'] - r['removed']
@@ -39,11 +23,8 @@
def do_folders(db, prefs, form, status, status_msg):
folder = 0
- if form:
- if form.has_key('folder'):
- folder = int(form['folder'].value)
- if form.has_key('action'):
- do_folder_action(db, form, folder)
+ if form.has_key('folder'):
+ folder = int(form['folder'].value)
parents = db.get_folder_parents_and_self(folder)
parents.reverse()
children = db.get_subfolders(folder)
--- a/templates/add_bk.tmpl Wed Dec 31 01:53:22 2008 -0500
+++ b/templates/add_bk.tmpl Wed Dec 31 15:41:32 2008 -0500
@@ -3,7 +3,7 @@
<body>
<h1><TMPL_VAR remote_user>'s Edit Bookmark</h1>
<form action="" method="post" name="add">
- <input type="hidden" name="action" value="add"/>
+ <input type="hidden" name="action" value="bookmark"/>
<fieldset class="bookmark">
<input type="hidden" name="id" value="<TMPL_VAR bkid>"/>
<label>Nom: <input type="text" name="name"
--- a/templates/add_confirm.tmpl Wed Dec 31 01:53:22 2008 -0500
+++ b/templates/add_confirm.tmpl Wed Dec 31 15:41:32 2008 -0500
@@ -3,10 +3,10 @@
<TMPL_INCLUDE NAME="headers.tmpl">
<body>
<h1><TMPL_VAR remote_user>'s Confirmation</h1>
- <form name="confirmation" method="post" action="?action=add">
+ <form name="confirmation" method="post" action="">
<fieldset>
<legend>Bookmark</legend>
- <input type="hidden" name="action" value="add"/>
+ <input type="hidden" name="action" value="bookmark"/>
<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/edit_bk.tmpl Wed Dec 31 01:53:22 2008 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-<html>
- <TMPL_INCLUDE NAME="headers.tmpl">
- <body>
- <h1><TMPL_VAR remote_user>'s Edit Bookmark</h1>
- <form action="?action=bookmark" method="post" name="edit">
- <fieldset class="bookmark">
- <input type="hidden" name="action" value="bookmark"/>
- <input type="hidden" name="id" value="<TMPL_VAR bkid>"/>
- <label>Nom: <input type="text" name="name"
- value="<TMPL_VAR ctitle>"/></label><br/>
- <label>URL: <input type="text" name="url"
- value="<TMPL_VAR curl>"/></label><br/>
- <label for="desc">Description: </label><br/>
- <textarea name="desc" rows="5" cols="40"><TMPL_VAR desc></textarea>
- </fieldset>
- <fieldset class="keywords">
- <legend>Keywords:</legend>
- <label>Selected:
- <select multiple name="kw" size="<TMPL_VAR kw_size>">
- <TMPL_LOOP Keywords>
- <option value="<TMPL_VAR id>"
- <TMPL_IF selected>selected</TMPL_IF> />
- <TMPL_VAR keyword></option>
- </TMPL_LOOP>
- </select>
- <label>New keywords: <input type="text" name="newkw"> (comma
- separated list)</label><br/>
- <button type="reset">Reset</button>
- </fieldset>
- <button type="submit" name="step" value="update">Submit</button>
- <button type="submit" name="step" value="delete">Delete</button>
- <button type="submit" name="step" value="cancel">Cancel</button>
- </form>
- </body>
-</html>
-<!--
-vi: syntax=html
--->
--- a/templates/folders.tmpl Wed Dec 31 01:53:22 2008 -0500
+++ b/templates/folders.tmpl Wed Dec 31 15:41:32 2008 -0500
@@ -2,7 +2,7 @@
<html>
<TMPL_INCLUDE NAME="headers.tmpl">
<body>
- <TMPL_INCLUDE "top.tmpl">
+ <TMPL_INCLUDE NAME="top.tmpl">
<TMPL_IF folder>
<p>Parents:
<TMPL_LOOP Parents>
@@ -15,29 +15,31 @@
<h2><TMPL_IF folder><TMPL_VAR name><TMPL_ELSE>Main Folder</TMPL_IF>
(<TMPL_VAR subtotal>/<TMPL_VAR total>)</h2>
<DIV class="subfolders">
- <form action="?action=index&view=folder&folder=<TMPL_VAR folder>" method="post" name="edit_folders">
+ <form action="" method="post" name="edit_folders">
+ <input type="hidden" name="action" value="folder"/>
<input type="hidden" name="folder" value="<TMPL_VAR folder>"/>
<input type="hidden" name="view" value="folder"/>
- <input type="hidden" name="action" value="delete"/>
+ <input type="hidden" name="step" value="delete"/>
<ul>
<TMPL_LOOP Subfolders>
- <li><button name="delete" value="<TMPL_VAR id>">Delete</button>
+ <li><button name="selection" value="<TMPL_VAR id>">Delete</button>
<a href="?action=index&view=folder&folder=<TMPL_VAR id>"><TMPL_VAR name>
(<TMPL_VAR count>)</a></li>
</TMPL_LOOP>
</ul>
</form>
</div>
- <form action="?action=index&view=folder&folder=<TMPL_VAR folder>" method="post" name="add_folder">
+ <form action="" method="post" name="add_folder">
<label>Add subfolder with keyword:
+ <input type="hidden" name="action" value="folder"/>
+ <input type="hidden" name="view" value="folder"/>
<input type="hidden" name="folder" value="<TMPL_VAR folder>"/>
- <input type="hidden" name="view" value="folder"/>
<select name="sel" size="1">
<TMPL_LOOP Keywords>
- <option value="<TMPL_VAR id>"
+ <option name="selection" value="<TMPL_VAR id>"
><TMPL_VAR keyword> (<TMPL_VAR removed>/<TMPL_VAR count>)</option>
</TMPL_LOOP></select>
- <button name="action" value="add">Add</button>
+ <button name="step" value="add">Add</button>
</form>
<hr>
<TMPL_INCLUDE NAME="bkmarks.tmpl">