#!/usr/bin/ruby
module Translator
#http://www.utexas.edu/learn/html/spchar.html
@@translate = { "ö" => "ö", "Ö" => "Ö",
"ü" => "ü", "Ü" => "Ü",
"ä" => "ä", "Ä" => "Ä",
"æ" => "æ", "Æ" => "Æ",
"ø" => "ø", "Ø" => "Ø",
"å" => "å", "Å" => "Å"}
@@mailtranslate = {"@" => ""}
def translate(text)
@@translate.each do |key, value|
text.gsub!(key, value)
end
text
end
def translate_mail(text)
text = translate(text)
@@mailtranslate.each do |key, value|
text.gsub!(key, value)
end
text
end
module_function :translate, :translate_mail
end
class MenuItem
attr_reader :name, :location, :selected, :menuitems
attr_writer :selected
def initialize(name, location, selected)
@name = name
@location = location
@selected = selected
@menuitems = []
end
def addMenuItem(menuitem)
@menuitems << menuitem
end
end
class Menu
attr_reader :menuitems
def initialize()
@menuitems = []
@labels = {}
end
def addMenuItem(label, name, location, selected)
menuitem = MenuItem.new(name, location, selected)
@menuitems << menuitem
@labels[label] = menuitem
menuitem
end
def getMenuitem(label)
@labels[label]
end
end
class Person
attr_reader :name, :title_en, :title_no, :image, :info
def initialize(name, title_en, title_no, image)
@name = name
@info = []
@title_en = title_en
@title_no = title_no
@image = image
end
def addInfo(type, value)
@info << [type, value]
end
end
class Topic
attr_reader :title, :items
def initialize(title)
@title = title
@items = []
end
def addItem(item)
@items << item
end
end
class SimpleItem
attr_reader :title, :description, :link, :image
def initialize(title, description, link = nil, image = nil)
@title = title
@description = description
@link = link
@image = image
end
end
class MemberPage
attr_reader :person, :title, :topics
def initialize(person)
@person = person
@title = "#{person.name} @ the UiB Dep. of Informatics"
@topics = []
end
# Support templating of member data.
def get_binding
binding
end
def addTopic(topic)
@topics << topic
end
end
class TemplatePage
def initialize(title, path, menu, content, owner = nil, trackfile = nil)
@title = title
@path = path
@menu = menu
@content = content
@owner = owner
@trackfile = trackfile
end
def get_binding
binding
end
end
class Path
attr_reader :path
def initialize(rootname, rootlink)
@path = []
@path << {"name" => rootname, "link" => rootlink}
end
def addPath(name, link)
@path << {"name" => name, "link" => link}
end
end
class PublicationPage
attr_reader :title, :year, :publications
def initialize(title)
@title = title
@publications = []
end
# Support templating of member data.
def get_binding
binding
end
def addPublications(publications)
@publications << publications
end
end
def defaultmenu
menu = Menu.new
menu.addMenuItem(:about, "about", "/vis/about/", false)
menu.addMenuItem(:team, "team & contact info", "/vis/team/", false)
#teamenu = menu.addMenuItem(:team, "team & contact info", "/vis/team/", true)
#teammenu = menu.getMenuitem(:team)
#teammenu.addMenuItem(MenuItem.new("Jean-Paul Balabanian", "/vis/team/balabanian/", true))
#teammenu.addMenuItem(MenuItem.new("Publications", "/vis/team/balabanian/", false))
menu.addMenuItem(:research, "research", "/vis/research/", false)
menu.addMenuItem(:publications, "publications", "/vis/publications/", false)
menu.addMenuItem(:projects, "projects", "/vis/projects/", false)
menu.addMenuItem(:teaching, "teaching", "/vis/teaching/", false)
menu.addMenuItem(:resources, "resources", "/vis/resources/", false)
menu.addMenuItem(:network, "network", "/vis/network/", false)
menu.addMenuItem(:events, "events", "/vis/events/", false)
menu.addMenuItem(:links, "links", "", false)
menu
end
def defaultpath
path = Path.new("Department of Informatics", "/")
path.addPath("Visualization Group", "/vis/")
path
end