1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
#!/usr/bin/ruby
require 'cgi'
require 'amrita/template'
require 'bmmodel'
include Amrita
DATAFILE_PATH="bookmark.dat"
TEMPLATE_PATH="bookmark.html"
CACHE_PATH="/tmp/bookmark"
class Item
include Amrita::ExpandByMember
def link
e(:a, :href=>@url) { @url }
end
end
def make_model_data(bm, selected_group)
groups = bm.groups.keys.sort
data = {
:groups => groups.collect do |k|
{
:group_name=>k,
:items=>bm.groups[k].collect do |item|
{
:name => item.name,
:link => e(:a, :href=>item.url) { item.url }
}
end
}
end ,
:form => {
:group_sel=>e(:select, :name=>"group_sel") {
groups.collect do |g|
if g == selected_group
e(:option, :value=>g, :selected=>"selected") { g }
else
e(:option, :value=>g) { g }
end
end
},
}
}
data
end
def generate_output(bm, group)
#Amrita::TemplateFileWithCache::set_cache_dir(CACHE_PATH)
tmpl = Amrita::TemplateFileWithCache[TEMPLATE_PATH]
tmpl.use_compiler = true
tmpl.expand($stdout, make_model_data(bm,group))
end
def main
bm = BookmarkList.new
bm.load_from_file(DATAFILE_PATH)
cgi = CGI.new
url = cgi['url'][0]
group = ""
if url
group = (cgi['group'][0]).to_s
group = (cgi['group_sel'][0]).to_s if group == ""
name = (cgi['title'][0]).to_s
name = url if name == ""
bm.add_new_item(group, name, url)
bm.save_to_file(DATAFILE_PATH)
end
puts cgi.header
generate_output(bm, group)
end
main
|